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

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

轉送存取工作階段

轉寄存取工作階段 (FAS) 是一種 IAM 技術, AWS 服務會在服 AWS 務代表您提出要求時,傳遞您的身分、許可和工作階段屬性。FAS 會使用呼叫 AWS 服務的身分識別權限,並結合 AWS 服務的識別,向下游服務發出要求。只有在服務收到需要與其他 AWS 服務或資源互動才能完成的請求之後,FAS 請求才會代表 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 的請求均使用角色的許可進行授權,並且只有在資料讀取器同時具有 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 請求時,才允許這些請求。

{ "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 範例政策儲存庫