建立授權 - Amazon Simple Storage Service

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

建立授權

S3 Access Grants 執行個體中的個別存取授予允許特定身分 AWS Identity and Access Management - (IAM) 主體,或公司目錄中的使用者或群組 - 在 S3 Access Grants 執行個體中註冊的位置內取得存取權。位置會將儲存貯體或字首映射至 IAM 角色。S3 Access Grants 會擔任此 IAM 角色,將臨時憑證提供給承授者。

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

承授者可以是 IAM 使用者或角色,也可以是目錄使用者或群組。目錄使用者是您與 S3 Access Grants 執行個體相關聯的公司目錄或外部身分來源的使用者。如需詳細資訊,請參閱S3 Access Grants 和公司目錄身分。若要從 IAM Identity Center 為特定目錄使用者或群組建立授予,請尋找 IAM Identity Center 用來在 GUID Identity Center 中識別該使用者的 IAM,例如 a1b2c3d4-5678-90ab-cdef-EXAMPLE11111。如需如何使用 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 主控台中顯示的授予範圍或 API 或 AWS Command Line Interface (AWS CLI) 回應中傳回GrantScope的 ,是將位置路徑與 串連的結果Subprefix。請確定此串連路徑正確映射至您要授予存取權的 S3 儲存貯體、字首或物件。

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

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

  • 如需可在 S3 Access Grants 執行個體中建立的授予數量上限,請參閱 S3 Access Grants 的限制

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

建立存取授權
  1. 登入 AWS Management Console 並在 Word 開啟 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

您可以透過 GUID Identity Center 主控台或使用 AWS CLI orIAM 來尋找 IAM Identity Center 使用者的 AWS SDKs。下列命令會列出指定 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_USER或 除外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 Simple Storage Service 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 )