本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
安全與許可
當您從 Athena 或 Amazon Redshift 查詢資料時,查詢的資料集會自動存放在您使用 Studio Classic AWS 之區域的預設 SageMaker AI S3 儲存貯體中。此外,當您從 Amazon SageMaker Data Wrangler 匯出 Jupyter Notebook 並執行它時,您的資料流程或 .flow 檔案會儲存在前綴 data_wrangler_flows 下的相同預設儲存貯體中。
針對高階安全需求,您可以設定儲存貯體政策,限制可存取此預設 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。針對您建立的每個角色,將 取代
role-name
為角色的名稱,並執行下列動作:$ aws iam get-role --role-name
role-name
在回應中,您會看到開頭為
AROA
的RoleId
字串。複製此字串。 -
將下列政策新增至您使用 Data Wrangler 之 AWS 區域中的 SageMaker AI 預設儲存貯體。
region
將 取代為儲存貯體所在的 AWS 區域,並將account-id
取代為 AWS 您的帳戶 ID。將userId
開頭AROAEXAMPLEID
為 的 取代為您要授予使用 Data Wrangler 許可之 AWS 角色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角色許可,以搭配一般IAM受管政策 使用 Data WranglerAmazonSageMakerFullAccess
AmazonSageMakerFullAccess
,您應該注意下列事項:
-
如果您從 Amazon Redshift 匯入資料,則資料庫使用者名稱必須具有字首
sagemaker_access
。 -
此受管政策僅授權存取許可,存取名稱中具有
SageMaker AI
、SageMaker AI
、sagemaker
或aws-glue
其中之一的儲存貯體。如果想要使用 Data Wrangler 從名稱中沒有這些片語的 S3 儲存貯體匯入 ,請參閱此頁面的最後一節,了解如何將存取 S3 儲存貯體的許可授予IAM實體。
如果您有高安全性需求,您可以將本節中的政策連接至IAM實體,以授予使用 Data Wrangler 所需的許可。
如果您在 Amazon Redshift 或 Athena 中有某個IAM角色需要從 Data Wrangler 匯入的資料集,則必須將政策新增至該實體以存取這些資源。下列政策是您可以用來授予IAM角色從 Amazon Redshift 和 Athena 匯入資料的許可的最嚴格政策。
若要了解如何將自訂政策連接至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角色具有存取儲存資料之基礎 S3 儲存貯體的許可,如適用的話,可透過個別IAM政策進行儲存。
{ "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 Data Wrangler 中預設 Amazon S3 儲存貯體下存取下列字首:athena/
、redshift/
。如果預設的 Amazon S3 儲存貯體尚未存在於 AWS 區域中,您也必須提供IAM角色許可,才能在此區域中建立儲存貯體。
此外,如果您希望IAM角色能夠使用 Amazon SageMaker Feature Store、管道和 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 儲存貯體 ,從另一個 AWS 帳戶存取 Amazon S3 儲存貯體中的資料URI。若要這樣做,授予其他帳戶中 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 中的靜態資料會使用 SSE-KMS 使用預設值加密 AWS KMS key。
就 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 AWS Glue 許可的詳細資訊 AppFlow,請參閱「」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 EC2執行個體的 Amazon 執行個體需要修改其生命週期組態,才能執行 Data Wrangler。生命週期組態是可自動化 Amazon SageMaker Studio Classic 環境自訂的 shell 指令碼。
如需生命週期組態的更多相關資訊,請參閱使用生命週期組態來自訂 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 應用程式失敗。