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