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

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

授予 Amazon S3 Storage Lens 的許可

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

您可以在另一個指定一個 Amazon S3 儲存貯體 AWS 用於存儲 Canvas 數據的帳戶,但首先您必須授予跨帳戶權限,以便 Canvas 可以訪問存儲桶。

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

要求

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

  • 跨帳戶 Amazon S3 存儲桶(以及任何關聯 AWS KMS 密鑰)必須在相同 AWS 區域作為 Canvas 用戶域或用戶配置文件。

  • 您畫布儲存位置中訓練資料夾的最終 Amazon S3 URI 必須是 128 個字元以內。最終的 S3 URI 包括存儲桶路徑以及 Canvas 添s3://<your-bucket-name>/<folder-name>/加到存儲桶的路徑: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角色稱為roleB帳戶 B。

    透過附加IAM策略,授與帳戶 B roleB 中的IAM角色,從帳戶 A bucketA 中下載 (GetObjectPutObject) 和上傳 () 物件的權限。

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

    注意

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

    下列範例IAM原則授與存取中物件的必要權限bucketAroleB

    { "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金鑰存取權的詳細資訊,請參閱允許其他帳戶中的使用KMS者使用 AWS KMS 開發人員指南

  1. 創建一個 Amazon S3 存儲桶bucketA,並s3KmsInAccountA在帳戶 A 中創建一個 Amazon S3 KMS 密鑰。

  2. Canvas 使用者存在於另一個名為「帳戶 B」的帳戶中。在下列步驟中,我們將 Canvas 使用者的IAM角色稱為roleB帳戶 B。

    授予帳戶 B roleB 中的IAM角色執行下列動作的權限:

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

    • 存取 AWS KMS 輸s3KmsInAccountA入帳戶 A。

    下列範例IAM原則會授與存取中物件bucketA及使用KMS金鑰的必要權限s3KmsInAccountAroleB

    { "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. s3KmsInAccountA在帳戶 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:GetBucketCors", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucketA" } ] }

    下列範例是您附加至帳戶 A s3KmsInAccountA 中的KMS金鑰以授與roleB存取權的金鑰原則。如需如何建立及附加金鑰原則陳述式的詳細訊,請參閱在 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 成品的儲存位置。