透過 S3 Access Grants 請求存取 Amazon S3 資料 - Amazon Simple Storage Service

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

透過 S3 Access Grants 請求存取 Amazon S3 資料

在您使用 Amazon S3 Access Grants 建立授予 (Word) 主體、您的公司目錄身分或授權應用程式存取 S3 資料的存取授予之後,您的受讓者可以請求憑證來存取此資料。 AWS Identity and Access Management IAM S3

當應用程式或使用 AWS 服務 API GetDataAccess 操作請求 S3 Access Grants 代表承授者存取您的 S3 資料時,S3 Access Grants 會先驗證您已授予資料的此身分存取權。然後,S3 Access Grants 使用 AssumeRole 用來取得臨時憑證字符的 API 操作,並將其轉譯給請求者。這個臨時憑證權杖是 AWS Security Token Service (AWS STS) 權杖。

GetDataAccess 請求必須包含 target 參數,用來指定臨時憑證套用的 S3 資料範圍。此 target 範圍可與授權範圍相同,也可以是該範圍的子集,但 target 範圍必須在授予請求者的授權範圍內。請求也必須指定 permission 參數,以指出臨時憑證的許可層級,也就是 READWRITEREADWRITE

請求者可以在其憑證請求中指定臨時權杖的許可層級。請求者可以使用 privilege 參數,在授權範圍內縮小或加大臨時憑證的存取範圍。privilege 參數的預設值為 Default,這表示所傳回憑證的目標範圍是原始授權範圍。privilege 的另一個可能的值為 Minimal。如果 target 範圍比原始授權範圍小,則臨時憑證的範圍也會縮小,以符合 target 範圍,前提是 target 範圍在授權範圍內。

下表詳細說明 privilege 參數對兩個授權的影響。一個授權的範圍是 S3://amzn-s3-demo-bucket1/bob/*,包括 amzn-s3-demo-bucket1 儲存貯體中的整個 bob/ 字首。另一個授權的範圍是 S3://amzn-s3-demo-bucket1/bob/reports/*,只包括 amzn-s3-demo-bucket1 儲存貯體中的 bob/reports/ 字首。

授權範圍 請求範圍 權限 傳回範圍 Effect
S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/* Default amzn-s3-demo-bucket1/bob/*

請求者可以存取 amzn-s3-demo-bucket1 儲存貯體中,具有以字首 bob/ 開頭的索引鍵名稱的所有物件。

S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/ Minimal amzn-s3-demo-bucket1/bob/

若字首名稱 bob/ 後沒有萬用字元 *,則請求者只能存取 amzn-s3-demo-bucket1 儲存貯體中名為 bob/ 的物件。這類物件並不常見。請求者無法存取任何其他物件,包括具有以 bob/ 字首開頭的索引鍵名稱的物件。

S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/images/* Minimal amzn-s3-demo-bucket1/bob/images/*

請求者可以存取 amzn-s3-demo-bucket1 儲存貯體中,具有以字首 bob/images/* 開頭的索引鍵名稱的所有物件。

S3://amzn-s3-demo-bucket1/bob/reports/* amzn-s3-demo-bucket1/bob/reports/file.txt Default amzn-s3-demo-bucket1/bob/reports/*

請求者可以存取 amzn-s3-demo-bucket1 儲存貯體中,具有以 bob/reports 字首開頭的索引鍵名稱的所有物件,這是相符授權的範圍。

S3://amzn-s3-demo-bucket1/bob/reports/* amzn-s3-demo-bucket1/bob/reports/file.txt Minimal amzn-s3-demo-bucket1/bob/reports/file.txt

請求者只能存取 amzn-s3-demo-bucket1 儲存貯體中具有索引鍵名稱 bob/reports/file.txt 的物件。請求者無法存取任何其他物件。

durationSeconds 參數會設定臨時憑證的持續時間 (以秒為單位)。預設值為 3600 秒 (1 小時),但請求者 (承授者) 可以指定從 900 秒 (15 分鐘) 到最長 43200 秒 (12 小時) 的範圍。若承授者請求的值高於此上限,則請求會失敗。

注意

在您的臨時權杖請求中,如果位置是物件,請將您請求中的 targetType 參數值設定為 Object。只有在位置是物件且權限層級為 Minimal 時,才需要此參數。若位置是儲存貯體或字首,則不需要指定此參數。

如需詳細資訊,請參閱 Amazon Simple Storage Service GetDataAccess 參考中的 Word。 API

您可以使用 AWS Command Line Interface (AWS CLI)API、Amazon S3 REST 和 AWS SDKs 來請求臨時憑證。

若要安裝 AWS CLI,請參閱 AWS Command Line Interface 使用者指南中的安裝 AWS CLI

若要使用下列範例命令,請以您自己的資訊取代 user input placeholders

範例 請求臨時憑證

要求:

aws s3control get-data-access \ --account-id 111122223333 \ --target s3://amzn-s3-demo-bucket/prefixA* \ --permission READ \ --privilege Default \ --region us-east-2

回應:

{ "Credentials": { "AccessKeyId": "Example-key-id", "SecretAccessKey": "Example-access-key", "SessionToken": "Example-session-token", "Expiration": "2023-06-14T18:56:45+00:00"}, "MatchedGrantTarget": "s3://amzn-s3-demo-bucket/prefixA**" }

如需從 Amazon S3 Access Grants 請求臨時憑證的 Amazon S3 REST API支援相關資訊,請參閱 Amazon Simple Storage Service GetDataAccess 參考中的 Word。 API

本節提供受讓者如何使用 AWS SDKs 向 S3 Access Grants 請求臨時憑證的範例。

Java

下列程式碼範例會傳回承授者用來存取 S3 資料的臨時憑證。若要使用此程式碼範例,請將 user input placeholders 取代為您自己的資訊。

範例 取得臨時憑證

要求:

public void getDataAccess() { GetDataAccessRequest getDataAccessRequest = GetDataAccessRequest.builder() .accountId("111122223333") .permission(Permission.READ) .privilege(Privilege.MINIMAL) .target("s3://amzn-s3-demo-bucket/prefixA*") .build(); GetDataAccessResponse getDataAccessResponse = s3Control.getDataAccess(getDataAccessRequest); LOGGER.info("GetDataAccessResponse: " + getDataAccessResponse); }

回應:

GetDataAccessResponse( Credentials=Credentials( AccessKeyId="Example-access-key-id", SecretAccessKey="Example-secret-access-key", SessionToken="Example-session-token", Expiration=2023-06-07T06:55:24Z ))