轉送存取工作階段 - AWS Identity and Access Management

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

轉送存取工作階段

轉送存取工作階段 (FAS) 是一種 AWS IAM 技術,服務會在 AWS 服務代表您提出請求時,用來傳遞您的身分、許可和工作階段屬性。FAS 使用呼叫 AWS 服務的身分許可,結合 AWS 服務的身分,向下游服務提出請求。FAS 請求只有在服務收到需要與其他 AWS 服務或資源互動才能完成的請求後,才會代表 IAM 主體對 AWS 服務提出。發出 FAS 請求時:

  • 從 IAM 主體接收初始請求的服務會檢查 IAM 主體的許可。

  • 接收後續 FAS 請求的服務也會檢查相同 IAM 主體的許可。

例如,當 SSE-KMS 用於加密物件時,Amazon S3 會使用 FAS 呼叫 來 AWS Key Management Service 解密物件。下載 SSE-KMS 加密物件時,名為資料讀取器的角色會針對 Amazon S3 呼叫物件上的 GetObject,而不會 AWS KMS 直接呼叫 。收到 GetObject 請求並授權資料讀取器後,Amazon S3 會向 發出 FAS 請求, AWS KMS 以解密 Amazon S3 物件。當 KMS 收到 FAS 請求時,其會檢查角色的許可,並且只有在 data-reader 具有 KMS 金鑰的正確許可時才授權解密請求。對 Amazon S3 和 的請求會使用角色的許可進行 AWS KMS 授權,而且只有在資料讀取器同時具有 Amazon S3 物件和 AWS KMS 金鑰的許可時,才會成功。

IAM 角色作為主體傳遞至 Amazon S3,然後傳遞至 AWS KMS的流程圖。
注意

收到 FAS 請求的服務可以發出其他 FAS 請求。在這種情況下,請求主體必須具有 FAS 呼叫之所有服務的許可。

FAS 請求和 IAM 政策條件

發出 FAS 請求時,aws:CalledViaaws:CalledViaFirstaws:CalledViaLast 條件索引鍵會填入啟動 FAS 呼叫之服務的服務主體。每當發出 FAS 請求時,都會將 aws:ViaAWSService 條件索引鍵值設定為 true。在下圖中,直接向 CloudFormation 發出的請求沒有設定任何 aws:CalledViaaws:ViaAWSService 條件索引鍵。當 CloudFormation 和 DynamoDB 代表角色發出下游 FAS 請求時,便會填入這些條件索引鍵的值。

將 IAM 角色作為主體傳遞至 CloudFormation,然後將條件索引鍵值傳遞至 DynamoDB 和 AWS KMS的流程圖。

若要允許發出 FAS 請求,以免遭具有測試來源 IP 地址或來源 VPC 之條件索引鍵的拒絕政策陳述式拒絕,您必須在您的拒絕政策中使用條件索引鍵,為 FAS 請求提供例外狀況。這可以透過使用 aws:ViaAWSService 條件索引鍵,為所有 FAS 請求完成此操作。若要僅允許特定 AWS 服務提出 FAS 請求,請使用 aws:CalledVia

重要

當透過 VPC 端點發出初始請求後發出 FAS 請求時,不會在 FAS 請求中使用來自初始請求中 aws:SourceVpceaws:SourceVpcaws:VpcSourceIp 的條件索引鍵值。當寫入政策使用 aws:VPCSourceIPaws:SourceVPCE 有條件地授予存取權時,您也必須使用 aws:ViaAWSServiceaws:CalledVia 以允許 FAS 請求。當公有 AWS 服務端點收到初始請求後提出 FAS 請求時,後續的 FAS 請求將使用相同的aws:SourceIP條件索引鍵值提出。

範例:允許從 VPC 或使用 FAS 存取 Amazon S3

在以下 IAM 政策範例中,只有當 Amazon S3 GetObject 和 Athena 請求來自連接至 example_vpc 的 VPC 端點,或者請求是 Athena 發出的 FAS 請求時,才允許這些請求。

JSON
{ "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 存取的其他範例,請參閱 data perimeter 範例政策儲存庫