授予 Amazon S3 Storage Lens 的許可 - Amazon SageMaker

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

授予 Amazon S3 Storage Lens 的許可

為使用者設定 SageMaker 網域或使用者設定檔以存取 SageMaker Canvas 時,您可以指定 Canvas 成品的 Amazon S3 儲存位置。這些成品包括已儲存的輸入資料集副本、模型加工品、預測和其他應用程式資料。您可以使用預設 SageMaker 建立的 Amazon S3 儲存貯體,也可以自訂儲存位置,並指定自己的儲存貯體來儲存 Canvas 應用程式資料。

您可以在另一個 AWS 帳戶中指定 Amazon S3 儲存貯體來儲存 Canvas 資料,但首先必須授予跨帳戶許可,以便 Canvas 存取儲存貯體。

以下各節說明如何授予 Canvas 的許可,以便在另一個帳戶中的 Amazon S3 儲存貯體上傳和下載物件。當您的儲存貯體使用 加密時,還有其他許可 AWS KMS。

要求

開始之前,檢查下列要求:

  • 跨帳戶 Amazon S3 儲存貯體 (和任何相關聯的 AWS KMS 金鑰) 必須與 Canvas 使用者網域或使用者設定檔位於相同的 AWS 區域。

  • Canvas 儲存位置中訓練資料夾的最終 URI Amazon S3 必須少於 128 個字元。最終 S3 URI包含您的儲存貯體路徑,s3://<your-bucket-name>/<folder-name>/以及 Canvas 新增至儲存貯體的路徑:Canvas/<user-profile-name>/Training。例如,小於 128 個字元的可接受路徑為 s3://<amzn-s3-demo-bucket>/<machine-learning>/Canvas/<user-1>/Training

儲存貯體的跨帳戶 Amazon S3 主控台 ACL 許可

以下部分概述授予必要許可,以便 Canvas 可以在另一個帳戶中存取 Amazon S3 儲存貯體的基本步驟。如詳細說明,請參閱 Amazon S3 使用者指南中的範例 2:儲存貯體擁有者授予跨帳戶許可

  1. 在帳戶 A 建立一個 Amazon S3 儲存貯體 bucketA

  2. Canvas 使用者存在於另一個名為帳戶 B 的帳戶中。在下列步驟中,我們參考 Canvas 使用者IAM的角色,如同帳戶 B roleB 一樣。

    授予帳戶 B roleB中IAM的角色許可,以透過連接IAM政策來下載 (GetObject) 和上傳 (PutObject) 物件往返帳戶 A bucketA中。

    若要限制存取特定儲存貯體資料夾,請在資源元素中定義資料夾名稱,例如 arn:aws:s3:::<bucketA>/FolderName/*。如需詳細資訊,請參閱如何使用IAM政策來授予使用者特定資料夾的存取權?

    注意

    儲存貯體層級動作如 GetBucketCorsGetBucketLocation 應該新增至值區層級資源,而不是資料夾。

    下列範例IAM政策會授予 所需的許可roleB,以存取 中的物件bucketA

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::bucketA/FolderName/*", ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::bucketA", ] } ] }
  3. 設定帳戶 A bucketA中的儲存貯體政策,以授予帳戶 B roleB中IAM角色的許可。

    注意

    管理員也必須在儲存貯體許可區段下關閉封鎖所有公開存取

    下列儲存貯體政策範例,讓 bucketA 授予 roleB 必要的許可:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::bucketA/FolderName/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:ListBucket", "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucketA" } ] }

設定前述許可後,帳戶 B 中的 Canvas 使用者設定檔現在可以使用帳戶 A 中的 Amazon S3 儲存貯體做為 Canvas 成品的儲存位置。

使用 加密的跨帳戶 Amazon S3 儲存貯體的許可 AWS KMS

下列程序說明如何授予必要的許可,以便 Canvas 可以在使用 加密的另一個帳戶中存取您的 Amazon S3 儲存貯體 AWS KMS。這些步驟與上述程序類似,但具有其他許可。如需授予跨帳戶KMS金鑰存取權的詳細資訊,請參閱 AWS KMS 開發人員指南 中的允許其他帳戶中的使用者使用KMS金鑰

  1. 在帳戶 A s3KmsInAccountA中建立 Amazon S3 儲存貯體bucketA、 和 Amazon S3 KMS金鑰。

  2. Canvas 使用者存在於另一個名為帳戶 B 的帳戶中。在下列步驟中,我們參考 Canvas 使用者IAM的角色,如同帳戶 B roleB 一樣。

    在帳戶 B roleB中授予IAM角色執行下列動作的許可:

    • 在帳戶 A 的 bucketA 中下載 (GetObject) 和上傳 (PutObject) 物件。

    • 存取帳戶 A s3KmsInAccountA 中的 AWS KMS 金鑰。

    下列範例IAM政策授予 所需的許可roleB,以存取 中的物件bucketA並使用 KMS金鑰s3KmsInAccountA

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::bucketA/FolderName/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::bucketA" ] }, { "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:RetireGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlainText", "kms:Decrypt" ], "Effect": "Allow", "Resource": "arn:aws:kms:{region}:accountA:key/s3KmsInAccountA" } ] }
  3. 在帳戶 A bucketA s3KmsInAccountA中設定 的儲存貯體政策和 的金鑰政策,以授予帳戶 B roleB中IAM角色的許可。

    下列範例儲存貯體政策為 bucketA 授予 roleB 必要的許可:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::bucketA/FolderName/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucketA" } ] }

    下列範例是您連接到帳戶 A s3KmsInAccountA中金鑰以授予roleB存取權的KMS金鑰政策。如需有關如何建立和連接金鑰政策聲明的更多相關資訊,請參閱 AWS KMS 開發人員指南中的建立金鑰政策

    { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::accountB:role/roleB" ] }, "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:RetireGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlainText", "kms:Decrypt" ], "Resource": "*" }

設定上述許可後,帳戶 B 中的 Canvas 使用者設定檔現在可以使用帳戶 A 中的加密 Amazon S3 儲存貯體作為 Canvas 成品的儲存位置。