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

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

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

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

當應用程式或 AWS 服務 使用 GetDataAccess API 操作要求 S3 存取授與代表受權者存取 S3 資料時,S3 存取授權會首先驗證您是否已授與此資料的身分存取權。然後,S3 存取授權會使用 AssumeRoleAPI 作業取得臨時登入資料權杖,並將其分配給要求者。這個臨時憑證權杖是 AWS Security Token Service (AWS STS) 權杖。

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

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

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

授權範圍 請求範圍 權限 傳回範圍 Effect
S3://DOC-EXAMPLE-BUCKET1/bob/* DOC-EXAMPLE-BUCKET1/bob/* Default DOC-EXAMPLE-BUCKET1/bob/*

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

S3://DOC-EXAMPLE-BUCKET1/bob/* DOC-EXAMPLE-BUCKET1/bob/ Minimal DOC-EXAMPLE-BUCKET1/bob/

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

S3://DOC-EXAMPLE-BUCKET1/bob/* DOC-EXAMPLE-BUCKET1/bob/images/* Minimal DOC-EXAMPLE-BUCKET1/bob/images/*

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

S3://DOC-EXAMPLE-BUCKET1/bob/reports/* DOC-EXAMPLE-BUCKET1/bob/reports/file.txt Default DOC-EXAMPLE-BUCKET1/bob/reports/*

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

S3://DOC-EXAMPLE-BUCKET1/bob/reports/* DOC-EXAMPLE-BUCKET1/bob/reports/file.txt Minimal DOC-EXAMPLE-BUCKET1/bob/reports/file.txt

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

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

注意

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

如需詳細資訊,請參閱 Amazon 簡易儲存服務 API 參考GetDataAccess中的。

您可以使用 AWS Command Line Interface (AWS CLI)、Amazon S3 REST API 和 AWS 開發套件來請求臨時登入資料。

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

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

範例 請求臨時憑證

要求:

aws s3control get-data-access \ --account-id 111122223333 \ --target s3://DOC-EXAMPLE-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://DOC-EXAMPLE-BUCKET/prefixA**" }

如需從 S3 存取授權請求臨時登入資料的 Amazon S3 REST API 支援的相關資訊,請參閱 Amazon 簡單儲存服務 API 參考GetDataAccess中的。

本節提供受權者如何使用 AWS SDK 從 S3 存取授權請求臨時登入資料的範例。

Java

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

範例 取得臨時憑證

要求:

public void getDataAccess() { GetDataAccessRequest getDataAccessRequest = GetDataAccessRequest.builder() .accountId("111122223333") .permission(Permission.READ) .privilege(Privilege.MINIMAL) .target("s3://DOC-EXAMPLE-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 ))