AWS Lambda에서 권한 관리
AWS Lambda에서 AWS Identity and Access Management(IAM)를 사용하여 권한을 관리합니다. Lambda 함수 작업 시 고려해야 할 두 가지 주요 권한 범주가 있습니다.
-
Lambda 함수가 API 작업을 수행하고 다른 AWS 리소스에 액세스하는 데 필요한 권한입니다.
-
다른 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 사용 설명서를 참조하세요.