객체 Lambda 액세스 포인트에 대한 IAM 정책 구성
Amazon S3 액세스 포인트는 리소스, 사용자 또는 기타 조건별로 액세스 포인트 사용을 제어할 수 있는 AWS Identity and Access Management(IAM) 리소스 정책을 지원합니다. 단계별 예제는 자습서: S3 객체 Lambda를 사용하여 애플리케이션의 데이터 변환 및 자습서: S3 객체 Lambda 및 Amazon Comprehend를 사용하여 PII 데이터 감지 및 수정 단원을 참조하십시오.
단일 AWS 계정의 경우 다음 4개 리소스에 객체 Lambda 액세스 포인트로 작업할 수 있는 권한이 부여되어야 합니다.
-
IAM 사용자 또는 역할
-
버킷 및 연결된 표준 액세스 포인트
-
객체 Lambda 액세스 포인트
-
AWS Lambda 함수
정책을 저장하기 전에 AWS Identity and Access Management Access Analyzer의 보안 경고, 오류, 일반 경고 및 제안 사항을 해결해야 합니다. IAM Access Analyzer는 정책 확인은 실행하여 IAM 정책 문법 및 모범 사례에 대해 정책을 검증합니다. 이러한 확인은 결과를 생성하고 보안 모범 사례를 준수하고 작동하는 정책을 작성하는 데 도움이 되는 실행 가능한 권장 사항을 제공합니다. IAM 액세스 분석기를 사용한 정책 검증에 대한 자세한 내용은 IAM 사용 설명서의 IAM 액세스 분석기 정책 검증을 참조하세요. IAM Access Analyzer에서 반환된 경고, 오류 및 제안 사항 목록을 보려면 IAM Access Analyzer 정책 확인 참조를 참조하세요.
이 예제에서는 다음과 같은 리소스가 있다고 가정합니다.
-
Amazon S3 버킷에는 다음과 같은 Amazon S3 리소스 이름(ARN)이 포함되어 있습니다.
arn:aws:s3:::
DOC-EXAMPLE-BUCKET1
다음 S3 버킷 정책 예제는 버킷에 대한 액세스 제어를 버킷의 액세스 포인트에 위임합니다. 이 정책은 버킷 소유자의 계정이 소유한 모든 액세스 포인트에 대한 전체 액세스를 허용합니다. 따라서 이 버킷에 대한 모든 액세스는 해당 액세스 포인트에 연결된 정책에 의해 제어됩니다. 사용자는 S3 액세스 포인트를 통해서만 버킷에서 읽을 수 있으므로 액세스 포인트를 통해서만 작업이 호출될 수 있습니다. 자세한 정보는 액세스 포인트에 액세스 제어 위임을 참조하십시오.
예 - 액세스 포인트에 액세스 제어를 위임하는 버킷 정책
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS":"
account-ARN
"}, "Action" : "*", "Resource" : [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1
", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1
/*" ], "Condition": { "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID
" } } }] } -
다음 ARN이 있는 이 버킷의 Amazon S3 Standard 액세스 포인트
arn:aws:s3:
us-east-1
:111122223333
:accesspoint/my-access-point
-
다음 ARN이 있는 객체 Lambda 액세스 포인트:
arn:aws:s3-object-lambda:
us-east-1
:111122223333
:accesspoint/my-object-lambda-ap
-
다음 ARN을 사용하는 AWS Lambda 함수
arn:aws:lambda:
us-east-1
:111122223333
:function:MyObjectLambdaFunction
계정에서 Lambda 함수를 사용하는 경우 정책 설명에 함수 버전을 포함해야 합니다. 예: arn:aws:lambda:
us-east-1
:111122223333
:function:MyObjectLambdaFunction
:$LATEST
다음 IAM 정책은 사용자에게 Lambda 함수, 표준 액세스 포인트 및 S3 객체 Lambda 액세스 포인트에 대한 권한을 부여합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLambdaInvocation", "Action": [ "lambda:InvokeFunction" ], "Effect": "Allow", "Resource": "arn:aws:lambda:
us-east-1
:111122223333
:function:MyObjectLambdaFunction
:$LATEST", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "s3-object-lambda.amazonaws.com" ] } } }, { "Sid": "AllowStandardAccessPointAccess", "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:us-east-1
:111122223333
:accesspoint/my-access-point
/*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "s3-object-lambda.amazonaws.com" ] } } }, { "Sid": "AllowObjectLambdaAccess", "Action": [ "s3-object-lambda:Get*", "s3-object-lambda:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3-object-lambda:us-east-1
:111122223333
:accesspoint/my-object-lambda-ap
" } ] }
Lambda 실행 역할
Lambda 함수는 객체 Lambda 액세스 포인트에 요청이 있을 때 S3 객체 Lambda에 데이터를 보낼 수 있는 권한이 필요합니다. 이는 Lambda 함수의 실행 역할에 대한 s3-object-lambda:WriteGetObjectResponse
권한을 사용 설정하여 제공됩니다. 새로운 실행 역할을 생성하거나 기존 역할을 업데이트할 수 있습니다.
IAM 콘솔에서 실행 역할 생성
-
IAM 콘솔에서 역할(Roles)
페이지를 엽니다. -
역할 생성(Create role)을 선택합니다.
-
Common use cases(일반 사용 사례)에서 Lambda를 선택합니다.
-
Next: Permissions(다음: 권한)를 선택합니다.
-
권한 정책 연결(Attach permissions policies)에서 AWS 관리형 정책 AmazonS3ObjectLambdaExecutionRolePolicy
을 선택합니다. -
다음: 태그를 선택합니다.
-
다음: 검토(Next: Review)를 선택합니다.
-
[역할 이름(Role name)]에
s3-object-lambda-role
을 입력합니다. -
역할 생성(Create role)을 선택합니다.
-
새로 생성된
s3-object-lambda-role
을 Lambda 함수의 실행 역할로 적용합니다.
자세한 지침은 IAM 사용 설명서의 AWS 서비스에 대한 역할 생성(콘솔)을 참조하세요.
Lambda 함수의 실행 역할 업데이트
Lambda 함수에 사용되는 실행 역할에 다음 문을 추가합니다.
{ "Sid": "AllowObjectLambdaAccess", "Action": ["s3-object-lambda:WriteGetObjectResponse"], "Effect": "Allow", "Resource": "*" }
실행 역할에 대한 자세한 내용은 AWS Lambda 개발자 가이드의 Lambda 실행 역할을 참조하세요.
객체 Lambda 액세스 포인트에 컨텍스트 키 사용
S3 객체 Lambda를 사용하면 GET 요청이 자동으로 Lambda 함수를 호출하고 다른 모든 요청은 Amazon S3로 전달됩니다. S3 객체 Lambda는 요청의 연결 서명과 관련된 s3-object-lambda:TlsVersion
또는 s3-object-lambda:AuthType
과 같은 컨텍스트 키를 평가합니다.
s3:prefix
와 같은 다른 모든 컨텍스트 키는 Amazon S3에 의해 평가됩니다.