전달 액세스 세션
FAS(전달 액세스 세션)는 AWS 서비스가 사용자를 대신하여 요청할 때 ID, 권한 및 세션 속성을 전달하는 데 사용하기 위해 AWS 서비스에서 사용하는 IAM 기술입니다. FAS는 AWS 서비스를 직접적으로 호출하는 ID의 권한을 AWS 서비스의 ID와 결합하여 사용해 다운스트림 서비스에 대한 요청을 수행합니다. FAS 요청은 서비스에서 완료를 위해 다른 AWS 서비스 또는 리소스와의 상호 작용이 필요한 요청을 받은 이후 IAM 보안 주체를 대신하여 AWS 서비스에 이루어집니다. FAS 요청이 이루어진 경우:
-
IAM 보안 주체로부터 최초 요청을 받는 서비스는 IAM 보안 주체의 권한을 확인합니다.
-
후속 FAS 요청을 받는 서비스는 동일한 IAM 보안 주체의 권한도 확인합니다.
예를 들어, SSE-KMS를 사용하여 암호화되었을 때 Amazon S3에서 객체 암호 해독을 위해 AWS Key Management Service 직접 호출 시 FAS가 사용됩니다. SSE-KMS 암호화 객체를 다운로드할 때 data-reader라는 역할은 Amazon S3에 대해 객체에서 GetObject를 직접 호출하고, AWS KMS를 직접 호출하지는 않습니다. GetObject 요청을 수신하고 data-reader를 승인한 후 Amazon S3는 Amazon S3 객체의 암호를 해독하기 위해 AWS KMS에 FAS 요청을 보냅니다. KMS가 FAS 요청을 받으면 역할의 권한을 확인하고 data-reader에 KMS 키에 대한 올바른 권한을 가진 경우에만 암호 해독 요청을 승인합니다. Amazon S3와 AWS KMS 모두에 대한 요청은 역할의 권한을 사용하여 승인되고, data-reader가 Amazon S3 객체와 AWS KMS 키 모두에 대한 권한을 보유한 경우에만 성공합니다.
참고
FAS 요청을 받은 서비스에 의해 추가 FAS 요청이 이루어질 수 있습니다. 이 경우 요청 보안 주체에 FAS에서 호출한 모든 서비스에 대한 권한이 있어야 합니다.
FAS 요청 및 IAM 정책 조건
FAS 요청이 이루어졌을 때 aws:CalledVia, aws:CalledViaFirst 및 aws:CalledViaLast 조건 키는 FAS 직접 호출을 시작한 서비스의 서비스 보안 주체로 채워집니다. aws:ViaAWSService 조건 키 값은 FAS 요청이 이루어질 때마다 true
로 설정됩니다. 다음 다이어그램에서 CloudFormation에 대한 요청에는 직접적으로 aws:CalledVia
또는 aws:ViaAWSService
조건 키가 설정되어 있지 않습니다. CloudFormation 및 DynamoDB에서 역할을 대신하여 다운스트림 FAS 요청을 보내면 이러한 조건 키의 값이 채워집니다.
조건 키 테스트 소스 IP 주소 또는 소스 VPC가 포함된 거부 정책 설명에 의해 FAS 요청이 거부될 때 FAS 요청을 허용하려면 조건 키를 사용하여 거부 정책에서 FAS 요청에 예외를 제공해야 합니다. 이는 aws:ViaAWSService
조건 키를 사용하여 모든 FAS 요청에 대해 가능합니다. 특정 AWS 서비스에서만 FAS 요청을 허용하려면 aws:CalledVia
를 사용합니다.
중요
VPC 엔드포인트를 통해 최초 요청이 이루어진 후 FAS 요청이 이루어지면 최초 요청의 aws:SourceVpce
, aws:SourceVpc
, aws:VpcSourceIp
에 대한 조건 키 값은 FAS 요청에서 사용되지 않습니다. aws:VPCSourceIP
또는 aws:SourceVPCE
를 사용하여 조건부 액세스 권한을 부여하는 정책을 작성할 때 aws:ViaAWSService
또는 aws:CalledVia
를 사용하여 FAS 요청도 허용해야 합니다. 퍼블릭 AWS 서비스 엔드포인트에서 최초 요청을 수신한 후 FAS 요청이 이루어지면 후속 FAS 요청은 동일한 aws:SourceIP
조건 키 값으로 이루어집니다.
예: VPC에서 또는 FAS를 사용하여 Amazon S3 액세스 허용
다음 IAM 정책 예시에서 Amazon S3 GetObject 및 Athena 요청은 example_vpc
에 연결된 VPC 엔드포인트에서 시작되거나 Athena에서 이루어진 FAS 요청인 경우에만 허용됩니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "OnlyAllowMyIPs", "Effect": "Allow", "Action": [ "s3:GetObject*", "athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StopQueryExecution", "athena:GetQueryExecution" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVPC": [ "
example_vpc
" ] } } }, { "Sid": "OnlyAllowFAS", "Effect": "Allow", "Action": [ "s3:GetObject*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "athena.amazonaws.com" } } } ] }
조건 키를 사용하여 FAS 액세스를 허용하는 추가 예시는 데이터 경계 예시 정책 리포지토리