翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
セキュリティと権限
Athena または Amazon Redshift からデータをクエリすると、クエリされたデータセットは Studio Classic を使用している AWS リージョンのデフォルトの SageMaker S3 バケットに自動的に保存されます。さらに、Amazon SageMaker Data Wrangler から Jupyter Notebook をエクスポートして実行すると、データフローまたは .flow ファイルは、プレフィックス data_wrangler_flows の下の同じデフォルトバケットに保存されます。
高レベルのセキュリティニーズのために、このデフォルトの SageMaker S3 バケットにアクセスできる AWS ロールを制限するバケットポリシーを設定できます。次のセクションでは、このタイプのポリシーを S3 バケットに追加します。このページの指示に従うには、 AWS Command Line Interface () を使用しますAWS CLI。方法については、IAM「 ユーザーガイド」の「 の設定 AWS CLI」を参照してください。
さらに、Data Wrangler アクセス許可を使用して必要なリソースにアクセスする各IAMロールを付与する必要があります。Data Wrangler へのアクセスに使用するIAMロールに詳細なアクセス許可が必要ない場合は、Studio Classic ユーザーの作成に使用するIAMロールに AmazonSageMakerFullAccess
バケットポリシーを追加して Data Wrangler にインポートされたデータセットへのアクセスを制限する
Amazon S3 バケットポリシーを使用して、Data Wrangler リソースを含む S3 バケットにポリシーを追加できます。Data Wrangler が Studio Classic を使用している AWS リージョンのデフォルトの SageMaker S3 バケットにアップロードするリソースは次のとおりです。
-
クエリされた Amazon Redshift の結果。これらは redshift/ プレフィックスで保存されます。
-
クエリされた Athena の結果。これらは athena/ プレフィックスで保存されます。
-
Data Wrangler が作成してエクスポートされた Jupyter ノートブックの実行時に Amazon S3 にアップロードされる .flow ファイル。これらは data_wrangler_flows/ プレフィックスに保存されます。
次の手順を使用して、そのバケットへのIAMロールアクセスを制限するために追加できる S3 バケットポリシーを作成します。S3 バケットにポリシーを追加する方法については、「S3 バケットポリシーを追加する方法」を参照してください。
Data Wrangler リソースを保存する S3 バケットにバケットポリシーを設定するには、次の手順を実行します。
-
Data Wrangler にアクセスできるようにする 1 つ以上のIAMロールを設定します。
-
コマンドプロントまたはシェルを開きます。作成するロールごとに、 を置き換えます。
role-name
ロールの名前を使用して、以下を実行します。$ aws iam get-role --role-name
role-name
レスポンスでは、
AROA
で始まるRoleId
文字列が表示されます。この文字列をコピーします。 -
Data Wrangler を使用している AWS リージョンの SageMaker デフォルトバケットに次のポリシーを追加します。置換
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 プログラミングインターフェイス (API) を呼び出して Data Wrangler アプリケーションを作成します。
組織は、デフォルトでこれらのAPI呼び出しを行うアクセス許可をユーザーに付与しない場合があります。アクセス許可を付与するには、次のポリシーテンプレートを使用して、ポリシーを作成してユーザーのIAMロールにアタッチする必要があります: Data Wrangler 許可リストの例
注記
前述のポリシー例では、Data Wrangler アプリケーションへのアクセス権のみをユーザーに付与しています。
ポリシーの作成の詳細については、JSONタブの「ポリシーの作成」を参照してください。ポリシーを作成するときは、 JSONタブの Data Wrangler 許可リストの例
重要
ユーザーが次のオペレーションを実行できないようにするIAMポリシーを削除します。
削除しない場合、ユーザーはこれらのポリシーの影響を受ける可能性があります。
テンプレートを使用してポリシーを作成したら、ユーザーのIAMロールにアタッチします。ポリシーのアタッチの詳細については、IAM「ID アクセス許可の追加 (コンソール)」を参照してください。
Data Wrangler を使用するためのIAMロールアクセス許可を付与する
Data Wrangler を一般的なIAM管理ポリシー で使用するアクセス許可をIAMロールに付与できますAmazonSageMakerFullAccess
AmazonSageMakerFullAccess
を使用して Data Wrangler へのアクセス許可を付与する場合は、次の点に注意してください。
-
Amazon Redshift からデータをインポートする場合、データベースユーザー名にプレフィックス
sagemaker_access
を付ける必要があります。 -
この管理ポリシーは、名前に
SageMaker
、SageMaker
、sagemaker
、aws-glue
のいずれかが含まれるバケットへのアクセス許可のみを付与します。Data Wrangler を使用して、名前にこれらのフレーズを含めずに S3 バケットからインポートする場合は、このページの最後のセクションを参照して、S3 バケットにアクセスするアクセス許可をIAMエンティティに付与する方法について説明します。
セキュリティニーズが高い場合は、このセクションのポリシーをIAMエンティティにアタッチして、Data Wrangler を使用するために必要なアクセス許可を付与できます。
Amazon Redshift または Athena に Data Wrangler からIAMロールをインポートする必要があるデータセットがある場合は、これらのリソースにアクセスするには、そのエンティティにポリシーを追加する必要があります。次のポリシーは、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ロールに基盤となる 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 からデータをインポートするには、使用されている AWS リージョンデータラングラーのデフォルトの Amazon S3 バケットで、次のプレフィックスにアクセスするアクセス許可をIAMロールに付与する必要があります: 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 ファイルを保存します。詳細については、「[Export] (エクスポート)」を参照してください。
次のようなポリシーを使用して、前述したアクセス許可を付与します。
{ "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
" ] } ] }
Studio を使用する SageMakerためのアクセス許可を付与するポリシーの例
Studio Classic インスタンスのセットアップに使用できるIAM実行ロールを作成するには、次のようなポリシーを使用します。
{ "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 管理者が 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 は命名規則が sagemaker-region-account number
の Amazon S3 バケットを使用します。例えば、アカウント番号が 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 暗号化を使用するオブジェクトがあることを指定します。
-
Data Wrangler からエクスポートするデータを暗号化するための AWS KMS キーの指定。
データエクスポートページで、AWS KMS キー ID または ARNの値を指定します。
AWS KMS キーの使用の詳細については、「 (SSE-KMS) に保存 AWSAWS Key Management Service されている AWS KMS キーを使用したサーバー側の暗号化を使用したデータの保護」を参照してください。
Amazon アクセス AppFlow 許可
転送を実行するときは、転送を実行するアクセス許可を持つIAMロールを指定する必要があります。Data Wrangler を使用するアクセス許可があるロールと同じIAMロールを使用できます。デフォルトでは、Data Wrangler へのアクセスに使用するIAMロールは ですSageMakerExecutionRole
。
IAM ロールには、次のアクセス許可が必要です。
-
Amazon へのアクセス許可 AppFlow
-
AWS Glue データカタログへのアクセス許可
-
が利用可能なデータソースを検出 AWS Glue するためのアクセス許可
転送を実行すると、Amazon は転送からのメタデータを AWS Glue データカタログに AppFlow 保存します。Data Wrangler はカタログのメタデータを使用して、クエリやインポートが可能かどうかを判断します。
Amazon にアクセス許可を追加するには AppFlow、IAMロールに AmazonAppFlowFullAccess
AWS マネージドポリシーを追加します。ポリシーの追加の詳細については、IAM「ID アクセス許可の追加または削除」を参照してください。
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 は、転送したデータをインポートするために AWS Glue と Data Wrangler にアクセス AppFlow する必要があります。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 AppFlow に Amazon データを表示するには、次のポリシーを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 を実行する UI アプリケーションです。Data Wrangler EC2インスタンスではない Amazon インスタンスでは、Data Wrangler を実行するためにライフサイクル設定を変更する必要があります。ライフサイクル設定は、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 ドメインまたはユーザープロファイルにライフサイクル設定をアタッチする方法を示しています。
ライフサイクル設定を作成またはアタッチしているときに、エラーが発生する可能性があります。ライフサイクル設定エラーのデバッグについては、「KernelGateway アプリケーション障害」を参照してください。