建立授權 - Amazon Simple Storage Service

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

建立授權

S3 存取授與執行個體中的個別存取權授與允許特定身分 — AWS Identity and Access Management (IAM) 主體,或公司目錄中的使用者或群組 — 在 S3 Access Grants 執行個體註冊的位置內取得存取權。位置會將值區或字首對應至IAM角色。S3 存取授權假設此IAM角色將臨時登入資料分配給受權者。

在 S3 存取授與執行個體中註冊至少一個位置後,您可以建立存取授與。

受權者可以是IAM使用者或角色,也可以是目錄使用者或群組。目錄使用者是您與 S3 Access Grants 執行個體相關聯的公司目錄或外部身分識別來源的使用者。如需詳細資訊,請參閱S3 Access Grants 和公司目錄身分。若要從 IAM Identity Center 為特定目錄使用者或群組建立授權,請尋找IAM身分識別中心用來識別該使用者的授權,例如,a1b2c3d4-5678-90ab-cdef-EXAMPLE11111。GUID IAM如需如何使用 IAM Identity Center 檢視使用者資訊的相關資訊,請參閱在 AWS IAM Identity Center 用戶指南

您可以授與值區、前置詞或物件的存取權。Amazon S3 中的字首是物件索引鍵名稱開頭的一串字元,用於組織儲存貯體中的物件。這可以是任何允許的字元字串,例如值區中以前置字元開頭的物件金鑰名engineering/稱。

子字首

授與已註冊位置的存取權時,您可以使用Subprefix欄位來縮小位置範圍子集的存取範圍。如果您為授權選擇的註冊位置是預設 S3 路徑 (s3://),則必須縮小授權範圍。您無法針對預設位置 (s3://) 建立存取權授與,這會提供受權者存取每個值區的存取權 AWS 區域。 相反地,您必須將授權範圍縮小為下列其中一項:

  • 一桶:s3://bucket/*

  • 值區內的前綴:s3://bucket/prefix*

  • 前綴中的前綴:s3://bucket/prefixA/prefixB*

  • 一個對象:s3://bucket/object-key-name

如果您正在建立存取授與,其中註冊位置是值區,您可以在Subprefix欄位中傳遞下列其中一項,以縮小授與範圍:

  • 值區內的前綴:prefix*

  • 前綴中的前綴:prefixA/prefixB*

  • 一個對象:/object-key-name

建立授權之後,Amazon S3 主控台中顯示的授權範圍,或在或中傳回GrantScope的授權範圍 API AWS Command Line Interface (AWS CLI) 回應是將位置路徑與. Subprefix 請確定此串連路徑正確映射至您要授予存取權的 S3 儲存貯體、字首或物件。

注意
  • 如果您需要建立只授與一個物件存取權的存取權授與,您必須指定該授與類型適用於物件。若要在API呼叫或CLI命令中執行此操作,請將s3PrefixType參數與值一起傳遞Object。在 Amazon S3 主控台中,建立授權時,在選取位置後,在授予範圍下,選取授與範圍為物件核取方塊。

  • 如果儲存貯體不存在,則您無法建立該儲存貯體的授權。但是,您可以為尚未存在的前綴創建授權。

  • 如需在 S3 存取授權執行個體中可建立的授與數目上限,請參閱S3 Access Grants 的限制

您可以使用 Amazon S3 主控台建立存取授予, AWS CLI,Amazon S3 REST API 和 AWS SDKs.

建立存取授權
  1. 登入 AWS Management Console 並在打開 Amazon S3 控制台https://console.aws.amazon.com/s3/

  2. 在左側導覽窗格中,選擇 Access Grants

  3. S3 Access Grants 頁面上,選擇包含您要使用之 S3 Access Grants 執行個體的區域。

    如果您是第一次使用 S3 Access Grants 執行個體,請確定您已完成步驟 2 - 註冊位置,並瀏覽至設定 Access Grants 執行個體精靈的步驟 3。如果您已有 S3 Access Grants 執行個體,請選擇檢視詳細資訊,然後從授權索引標籤選擇建立授權

    1. 授權範圍區段中,選取或輸入註冊位置。

      如果您選取預設的 s3:// 位置,請使用子字首方塊縮小存取授權的範圍。如需詳細資訊,請參閱子字首。如果您只授予一個物件的存取權,請選取授權範圍是物件

    2. 權限和存取底下,選取許可層級讀取寫入,或兩者都選取。

      然後選擇承授者類型。如果您已將公司目錄新增至IAM身分中心,並將此IAM身分識別中心執行個體與 S3 存取授權執行個體產生關聯,則可以從身分中心選擇目錄IAM身分。如果您選擇此選項,請從IAM身分識別中心取得使用者或群組的 ID,並在此區段中輸入。

      如果「受權者」類型是IAM使用者或角色,請選擇「IAM主參與者」。在IAM主參與者類型下,選擇使用者角色。然後,在IAM主要用戶下,從列表中選擇或輸入身份的 ID。

    3. 若要建立 S3 Access Grants 授權,請選擇下一步建立授權

  4. 如果下一步建立授權為停用狀態:

    無法建立授權
    • 您可能需要先在 S3 Access Grants 執行個體中註冊位置

    • 您可能沒有建立存取授權的 s3:CreateAccessGrant 許可。請聯絡您的帳戶管理員。

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

下列範例說明如何建立IAM主參與者的存取權授與要求,以及如何建立公司目錄使用者或群組的存取權授與要求。

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

注意

如果您要建立的存取授權僅授予一個物件的存取權,請包含必要的參數 --s3-prefix-type Object

範例 建立IAM主參與者的存取權授與要求
aws s3control create-access-grant \ --account-id 111122223333 \ --access-grants-location-id a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 \ --access-grants-location-configuration S3SubPrefix=prefixB* \ --permission READ \ --grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::123456789012:user/data-consumer-3
範例 建立存取授權回應
{"CreatedAt": "2023-05-31T18:41:34.663000+00:00", "AccessGrantId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "AccessGrantArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Grantee": { "GranteeType": "IAM", "GranteeIdentifier": "arn:aws:iam::111122223333:user/data-consumer-3" }, "AccessGrantsLocationId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "AccessGrantsLocationConfiguration": { "S3SubPrefix": "prefixB*" }, "GrantScope": "s3://DOC-BUCKET-EXAMPLE/prefix*", "Permission": "READ" }
建立目錄使用者或群組的存取授權請求

若要建立目錄使用者或群組的存取權授與要求,您必須先執行下列其中GUID一個命令來取得目錄使用者或群組的存取權限授與要求。

範例 取得目錄使用者或群組GUID的

您可以GUID透過IAM身分識IAM別中心主控台或使用 AWS CLI 或 AWS SDKs。下列命令會列出指定 IAM Identity Center 執行個體中的使用者,以及他們的名稱和識別碼。

aws identitystore list-users --identity-store-id d-1a2b3c4d1234

此命令會列出指定IAM身分中心執行個體中的群組。

aws identitystore list-groups --identity-store-id d-1a2b3c4d1234
範例 建立目錄使用者或群組的存取授權

此命令類似於為使IAM用者或角色建立授權,但受權者類型為 DIRECTORY_USER or 以外DIRECTORY_GROUP,受權者識別碼是目錄使用者或群組的。GUID

aws s3control create-access-grant \ --account-id 123456789012 \ --access-grants-location-id default \ --access-grants-location-configuration S3SubPrefix="amzn-s3-demo-bucket/rafael/*" \ --permission READWRITE \ --grantee GranteeType=DIRECTORY_USER,GranteeIdentifier=83d43802-00b1-7054-db02-f1d683aacba5 \

如需 Amazon S3 REST API 支援管理存取授與的相關資訊,請參閱 Amazon 簡單儲存服務API參考中的以下各節:

本節提供如何建立存取授與的範例 AWS SDKs.

Java

若要使用下列範例,請將 user input placeholders 取代為您自己的資訊:

注意

如果您要建立的存取授權僅授予一個物件的存取權,請包含必要的參數 .s3PrefixType(S3PrefixType.Object)

範例 建立存取授權請求
public void createAccessGrant() { CreateAccessGrantRequest createRequest = CreateAccessGrantRequest.builder() .accountId("111122223333") .accessGrantsLocationId("a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa") .permission("READ") .accessGrantsLocationConfiguration(AccessGrantsLocationConfiguration.builder().s3SubPrefix("prefixB*").build()) .grantee(Grantee.builder().granteeType("IAM").granteeIdentifier("arn:aws:iam::111122223333:user/data-consumer-3").build()) .build(); CreateAccessGrantResponse createResponse = s3Control.createAccessGrant(createRequest); LOGGER.info("CreateAccessGrantResponse: " + createResponse); }
範例 建立存取授權回應
CreateAccessGrantResponse( CreatedAt=2023-06-07T05:20:26.330Z, AccessGrantId=a1b2c3d4-5678-90ab-cdef-EXAMPLE33333, AccessGrantArn=arn:aws:s3:us-east-2:444455556666:access-grants/default/grant/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333, Grantee=Grantee( GranteeType=IAM, GranteeIdentifier=arn:aws:iam::111122223333:user/data-consumer-3 ), AccessGrantsLocationId=a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa, AccessGrantsLocationConfiguration=AccessGrantsLocationConfiguration( S3SubPrefix=prefixB* ), GrantScope=s3://DOC-BUCKET-EXAMPLE/prefixB, Permission=READ )