AWS Lambda에서 권한 관리
AWS Lambda에서 AWS Identity and Access Management(IAM)를 사용하여 권한을 관리합니다. Lambda 함수 작업 시 고려해야 할 두 가지 주요 권한 범주가 있습니다.
-
Lambda 함수가 API 작업을 수행하고 다른 AWS 리소스에 액세스하는 데 필요한 권한입니다.
-
다른 AWS 사용자 및 엔터티가 Lambda 함수에 액세스하는 데 필요한 권한. 자세한 내용은 다른 AWS 엔터티에 Lambda 함수에 대한 액세스 권한 부여 섹션을 참조하세요.
Lambda 함수는 종종 다른 AWS 리소스에 액세스하고 해당 리소스에 대해 다양한 API 작업을 수행해야 합니다. 예를 들어 Amazon DynamoDB 데이터베이스의 항목을 업데이트하여 이벤트에 응답하는 Lambda 함수가 있을 수 있습니다. 이 경우 데이터베이스에 액세스할 수 있는 권한과 해당 데이터베이스에 항목을 추가하거나 업데이트할 수 있는 권한이 함수에 필요합니다.
실행 역할이라는 특수 IAM 역할에서 Lambda 함수에 필요한 권한을 정의합니다. 이 역할에서는 함수가 다른 AWS 리소스에 액세스하고 이벤트 소스에서 읽는 데 필요한 모든 권한을 정의하는 정책을 연결할 수 있습니다. 모든 Lambda 함수에는 실행 역할이 있어야 합니다. Lambda 함수는 기본적으로 CloudWatch Logs에 기록되므로 실행 역할에 최소한 Amazon CloudWatch에 대한 액세스 권한이 있어야 합니다. AWSLambdaBasicExecutionRole 관리형 정책을 실행 역할에 연결하여 이 요구 사항을 충족할 수 있습니다.
Lambda 리소스에 액세스할 수 있는 권한을 다른 AWS 계정, 조직 및 서비스에 부여하려는 경우, 다음과 같은 몇 가지 옵션이 있습니다.
-
ID 기반 정책을 사용하여 다른 사용자에게 Lambda 리소스에 대한 액세스 권한을 부여할 수 있습니다. 자격 증명 기반 정책은 사용자에게 직접 적용하거나, 사용자와 연결된 그룹 및 역할에 적용할 수 있습니다.
-
리소스 기반 정책을 사용하여 다른 계정과 AWS 서비스에 Lambda 리소스를 사용할 권한을 부여할 수 있습니다. 사용자가 Lambda 리소스에 액세스하려고 하면 Lambda는 사용자의 자격 증명 기반 정책 및 리소스의 리소스 기반 정책을 모두 고려합니다. Amazon Simple Storage Service(Amazon S3) 같은 AWS 서비스가 Lambda 함수를 호출하면 Lambda는 리소스 기반 정책만 고려합니다.
-
ABAC(속성 기반 액세스 제어) 모델을 사용하여 Lambda 함수에 대한 액세스를 제어할 수 있습니다. ABAC를 사용하면 태그를 Lambda 함수에 연결하거나, 특정 API 요청에 전달하거나, 요청을 하는 IAM 위탁자에 연결할 수 있습니다. 함수 액세스를 제어하려면 IAM 정책의 조건 요소에 동일한 태그를 지정하세요.
AWS에서는 작업을 수행하는 데 필요한 권한(least-privilege permissions)만 부여하는 것이 모범 사례입니다. 이를 Lambda에서 구현하려면 AWS 관리형 정책으로 시작하는 것이 좋습니다. 이러한 관리형 정책을 그대로 사용하거나, 이를 바탕으로 보다 제한적인 정책을 직접 만드는 시작점으로 활용할 수 있습니다.
최소 권한 액세스에 대한 권한을 미세 조정할 수 있도록 Lambda는 정책에 포함할 수 있는 몇 가지 추가 조건을 제공합니다. 자세한 내용은 정책의 리소스 및 조건 섹션 미세 조정 섹션을 참조하세요.
IAM에 대한 자세한 내용은 IAM 사용 설명서를 참조하세요.