本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
轉送存取工作階段
轉寄存取工作階段 (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 金鑰的許可時,才會成功。
注意
收到 FAS 請求的服務可以發出其他 FAS 請求。在這種情況下,請求主體必須具有 FAS 呼叫之所有服務的許可。
FAS 請求和 IAM 政策條件
發出 FAS 請求時,aws:CalledVia、aws:CalledViaFirst 和 aws:CalledViaLast 條件索引鍵會填入啟動 FAS 呼叫之服務的服務主體。每當發出 FAS 請求時,都會將 aws:ViaAWSService 條件索引鍵值設定為 true
。在下圖中, CloudFormation 直接請求沒有設置任何aws:CalledVia
或aws:ViaAWSService
條件鍵。當 CloudFormation 和 DynamoDB 代表角色提出下游 FAS 請求時,會填入這些條件索引鍵的值。
若要允許發出 FAS 請求,以免遭具有測試來源 IP 地址或來源 VPC 之條件索引鍵的拒絕政策陳述式拒絕,您必須在您的拒絕政策中使用條件索引鍵,為 FAS 請求提供例外狀況。這可以透過使用 aws:ViaAWSService
條件索引鍵,為所有 FAS 請求完成此操作。若要僅允許特定 AWS 服務提出 FAS 要求,請使用aws:CalledVia
。
重要
當透過 VPC 端點發出初始請求後發出 FAS 請求時,不會在 FAS 請求中使用來自初始請求中 aws:SourceVpce
、aws:SourceVpc
和 aws:VpcSourceIp
的條件索引鍵值。當寫入政策使用 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 存取的其他範例,請參閱 data perimeter 範例政策儲存庫