建立授權 - Amazon Simple Storage Service

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

建立授權

您必須先在 Amazon S3 Access Grants 執行個體中至少註冊一個位置,才能建立存取授權。存取授權可給予承授者存取註冊位置的許可。

受權者可以是 AWS Identity and Access Management (IAM) 使用者或角色,也可以是目錄使用者或群組。目錄使用者是您新增至與 S3 Access Grants 執行個體相關聯之 AWS IAM Identity Center 執行個體的公司目錄或外部身分來源的使用者。若要從 IAM Identity Center 為特定使用者或群組建立授權,請在 IAM Identity Center 尋找 IAM Identity Center 用來識別該使用者的 GUID,例如 a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

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

子字首

授予註冊位置的存取權時,您可以使用 Subprefix 欄位將範圍縮小為儲存貯體內的特定字首,或是儲存貯體中的特定物件。

您無法建立預設位置 s3:// 的存取授權,這樣會讓承授者存取區域中的所有儲存貯體。如果您選擇預設 s3:// 位置作為授權位置,則必須使用 Subprefix 欄位指定下列其中一項來縮小授權範圍:

  • 儲存貯體 — s3://bucket/*

  • 儲存貯體內的字首 — s3://bucket/prefix*

  • 字首內的字首 — s3://bucket/prefixA/prefixB*

  • 物件 — s3://bucket/object-key-name

如果您建立的存取授權中註冊位置是儲存貯體,則可在 Subprefix 欄位中傳遞下列其中一項:

  • 儲存貯體內的字首 — prefix*

  • 字首內的字首 — prefixA/prefixB*

  • 物件 — /object-key-name

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

如果您要建立的存取授權僅授予一個物件的存取權,請在 API 呼叫或 CLI 命令中指定 s3PrefixTypeObject

注意

如果儲存貯體不存在,則您無法建立該儲存貯體的授權。不過,您可以為尚不存在的字首建立授權。

您可以使用 Amazon S3 主控台 AWS CLI、Amazon S3 REST API 和 AWS 開發套件來建立存取授與。

建立存取授權
  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 Identity Center,並將此 IAM Identity Center 執行個體與 S3 Access Grants 執行個體建立關聯,則可以選擇 IAM Identity Center 的目錄身分。如果您選擇此選項,請從 IAM Identity Center 取得使用者或群組的 ID,然後在此區段中輸入。

      如果承授者類型是 IAM 使用者或角色,請選擇 IAM 主體。在 IAM 主體類型下,選擇使用者角色。然後,在 IAM 主體使用者下,從清單中選擇或輸入身分 ID。

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

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

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

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

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

下列範例說明如何建立 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

您可以透過 IAM 身分中心主控台或使用或 AWS SDK,找到 IAM 身分中心使用者的 GUID。 AWS CLI 下列命令會列出所指定 IAM Identity Center 執行個體中的使用者,包括其名稱和識別符。

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

此命令會列出所指定 IAM Identity Center 執行個體中的群組。

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

此命令類似於為 IAM 使用者或角色建立授權,但承授者類型為 DIRECTORY_USERDIRECTORY_GROUP,且承授者識別符是目錄使用者或群組的 GUID。

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

如需有關管理存取授權的 Amazon S3 REST API 支援資訊,請參閱《Amazon Simple Storage Service API 參考》中的下列各節:

本節提供如何使用 AWS SDK 建立存取授權的範例。

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 )