실행 역할로 Lambda 함수 권한 정의 - AWS Lambda

실행 역할로 Lambda 함수 권한 정의

Lambda 함수의 실행 역할은 AWS 서비스 및 리소스에 액세스할 수 있는 권한을 함수에 부여하는 AWS Identity and Access Management(IAM) 역할입니다. Amazon CloudWatch에 로그를 전송하고, AWS X-Ray에 추적 데이터를 업로드하는 권한을 가진 실행 역할을 만들 수 있습니다. 이 페이지에서는 Lambda 함수의 실행 역할을 생성하고 보고 관리하는 방법에 대한 정보를 제공합니다.

자신의 함수를 호출하면 Lambda는 자동으로 실행 역할을 맡습니다. 함수 코드에서 실행 역할을 수임하기 위해 수동으로 sts:AssumeRole을 직접 호출하는 것을 피해야 합니다. 사용 사례에서 역할을 맡아야 하는 경우 자신의 역할의 신뢰 정책에, 역할 자체를 신뢰할 수 있는 보안 주체로 포함해야 합니다. 역할 신뢰 정책을 수정하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 역할 신뢰 정책 수정(콘솔)을 참조하세요.

Lambda가 실행 역할을 제대로 수임하려면 역할의 신뢰 정책에서 Lambda 서비스 주체(lambda.amazonaws.com)를 신뢰할 수 있는 서비스로 지정해야 합니다.

IAM 콘솔에서 실행 역할 생성

기본적으로 Lambda는 Lambda 콘솔에서 함수를 생성할 때 최소한의 권한으로 실행 역할을 생성합니다. 특히 이 실행 역할에는 함수에 Amazon CloudWatch Logs에 이벤트를 기록할 수 있는 기본 권한을 부여하는 AWSLambdaBasicExecutionRole 관리형 정책이 포함되어 있습니다.

함수에서 보다 의미 있는 작업을 수행하려면 일반적으로 추가 권한이 필요합니다. 예를 들어 Amazon DynamoDB 데이터베이스의 항목을 업데이트하여 이벤트에 응답하는 Lambda 함수가 있을 수 있습니다. IAM 콘솔을 사용하여 필요한 권한이 있는 실행 역할을 생성할 수 있습니다.

IAM 콘솔에서 실행 역할을 생성하려면
  1. IAM 콘솔에서 역할(Roles) 페이지를 엽니다.

  2. 역할 생성을 선택합니다.

  3. 신뢰할 수 있는 엔터티 유형에서 AWS 서비스를 선택합니다.

  4. 사용 사례에서 Lambda를 선택합니다.

  5. Next(다음)를 선택합니다.

  6. 역할에 연결할 AWS 관리형 정책을 선택합니다. 예를 들어 함수가 DynamoDB에 액세스해야 하는 경우 AWSLambdaDynamoDBExecutionRole 관리형 정책을 선택하세요.

  7. Next(다음)를 선택합니다.

  8. Role name을 입력하고 Create role을 선택합니다.

자세한 지침은 IAM 사용 설명서AWS 서비스에 대한 역할 생성(콘솔)을 참조하세요.

실행 역할을 생성한 후 함수에 연결합니다. Lambda 콘솔에서 함수를 생성할 때 이전에 생성한 모든 실행 역할을 함수에 연결할 수 있습니다. 기존 함수에 새 실행 역할을 연결하려면 해당 단계를 따르세요.

AWS CLI로 사용하여 역할 생성 및 관리

AWS Command Line Interface(AWS CLI)를 사용하여 실행 역할을 생성하려면 create-role 명령을 사용합니다. 이 명령을 사용할 때는 신뢰 정책 인라인을 지정할 수 있습니다. 역할의 신뢰 정책은 지정된 보안 주체에게 역할을 맡을 수 있는 권한을 부여합니다. 다음 예에서는 Lambda 서비스 보안 주체에게 자신의 역할을 맡을 권한을 부여합니다. JSON 문자열의 이스케이프 따옴표 요구 사항은 셸에 따라 다릅니다.

aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'

별도의 JSON 파일을 사용하여 역할에 대한 신뢰 정책을 정의할 수도 있습니다. 다음 예제에서 trust-policy.json은 최신 디렉터리의 파일입니다.

예 trust-policy.json
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
aws iam create-role --role-name lambda-ex --assume-role-policy-document file://trust-policy.json

다음 결과가 표시됩니다.

{ "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }

역할에 권한을 추가하려면 attach-policy-to-role 명령을 사용하세요. 다음 명령은 AWSLambdaBasicExecutionRole 관리형 정책을 lambda-ex 실행 역할에 추가합니다.

aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

실행 역할을 생성한 후 함수에 연결합니다. Lambda 콘솔에서 함수를 생성할 때 이전에 생성한 모든 실행 역할을 함수에 연결할 수 있습니다. 기존 함수에 새 실행 역할을 연결하려면 해당 단계를 따르세요.

Lambda 실행 역할에 최소 권한 액세스 부여

개발 단계 중에 Lambda에 대한 IAM 역할을 처음 생성하는 경우 간혹 필요 이상의 권한을 부여하게 될 수 있습니다. 모범 사례로 프로덕션 환경에 함수를 게시하기 전에 필요한 권한만 포함하도록 정책을 조정하는 것이 가장 좋습니다. 자세한 정보는 IAM 사용 설명서최소 권한 적용을 참조하세요.

IAM Access Analyzer를 사용하면 IAM 실행 역할 정책에 필요한 권한을 식별하는 데 도움이 될 수 있습니다. IAM Access Analyzer는 지정한 날짜 범위에 걸친 AWS CloudTrail 로그를 검토하여 해당 기간 동안 함수가 사용했던 권한만을 포함한 정책 템플릿을 생성합니다. 템플릿을 사용하여 세분화된 권한을 가진 관리형 정책을 생성한 다음 IAM 역할에 연결할 수 있습니다. 이렇게 하면 특정 사용 사례에 따라 역할이 AWS 리소스와 상호 작용하는 데 필요한 권한만 부여할 수 있습니다.

자세한 내용은 IAM 사용 설명서에서 액세스 활동을 기반으로 정책 생성을 참조하세요.