本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
安全與許可
當您從 Athena 或 Amazon Redshift 查詢資料時,查詢的資料集會自動存放在您使用 Studio Classic AWS 之區域的預設 SageMaker AI S3 儲存貯體中。此外,當您從 Amazon SageMaker Data Wrangler 匯出 Jupyter 筆記本並執行它時,您的資料流量或 .flow 檔案會儲存至相同的預設儲存貯體,字首為 data_wrangler_flow。
對於高階安全需求,您可以設定儲存貯體政策,限制可存取此預設 SageMaker AI S3 儲存貯體 AWS 的角色。使用以下各節,將此類的政策新增至 S3 儲存貯體。若要遵循此頁面的指示,請使用 AWS Command Line Interface (AWS CLI)。若要了解如何進行,請參閱《IAM AWS 使用者指南》中的設定 CLI。
此外,您需要向使用 Data Wrangler 的每個 IAM 角色授予存取許可,以存取必要的資源。如果您不需要存取 Data Wrangler 的 IAM 角色的精細許可,您可以將 IAM 受管政策 AmazonSageMakerFullAccess
新增儲存貯體政策,以限制存取匯入至 Data Wrangler 的資料集
您可以使用 Amazon S3 儲存貯體政策,將新增政策至包含 Data Wrangler 資源的 S3 儲存貯體。Data Wrangler 上傳到您使用 Studio Classic 之 AWS 區域中預設 SageMaker AI S3 儲存貯體的資源包括下列項目:
-
查詢 Amazon Redshift 的結果。這些儲存為 Redshift/ 字首。
-
查詢 Athena 的結果。這些儲存為Athena/ 字首。
-
當您執行Data Wrangler 產生的匯出 Jupyter 筆記本 時,.flow 檔案會上傳到 Amazon S3。這些資料儲存為 data_wrangler_flows/ 字首。
使用下列程序建立一個 S3 儲存貯體政策,您可以新增此政策來限制 IAM 角色對該儲存貯體的存取。若要了解如何新增政策至 S3 儲存貯體,請參閱如何新增 S3 儲存貯體政策?。
若要在存放 Data Wrangler 資源的 S3 儲存貯體上設定儲存貯體政策:
-
設定您希望存取 Data Wrangler 的一或多個 IAM 角色。
-
開啟命令提示字元或 Shell。針對您建立的每個角色,將
角色名稱
取代為角色的名稱,然後執行下列動作:$ aws iam get-role --role-name
role-name
在回應中,您會看到開頭為
AROA
的RoleId
字串。複製此字串。 -
將下列政策新增至您使用 Data Wrangler AWS 之區域中的 SageMaker AI 預設儲存貯體。將
區域
取代為儲存貯體所在的 AWS 區域,並將帳戶 ID
取代為 AWS 您的帳戶 ID。將userId
開頭為AROAEXAMPLEID
的 取代為 AWS 您要授予使用 Data Wrangler 許可的角色 IDs。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::sagemaker-
region
-account-id
/data_wrangler_flows/", "arn:aws:s3:::sagemaker-region
-account-id
/data_wrangler_flows/*", "arn:aws:s3:::sagemaker-region
-account-id
/athena", "arn:aws:s3:::sagemaker-region
-account-id
/athena/*", "arn:aws:s3:::sagemaker-region
-account-id
/redshift", "arn:aws:s3:::sagemaker-region
-account-id
/redshift/*" ], "Condition": { "StringNotLike": { "aws:userId": [ "AROAEXAMPLEID_1
:*", "AROAEXAMPLEID_2
:*" ] } } } ] }
建立一個 Data Wrangler 允許清單
每當使用者從 Amazon SageMaker Studio Classic 使用者介面開始執行 Data Wrangler 時,他們就會呼叫 SageMaker AI 應用程式程式設計介面 (API) 來建立 Data Wrangler 應用程式。
依照預設值,您的組織可能不會向您的使用者提供進行這些 API 呼叫的許可。若要提供許可,您必須使用以下政策範本建立和連接政策至使用者的 IAM 角色:Data Wrangler 允許清單範例
注意
上述政策範例只會讓您的使用者存取 Data Wrangler 應用程式。
如需有關建立政策的詳細資訊,請參閱中 在 JSON 標籤上建立政策。建立政策時,請從 JSON 索引標籤的 Data Wrangler 允許清單範例
重要
使用範本建立政策後,請將它連接到使用者的 IAM 角色。如需如何連接政策的詳細資訊,請參閱 新增 IAM 身分許可 (主控台)。
授權 IAM 角色許可,以使用 Data Wrangler
您可以授權 IAM 角色許可,以便將 Data Wrangler 與一般 IAM 受管政策 AmazonSageMakerFullAccess
AmazonSageMakerFullAccess
,您應該注意下列事項:
-
如果您從 Amazon Redshift 匯入資料,則資料庫使用者名稱必須具有字首
sagemaker_access
。 -
此受管政策僅授權存取許可,存取名稱中具有
SageMaker AI
、SageMaker AI
、sagemaker
或aws-glue
其中之一的儲存貯體。如果想要使用 Data Wrangler 從 S3 儲存貯體匯入,但名稱中沒有這些詞組,請參閱本頁的最後一節,了解如何授予許可 IAM 實體存取 S3 儲存貯體的權限。
如果您有高安全性需求,您可以將本節中的政策連接到 IAM 實體,授予所需的權限,以使用 Data Wrangler。
如果您在 Amazon Redshift 或 Athena 中有資料集需要 IAM 角色從 Data Wrangler 匯入,您必須對該實體新增政策才能存取這些資源。下列政策是從 Amazon Redshift 和 Athena 匯入資料的最嚴格的限制政策,您可以用來授與 IAM 角色許可。
若要了解如何將自訂政策連接至 IAM 角色,請參閱 IAM 使用者指南中的管理 IAM 政策。
授與 Athena 資料集匯入存取權的政策範例
下列政策假設 IAM 角色具有權限,可存取透過別的 IAM 政策存放資料的基礎 S3 儲存貯體。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:StartQueryExecution", "athena:StopQueryExecution" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:*:*:table/*/sagemaker_tmp_*", "arn:aws:glue:*:*:table/sagemaker_featurestore/*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*" ] }, { "Effect": "Allow", "Action": [ "glue:DeleteTable" ], "Resource": [ "arn:aws:glue:*:*:table/*/sagemaker_tmp_*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*" ] }, { "Effect": "Allow", "Action": [ "glue:GetDatabases", "glue:GetTable", "glue:GetTables" ], "Resource": [ "arn:aws:glue:*:*:table/*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/sagemaker_featurestore", "arn:aws:glue:*:*:database/sagemaker_processing", "arn:aws:glue:*:*:database/default", "arn:aws:glue:*:*:database/sagemaker_data_wrangler" ] } ] }
授與 Amazon Redshift 資料集匯入存取權的政策範例
下列政策授予許可,可使用名稱中具有 sagemaker_access
字首的資料庫使用者設定與 Data Wrangler 之間的 Amazon Redshift 連線。若要授予許可,讓使用其他資料庫使用者連線,請在下列政策 "Resources"
中新增其他項目。下列政策假設 IAM 角色有存取許可,可透過別的 IAM 政策 (如果適用) 儲存資料的底層 S3 儲存貯體。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:DescribeStatement", "redshift-data:CancelStatement", "redshift-data:GetStatementResult", "redshift-data:ListSchemas", "redshift-data:ListTables" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:*:*:dbuser:*/sagemaker_access*", "arn:aws:redshift:*:*:dbname:*" ] } ] }
授予存取權,存取 S3 儲存貯體的政策
如果您的資料集存放在 Amazon S3 中,您可以使用類似下列的政策授與 IAM 角色存取許可,存取此儲存貯體。此範例授予對名為 test
的儲存貯體的程式讀取寫入存取權。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::
test
"] }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::test
/*"] } ] }
若要從 Athena 和 Amazon Redshift 匯入資料,您必須授予 IAM 角色許可,以存取使用的區域 AWS 資料 Wrangler 中預設 Amazon S3 儲存貯體下的下列字首:athena/
、redshift/
。如果預設的 Amazon S3 儲存貯體尚未存在於 AWS 區域中,您還必須授予 IAM 角色許可,才能在此區域中建立儲存貯體。
此外,如果您希望 IAM 角色能夠使用 Amazon SageMaker Feature Store、Pipelines 和 Data Wrangler 任務匯出選項,您必須授予此儲存貯體data_wrangler_flows/
中字首的存取權。
Data Wrangler 使用 athena/
和 redshift/
字首來儲存預覽檔案和匯入的資料集。如需進一步了解,請參閱 匯入資料儲存。
當您執行從 Data Wrangler 匯出的 Jupyter 筆記本時,Data Wrangler 會使用 data_wrangler_flows/
字首來儲存 .flow 檔案。如需進一步了解,請參閱 匯出。
使用類似下列的政策來授權前面段落中描述的許可。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::sagemaker-
region
-account-id
/data_wrangler_flows/", "arn:aws:s3:::sagemaker-region
-account-id
/data_wrangler_flows/*", "arn:aws:s3:::sagemaker-region
-account-id
/athena", "arn:aws:s3:::sagemaker-region
-account-id
/athena/*", "arn:aws:s3:::sagemaker-region
-account-id
/redshift", "arn:aws:s3:::sagemaker-region
-account-id
/redshift/*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:ListBucket" ], "Resource": "arn:aws:s3:::sagemaker-region
-account-id
" }, { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Resource": "*" } ] }
您也可以指定 Amazon S3 儲存貯體 URI,從另一個 AWS 帳戶存取 Amazon S3 儲存貯體中的資料。為此,授予其他帳戶中 Amazon S3 儲存貯體存取權的 IAM 政策,應使用類似下列範例的政策,其中 BucketFolder
是使用者儲存貯體中的特定目錄 UserBucket
。應將此政策新增至用戶,授予存取其儲存貯體的權限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::
UserBucket
/BucketFolder/
*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::UserBucket
", "Condition": { "StringLike": { "s3:prefix": [ "BucketFolder
/*" ] } } } ] }
存取儲存貯體的使用者 (非儲存貯體擁有者) 必須將類似下列範例的政策新增至其使用者。請注意,以下 AccountX
和 TestUser
分別指值儲存貯體擁有者及其使用者。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
AccountX:user
/TestUser
" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::UserBucket
/BucketFolder
/*" ] }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountX:user
/TestUser
" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::UserBucket
" ] } ] }
授予使用 SageMaker AI Studio 之存取權的政策範例
使用如下所示的政策來建立 IAM 執行角色,可用於設定 Studio Classic 執行個體。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeDomain", "sagemaker:ListDomains", "sagemaker:DescribeUserProfile", "sagemaker:ListUserProfiles", "sagemaker:*App", "sagemaker:ListApps" ], "Resource": "*" } ] }
Snowflake 和 Data Wrangler
AWS 資源的所有許可是透過連接至 Studio Classic 執行個體的 IAM 角色進行管理。Snowflake 管理員可以管理 Snowflake 特定的許可,因為他們可以將細部的許可和權限授予每個 Snowflake 使用者。包含資料庫、結構描述、資料表、倉儲,及儲存整合物件。您必須確保在 Data Wrangler 外部設定正確的許可。
請注意,Snowflake COPY INTO Amazon S3
命令預設會透過公有網際網路將資料從 Snowflake 移至 Amazon S3,但傳輸中的資料會使用 SSL 確保資料安全。Amazon S3 中的靜態資料會以預設值 AWS KMS key使用 SSE-KMS 加密。
就 Snowflake 憑證儲存而言,Data Wrangler 不會儲存客戶憑證。Data Wrangler 使用 Secrets Manager 將憑證儲存在機密中,並輪換機密,作為最佳實務安全計畫的一環。Snowflake 或 Studio Classic 管理員需要確保資料科學家的 Studio Classic 執行角色獲得許可,以GetSecretValue
對存放憑證的秘密執行 。如果已連接至 Studio Classic 執行角色,則AmazonSageMakerFullAccess
政策具有必要許可,可讀取 Data Wrangler 建立的秘密,以及遵循上述說明中的命名和標記慣例建立的秘密。不遵守慣例的機密必須分別授予存取權。我們建議您使用 Secrets Manager 來防止透過不安全的管道共用登入資料;不過請注意,登入的使用者可以透過在 Studio Classic 中啟動終端機或 Python 筆記本,然後從 Secrets Manager API 叫用 API 呼叫來擷取純文字密碼。
使用 進行資料加密 AWS KMS
在 Data Wrangler 中,您可以解密加密的檔案,並將其新增至 Data Wrangler 流程。您也可以使用預設 AWS KMS 金鑰或您提供的金鑰來加密轉換的輸出。
如果檔案具有下列項目,您可以匯入檔案:
-
伺服器端加密
-
加密類型為 SSE-KMS
若要解密檔案並匯入至 Data Wrangler 流程,您必須新增用作金鑰使用者的 SageMaker Studio Classic 使用者。
下列螢幕擷取畫面顯示新增為金鑰使用者的 Studio Classic 使用者角色。如需進行此變更,請參閱 IAM 角色

為 Data Wrangler 匯入資料儲存設定 Amazon S3 客戶受管金鑰
根據預設,Data Wrangler 使用具有下列命名慣例的 Amazon S3 儲存貯體:sagemaker-region-account number
。例如,如果您的 帳戶號碼是 ,111122223333
而且您在 us-east-1 中使用 Studio Classic,則匯入的資料集會以下列命名慣例儲存:sagemaker-us-east-1-111122223333
。
下列指示說明如何為預設 Amazon S3 儲存貯體設定客戶受管金鑰。
-
若要啟用伺服器端加密,並為您的預設 S3 儲存貯體設定客戶受管金鑰,請參閱使用 KMS 加密。
-
在執行步驟 1 之後,導覽至 AWS KMS 中的 AWS Management Console。尋找您在上一個步驟的步驟 1 中選取的客戶受管金鑰,並將 Studio Classic 角色新增為金鑰使用者。請依照允許金鑰使用者使用客戶受管金鑰中的指示,以完成這項作業。
加密您匯出的資料
您可以使用以下其中一個方法來加密匯出的資料:
-
指定您的 Amazon S3 儲存貯體具有物件,請使用 SSE-KMS 加密。
-
指定 AWS KMS 金鑰來加密您從 Data Wrangler 匯出的資料。
在匯出資料頁面上,指定 AWS KMS 金鑰 ID 或 ARN 的值。
如需使用 AWS KMS 金鑰的詳細資訊,請參閱使用存放在 (SSE-KMS) 中的 AWS KMSAWSAWS Key Management Service 金鑰使用伺服器端加密保護資料。
Amazon AppFlow 許可
執行傳輸時,您必須指定具有執行傳輸許可的 IAM 角色。您可以透過具有許可使用 Data Wrangler 的相同 IAM 角色。根據預設,您用來存取 Data Wrangler 的 IAM 角色為 SageMakerExecutionRole
。
此 IAM 角色也須具有下列許可:
-
Amazon AppFlow 的許可
-
AWS Glue Data Catalog 的許可
-
的許可, AWS Glue 以探索可用的資料來源
當您執行傳輸時,Amazon AppFlow 會將來自傳輸的中繼資料存放在 AWS Glue Data Catalog 中。Data Wrangler 使用目錄中的中繼資料來判斷它是否可用,以供您查詢和匯入。
若要將許可新增至 Amazon AppFlow,請將 AmazonAppFlowFullAccess
AWS 受管政策新增至 IAM 角色。如需更多新增政策的更多相關資訊,請參閱新增和移除 IAM 身分許可。
如果您要將資料傳輸到 Amazon S3,則您必須連接以下政策。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:GetBucketTagging", "s3:ListBucketVersions", "s3:CreateBucket", "s3:ListBucket", "s3:GetBucketPolicy", "s3:PutEncryptionConfiguration", "s3:GetEncryptionConfiguration", "s3:PutBucketTagging", "s3:GetObjectTagging", "s3:GetBucketOwnershipControls", "s3:PutObjectTagging", "s3:DeleteObject", "s3:DeleteBucket", "s3:DeleteObjectTagging", "s3:GetBucketPublicAccessBlock", "s3:GetBucketPolicyStatus", "s3:PutBucketPublicAccessBlock", "s3:PutAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:PutBucketOwnershipControls", "s3:PutObjectVersionTagging", "s3:DeleteObjectVersionTagging", "s3:GetBucketVersioning", "s3:GetBucketAcl", "s3:PutObject", "s3:GetObject", "s3:GetAccountPublicAccessBlock", "s3:ListAllMyBuckets", "s3:GetAnalyticsConfiguration", "s3:GetBucketLocation" ], "Resource": "*" } ] }
若要新增 AWS Glue 許可,請將 AWSGlueConsoleFullAccess
受管政策新增至 IAM 角色。如需 Amazon AppFlow AWS Glue 許可的詳細資訊,請參閱 【link-to-appflow-page】。
Amazon AppFlow 需要存取 AWS Glue 和 Data Wrangler,才能匯入您已傳輸的資料。若要授與 Amazon AppFlow 存取權限,請將下列信任政策新增至 IAM 角色。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root", "Service": [ "appflow.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
若要在 Data Wrangler 中顯示 Amazon AppFlow 資料,請將下列政策新增至 IAM 角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:SearchTables", "Resource": [ "arn:aws:glue:*:*:table/*/*", "arn:aws:glue:*:*:database/*", "arn:aws:glue:*:*:catalog" ] } ] }
在 Data Wrangler 中使用生命週期組態
您可能擁有設定為執行核心閘道應用程式的 Amazon EC2 執行個體,而不是 Data Wrangler 應用程式。核心閘道應用程式可讓您存取環境,以及您用來執行 Studio Classic 筆記本和終端機的核心。Data Wrangler 應用程式是執行 Data Wrangler 的使用者介面應用程式。非 Data Wrangler 執行個體的 Amazon EC2 執行個體需要修改其生命週期組態,才能執行 Data Wrangler。生命週期組態是 shell 指令碼,可自動化 Amazon SageMaker Studio Classic 環境的自訂。
如需生命週期組態的更多相關資訊,請參閱使用生命週期組態來自訂 Studio Classic。
執行個體的預設生命週期組態不支援使用 Data Wrangler。您可以對預設組態進行下列修改,以便在執行個體中使用 Data Wrangler。
#!/bin/bash set -eux STATUS=$( python3 -c "import sagemaker_dataprep" echo $? ) if [ "$STATUS" -eq 0 ]; then echo 'Instance is of Type Data Wrangler' else echo 'Instance is not of Type Data Wrangler' # Replace this with the URL of your git repository export REPOSITORY_URL="https://github.com/aws-samples/sagemaker-studio-lifecycle-config-examples.git" git -C /root clone $REPOSTIORY_URL fi
您可以將指令碼存為 lifecycle_configuration.sh
。
您可以將生命週期組態連接至 Studio Classic 網域或使用者設定檔。如需建立和管理生命週期組態的更多相關資訊,請參閱建立並關聯生命週期組態。
下列指示說明如何將生命週期組態連接至 Studio Classic 網域或使用者設定檔。
建立或連接生命週期組態時,可能會發生錯誤。如需 S3 生命週期組態錯誤偵錯的資訊,請參閱KernelGateway 應用程式失敗。