Amazon SageMaker AI のアイデンティティベースポリシーの例
IAM ユーザーとロールには、デフォルトでは SageMaker AI リソースを作成したり変更したりするアクセス許可はありません。AWS マネジメントコンソール、AWS CLI、または AWS API を使用してタスクを実行することもできません。IAM 管理者は、ユーザーとロールに必要な、指定されたリソースで特定の API オペレーションを実行する権限をユーザーとロールに付与する IAM ポリシーを作成する必要があります。続いて、管理者はそれらの権限が必要な IAM ユーザーまたはグループにそのポリシーをアタッチする必要があります。IAM ユーザーまたはグループにポリシーをアタッチする方法については、「Service Authorization Reference」の「IAM ID のアクセス許可の追加および削除」を参照してください。
これらのサンプル JSON ポリシードキュメントを使用して IAM アイデンティティベースのポリシーを作成する方法については、「Creating Policies on the JSON Tab」を参照してください。
トピック
ポリシーに関するベストプラクティス
アイデンティティベースのポリシーは、ユーザーのアカウントで SageMaker AI リソースを作成、アクセス、または削除できるどうかを決定します。これらのアクションを実行すると、AWS アカウントに料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
-
AWS マネージドポリシーを使用して開始し、最小特権の許可に移行する – ユーザーとワークロードへの許可の付与を開始するには、多くの一般的なユースケースのために許可を付与する AWS マネージドポリシーを使用します。これらは AWS アカウントで使用できます。ユースケース別に AWS カスタマーマネージドポリシーを定義して、マネージドポリシーを絞り込むことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWS マネージドポリシー」または「ジョブ機能の AWS マネージドポリシー」を参照してください。
-
最小特権を適用する – IAM ポリシーで許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、「IAM ユーザーガイド」の「IAM でのポリシーとアクセス許可」を参照してください。
-
IAM ポリシーで条件を使用してアクセスをさらに制限する - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。また、CloudFormation などの特定の AWS のサービス を介して使用する場合、条件を使用してサービスアクションへのアクセスを許可することもできます。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素:条件」を参照してください。
-
IAM Access Analyzer を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する - IAM Access Analyzer は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、「IAM ユーザーガイド」の「IAM Access Analyzer でポリシーを検証する」を参照してください。
-
多要素認証 (MFA) を要求する – AWS アカウントで IAM ユーザーまたはルートユーザーを要求するシナリオがある場合は、セキュリティを強化するために MFA をオンにします。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、「IAM ユーザーガイド」の「MFA を使用した安全な API アクセス」を参照してください。
IAM でのベストプラクティスの詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。
SageMaker AI コンソールを使用する
Amazon SageMaker AI コンソールにアクセスするには、最小限のアクセス許可のセットが必要です。このようなアクセス許可により、AWS アカウントの SageMaker AI リソースの詳細を一覧表示して確認できます。最小限必要な許可よりも厳しい制限のアイデンティティベースのポリシーを作成すると、そのポリシーを持つエンティティではコンソールが適切に機能しません。これには、そのポリシーを持つユーザーまたはロールが含まれます。
このようなエンティティが SageMaker AI コンソールを使用できるようにするには、エンティティに次の AWS マネージドポリシーもアタッチします。詳細については、「Service Authorization Reference」の「Adding Permissions to a User」を参照してください。
AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソール許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。
トピック
Amazon SageMaker AI コンソールを使用するために必要なアクセス許可
アクセス許可のリファレンス表は、Amazon SageMaker AI API オペレーションとそれらの各オペレーションに必要なアクセス許可を説明しています。Amazon SageMaker API オペレーションの詳細については、「Amazon SageMaker AI API アクセス許可: アクション、アクセス許可、リソースの参照」を参照してください。
Amazon SageMaker AI コンソールを使用するには、追加のアクションのためのアクセス許可を付与する必要があります。具体的には、ec2 アクションにサブネット、VPC、セキュリティグループを表示することを許可する、アクセス許可がコンソールに必要です。オプションで、CreateNotebook、CreateTrainingJob、CreateModel などのタスク用の実行ロールを作成する、アクセス許可がコンソールに必要です。これらのアクセス許可に次のアクセス許可ポリシーを付与します。
Amazon SageMaker Ground Truth コンソールを使用するために必要なアクセス許可
Amazon SageMaker Ground Truth コンソールを使用するには、追加のリソースのためのアクセス許可を付与する必要があります。具体的には、コンソールには以下のアクセス許可が必要です。
-
サブスクリプションを表示する AWS Marketplace
-
プライベートワークフォースを管理する Amazon Cognito オペレーション
-
入出力ファイルにアクセスするための Amazon S3 アクション
-
関数を一覧表示して呼び出す AWS Lambda アクション
これらのアクセス許可に次のアクセス許可ポリシーを付与します。
Amazon Augmented AI (プレビュー) コンソールを使用するために必要なアクセス許可
Augmented AI コンソールを使用するには、追加のリソースのためのアクセス許可を付与する必要があります。これらのアクセス許可に次のアクセス許可ポリシーを付与します。
自分の権限の表示をユーザーに許可する
この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を IAM ユーザーに許可するポリシーの作成方法を示します。このポリシーには、コンソールで、または AWS CLI か AWS API を使用してプログラム的に、このアクションを完了する権限が含まれています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }
条件キーを使用して SageMaker AI リソースの作成を制御する
SageMaker AI 固有の条件キーを使用して、SageMaker AI リソースの作成に対するきめ細かなアクセスを制御します。IAM ポリシーでの条件キーの使用の詳細については、IAM ユーザーガイドの「IAM JSON ポリシーエレメント: 条件」を参照してください。
条件キー、関連する API アクション、関連ドキュメントへのリンクは、「サービス承認リファレンス」の「SageMaker AI の条件キー」に記載されています。
次の例は、SageMaker AI 条件キーを使ってアクセスを制御する方法を説明しています。
トピック
ファイルシステム条件キーを使用して SageMaker AI リソースへのアクセスを制御する
SageMaker AI トレーニングは、トレーニングアルゴリズムを実行するための安全なインフラストラクチャを提供しますが、場合によっては、多層防御を強化することが必要になることがあります。例えば、アルゴリズムで信頼されていないコードを実行するリスクを最小限に抑えます。または、組織に固有のセキュリティの義務があります。これらのシナリオでは、IAM ポリシーの条件要素でサービス固有の条件キーを使用して、ユーザーの範囲を次のとおり絞り込めます。
-
特定のファイルシステム
-
ディレクトリ
-
アクセスモード (読み取り/書き込み、読み取り専用)
-
セキュリティグループ
IAM ユーザーを特定のディレクトリとアクセスモードに制限する
以下のポリシーでは、EFS ファイルシステムの /sagemaker/xgboost-dm/train ディレクトリと /sagemaker/xgboost-dm/validation ディレクトリにアクセスできるユーザーを ro (読み取り専用) アクセスモードに制限します。
注記
ディレクトリが許可されると、そのすべてのサブディレクトリにもトレーニングアルゴリズムからアクセスできます。POSIX アクセス許可は無視されます。
ユーザーを特定のファイルシステムに制限する
悪意のあるアルゴリズムがユーザースペースクライアントを使用してアカウント内のファイルシステムに直接アクセスすることを回避するために、ネットワークトラフィックを制限できます。このようなトラフィックを制限するには、特定のセキュリティグループからの受信のみを許可します。次の例では、 ユーザーは指定されたセキュリティグループのみを使用してファイルシステムにアクセスできます。
この例では、アルゴリズムを特定のファイルシステムに制限できます。ただし、アルゴリズムがユーザースペースクライアントを使用して、ファイルシステム内のディレクトリにアクセスすることは回避できません。この問題を解消するには、以下を実行します。
-
ユーザーのアクセスを信頼するデータのみがファイルシステムに含まれていることを確認する
-
承認された ECR リポジトリのアルゴリズムを使ってトレーニングジョブを起動できるユーザーを制限する IAM ロールを作成します。
SageMaker AIでロールを使用する方法の詳細については、「SageMaker AI ロール」を参照してください。
トレーニングを特定の VPC に制限する
Amazon VPC 内からトレーニングジョブを作成する AWS ユーザーを制限します。トレーニングジョブが VPC 内で作成されたら、VPC フローログを使用して、トレーニングクラスターとの間のすべてのトラフィックをモニタリングします。VPC フローログの使用方法については、Amazon Virtual Private Cloud ユーザーガイドの「VPC フローログ」を参照してください。
次のポリシーでは、トレーニングジョブが、VPC 内から CreateTrainingJob を呼び出すユーザーによって作成されるよう強制します。
Ground Truth ラベリングジョブと Amazon A2I の人間によるレビューワークフローのワークフォースタイプへのアクセスを制限する
Amazon SageMaker Ground Truth と Amazon Augmented AI の作業チームは、次の 3 つのワークフォースタイプのいずれかに分類されます。
-
パブリック (Amazon Mechanical Turk を使用)
-
プライベート
-
ベンダー
これらのタイプのいずれかまたは作業チームの ARN を使用して、特定の作業チームへのユーザーアクセスを制限できます。これを行うには、sagemaker:WorkteamType 条件キーおよび/または sagemaker:WorkteamArn 条件キーを使用します。sagemaker:WorkteamType 条件キーには、文字列条件演算子を使用します。sagemaker:WorkteamArn 条件キーには、Amazon リソースネーム (ARN) 条件演算子を使用します。ユーザーが制限された作業チームでラベリングジョブを作成しようとすると、SageMaker AI からアクセス拒否エラーが返されます。
次のポリシーは、適切な条件演算子と有効な条件値を使用して sagemaker:WorkteamType 条件キーと sagemaker:WorkteamArn 条件キーを使用するさまざまな方法を説明しています。
以下の例では、sagemaker:WorkteamType 条件キーと StringEquals 条件演算子を使用して、パブリック作業チームへのアクセスを制限しています。条件値の形式は です。workforcetype-crowdworkforcetype は public、private、または vendor に置き換えます。
以下のポリシーは、sagemaker:WorkteamArn 条件キーを使用してパブリック作業チームへのアクセスを制限する方法を示しています。最初の例は、その条件キーを作業チーム ARN の有効な IAM regex-variant および ArnLike 条件演算子と共に使う方法を示しています。2 番目の例は、その条件キーを ArnEquals 条件演算子および作業チーム ARN と共に使用する方法を示しています。
入力データの暗号化を適用する
次のポリシーは、作成時に sagemaker:VolumeKmsKey 条件キーを使用して入力データを暗号化するための AWS KMS キーをユーザーが指定することを制限します。
-
トレーニング
-
ハイパーパラメータチューニング
-
ラベリングジョブ
トレーニングジョブのネットワーク分離を適用する
次のポリシーでは、sagemaker:NetworkIsolation 条件キーを使用してトレーニングジョブを作成するときに、ネットワーク分離を可能にするユーザーを制限します。
トレーニングジョブに特定のインスタンスタイプを適用する
次のポリシーでは、sagemaker:InstanceTypes 条件キーを使用してトレーニングジョブを作成するときに、特定のインスタンスタイプを使用できるユーザーを制限します。
ノートブックインスタンス作成でのインターネットアクセスとルートアクセスを無効にする
ノートブックインスタンスへのインターネットアクセスとルートアクセスのいずれも無効にすることで、それらの安全性を高めることができます。ノートブックインスタンスへのルートアクセスを制御する方法については、「SageMaker ノートブックインスタンスへのルートアクセスを制御する」を参照してください。ノートブックインスタンスのインターネットアクセスを無効にする方法については、「VPC 内のノートブックインスタンスを外部リソースに接続する」を参照してください。
次のポリシーでは、インスタンスの作成時にネットワークアクセスを無効にしたり、ノートブックインスタンスの作成時や更新時にルートアクセスを無効にしたりするようユーザーに要求します。
アイデンティティベースのポリシーを使用して SageMaker AI API へのアクセスを制御する
SageMaker AI API コール、SageMaker AI でホストされたエンドポイントへのコールへのアクセスを制御するには、アイデンティティベースの IAM ポリシーを使用します。
SageMaker AI API とランタイムへのアクセスを VPC 内からの呼び出しに制限する
VPC にインターフェイスエンドポイントを設定すると、VPC 外のユーザーがインターネット経由で SageMaker AI API やランタイムに接続できるようになります。これを回避するには、VPC 内からの呼び出しへのアクセスを制限する IAM ポリシーをアタッチします。このような呼び出しは、SageMaker AI リソースにアクセスできるすべてのユーザーとグループに制限する必要があります。SageMaker AI API およびランタイムの VPC インターフェイスエンドポイントの作成については、「VPC 内で SageMaker AI に接続する」を参照してください。
重要
次のいずれかに似た IAM ポリシーを適用すると、ユーザーは指定された SageMaker AI API にコンソールからアクセスできなくなります。
アクセスを VPC 内からの接続のみに制限するには、アクセスを制限する AWS Identity and Access Management ポリシーを作成します。このアクセスは、VPC 内からの呼び出しのみに制限する必要があります。次に、SageMaker AI API またはランタイムへのアクセスに使用されるすべての AWS Identity and Access Management ユーザー、グループ、ロールにそのポリシーを追加します。
注記
このポリシーでは、インターフェイスのエンドポイントを作成したサブネット内の発信者にのみ接続を許可します。
API へのアクセスをインターフェイスエンドポイントを使用して行われた呼び出しのみに制限するには、aws:SourceVpc の代わりに aws:SourceVpce 条件キーを使用します。
SageMaker AI API とランタイムコールへのアクセスを IP アドレスで制限する
SageMaker AI API コールとランタイム呼び出しへのアクセスを、指定したリスト内の IP アドレスからのみ許可することができます。これを行うには、呼び出しがリスト内の IP アドレスからのものでない限り、API へのアクセスを拒否する IAM ポリシーを作成します。次に、API またはランタイムへのアクセスに使用されるすべての AWS Identity and Access Management ユーザー、グループ、またはロールにこのポリシーをアタッチします。IAM ポリシーの作成の詳細については、AWS Identity and Access Management ユーザーガイドの「IAM ポリシーの作成」を参照してください。
API コールにアクセスできる IP アドレスのリストを指定するには、以下を使用します。
-
IpAddress条件演算子 -
aws:SourceIP条件コンテキストキー
IAM 条件演算子の詳細については、AWS Identity and Access Management ユーザーガイドの「IAM JSON ポリシーエレメント: 条件演算子」を参照してください。IAM 条件コンテキストキーの詳細については、「AWS グローバル条件コンテキストキー」を参照してください。
たとえば、次のポリシーでは、192.0.2.0 - 192.0.2.255 および 203.0.113.0 - 203.0.113.255 の範囲の IP アドレスからのみ、CreateTrainingJob へのアクセスが許可されます。
ノートブックインスタンスへのアクセスを IP アドレスで制限する
ノートブックインスタンスへのアクセスを指定したリスト内の IP アドレスからのみ許可することができます。これを行うには、呼び出しがリスト内の IP アドレスからのものでない限り、CreatePresignedNotebookInstanceUrl へのアクセスを拒否する IAM ポリシーを作成します。次に、ノートブックインスタンスへのアクセスに使用されるすべての AWS Identity and Access Management ユーザー、グループ、またはロールにこのポリシーをアタッチします。IAM ポリシーの作成の詳細については、AWS Identity and Access Management ユーザーガイドの「IAM ポリシーの作成」を参照してください。
ノートブックインスタンスにアクセスできる IP アドレスのリストを指定するには、以下を使用します。
-
IpAddress条件演算子 -
aws:SourceIP条件コンテキストキー
IAM 条件演算子の詳細については、AWS Identity and Access Management ユーザーガイドの「IAM JSON ポリシーエレメント: 条件演算子」を参照してください。IAM 条件コンテキストキーの詳細については、「AWS グローバル条件コンテキストキー」を参照してください。
たとえば、次のポリシーでは、192.0.2.0 - 192.0.2.255 および 203.0.113.0 - 203.0.113.255 の範囲の IP アドレスからのみノートブックインスタンスへのアクセスが許可されます。
ポリシーは、CreatePresignedNotebookInstanceUrl への呼び出しと、呼び出しが返す URL の両方へのアクセスを制限します。このポリシーは、コンソールでノートブックインスタンスを開くためのアクセスも制限します。このポリシーは、ノートブックインスタンスへの接続を試行するすべての HTTP リクエストと WebSocket フレームに適用されます。
注記
この方法を使って IP アドレスでフィルタリングする方法は、VPC インターフェイスエンドポイントを介して SageMaker AI に接続する場合には互換性がありません。VPC インターフェイスエンドポイントを介して接続するときにノートブックインスタンスへのアクセスを制限する方法については、「VPC インターフェイスエンドポイントを介してノートブックインスタンスに接続する」を参照してください。
タグを使用して SageMaker AI リソースへのアクセスを制御する
IAM ポリシー内のタグを指定して、SageMaker AI リソースのグループへのアクセスを制御します。リソースタグを使用して属性ベースのアクセス制御 (ABAC) を実装できます。タグを使用すると、リソースへのアクセスを特定のユーザーグループに分割することができます。あるチームに 1 つのリソースグループへのアクセス権を、別のチームには別のリソースセットへのアクセス権を割り当てることができます。IAM ポリシーに ResourceTag 条件を設定して、各グループにアクセス権を与えることができます。
注記
タグベースのポリシーでは、以下の API コールは制限されません。
-
DeleteImageVersion
-
DescribeImageVersion
-
ListAlgorithms
-
ListCodeRepositories
-
ListCompilationJobs
-
ListEndpointConfigs
-
ListEndpoints
-
ListFlowDefinitions
-
ListHumanTaskUis
-
ListHyperparameterTuningJobs
-
ListLabelingJobs
-
ListLabelingJobsForWorkteam
-
ListModelPackages
-
ListModels
-
ListNotebookInstanceLifecycleConfigs
-
ListNotebookInstances
-
ListSubscribedWorkteams
-
ListTags
-
ListProcessingJobs
-
ListTrainingJobs
-
ListTrainingJobsForHyperParameterTuningJob
-
ListTransformJobs
-
ListWorkteams
-
[検索]
タグを使用してリソースを分割する方法を理解しやすくするため、簡単な例を示します。例えば、AWS アカウントで DevTeam1 と DevTeam2 という 2 つの異なる IAM グループを定義したとします。10 個のノートブックインスタンスも作成しました。1 つのプロジェクトに 5 つのノートブックインスタンスを使用しています。残りの 5 つは 2 つ目のプロジェクトに使用しています。1 つ目のプロジェクトで使用しているノートブックインスタンスで API コールを行うアクセス許可を DevTeam1 に付与できます。DevTeam2 には、2 つ目のプロジェクトで使用するノートブックインスタンスで API コールを行うよう指定できます。
以下の手順は、タグ追加の概念を理解するのに役立つ簡単な例を示しています。これを使用して、前の段落で説明したソリューションを実装できます。
API コールへのアクセスをコントロールするには (例)
-
最初のプロジェクトに使用されるノートブックインスタンスに、キーが
Project、値がAであるタグを追加します。SageMaker AI リソースへのタグの追加については、「AddTags」を参照してください。 -
2 番目のプロジェクトに使用されるノートブックインスタンスに、キーが
Project、値がBであるタグを追加します。 -
2 番目のプロジェクトで使用されるノートブックインスタンスへのアクセスを拒否する
ResourceTag条件がある IAM ポリシーを作成します。次に、このポリシーをDevTeam1にアタッチします。次のサンプルポリシーでは、キーがProjectで値がBのタグを持つノートブックインスタンスに対するすべての API コールを拒否します。IAM ポリシーを作成して ID にアタッチする方法については、AWS Identity and Access Management ユーザーガイドの「ポリシーを使用したアクセス制御」を参照してください。
-
最初のプロジェクトで使用されるノートブックインスタンスへのアクセスを拒否する
ResourceTag条件がある IAM ポリシーを作成します。次に、このポリシーをDevTeam2にアタッチします。次のサンプルポリシーでは、キーがProjectで値がAのタグを持つノートブックインスタンスに対するすべての API コールを拒否します。
SageMaker AI リソースにタグ付けのアクセス許可を付与する
タグは、特定の AWS リソースに追加できるメタデータラベルです。タグはキー値のペアで構成され、タグを使用すると、次のとおりさまざまなタグ付けのユースケースで、メタデータ属性を使ってリソースに柔軟に注釈付けを行うことができます。
-
検索
-
セキュリティ
-
アクセスコントロール
-
Automation
これらは、アクセス許可とポリシー、サービスクォータ、その他の AWS サービスとの統合で使用できます。タグは、リソースの作成時にユーザーが定義することもでき、AWS が生成することもあります。これは、ユーザーがカスタムタグを手動で指定するか、AWS サービスが自動的にタグを生成するかによって異なります。
-
SageMaker AI のユーザー定義のタグ: ユーザーは、SageMaker SDK、AWS CLI CLI、SageMaker API、SageMaker AI コンソール、または CloudFormation テンプレートを使用して SageMaker AI リソースを作成する際にタグを追加できます。
注記
リソースが後で更新され、タグ値が変更または置換された場合、ユーザー定義のタグは上書きされる場合があります。例えば、{Team: A} で作成されたトレーニングジョブの更新が不適切に行われ、{Team: B} として再度タグ付けされる可能性があります。その結果、許可されたアクセス許可が不適切に割り当てられる可能性があります。このため、ユーザーまたはグループにタグの追加を許可する際は、既存のタグ値を上書きできる可能性があるため、注意が必要です。タグのアクセス許可の範囲を厳密に定義し、IAM 条件を使用してタグ付け機能を制御することがベストプラクティスです。
-
SageMaker AI で AWS が生成したタグ: SageMaker AI は、作成した特定のリソースに自動的にタグ付けします。例えば、Studio と Studio Classic は、作成した SageMaker AI リソースに
sagemaker:domain-arnタグを自動的に割り当てます。ドメイン ARN を使用して新しいリソースにタグ付けすると、トレーニングジョブ、モデル、エンドポイントなどの SageMaker AI リソースがどのように生成されたかを追跡できます。よりきめ細かい制御と追跡を行うには、新しいリソースには次のとおりの追加のタグ付けを行います。-
sagemaker:user-profile-arn- リソースを作成したユーザープロファイルの ARN。これにより、特定のユーザーが作成したリソースを追跡できます。 -
sagemaker:space-arn- リソースが作成されたスペースの ARN。これにより、スペースごとにリソースをグループ化して分離できます。
注記
AWS が生成したタグは、ユーザーが変更することはできません。
-
AWS リソースのタグ付けに関する一般的な情報とベストプラクティスについては、「Tagging your AWS resources」を参照してください。主なタグ付けのユースケースについては、「Tagging use cases」を参照してください。
SageMaker AI リソースの作成時にタグを追加するアクセス許可を付与する
新しい SageMaker AI リソースの作成時にタグを追加することを、ユーザー (ユーザー定義のタグ) または Studio と Studio Classic (AWS 生成タグ) に許可できます。これを行うには、IAM アクセス許可に次の両方が含まれている必要があります。
-
ベースとなる SageMaker AI は、そのリソースタイプのアクセス許可を作成します。
-
sagemaker:AddTagsアクセス許可
例えば、SageMaker トレーニングジョブを作成してタグ付けすることをユーザーに許可する場合、sagemaker:CreateTrainingJob と sagemaker:AddTags のアクセス許可を付与する必要があります。
重要
Amazon SageMaker Studio または Amazon SageMaker Studio Classic に Amazon SageMaker AI リソースの作成を許可するカスタム IAM ポリシーでは、これらのリソースにタグを追加するアクセス許可も付与する必要があります。Studio と Studio Classic は、作成したリソースに自動的にタグ付けするため、リソースにタグを追加するアクセス許可が必要になります。IAM ポリシーで Studio と Studio Classic によるリソースの作成が許可されていても、タグ付けが許可されていない場合は、リソースを作成しようとしたときに「AccessDenied」エラーが発生する可能性があります。
SageMaker AI リソースを作成するためのアクセス許可を付与する Amazon SageMaker AI 向けの AWS マネージドポリシー には、それらのリソースの作成中にタグを追加するためのアクセス許可もあらかじめ含まれています。
管理者は、次のいずれかにこのような IAM アクセス許可をアタッチします。
-
ユーザー定義のタグについてユーザーに割り当てられた AWS IAM ロール
-
AWS 生成のタグのために Studio または Studio Classic が使用する実行ロール
カスタム IAM ポリシーの作成と適用の手順については、「IAM ポリシーを作成する (コンソール)」を参照してください。
注記
SageMaker AI リソース作成オペレーションのリストは、「SageMaker API ドキュメント」で 「Create」で始まるアクションを検索すると確認できます。CreateTrainingJob や CreateEndpoint などのこれらの create アクションは、新しい SageMaker AI リソースを作成するオペレーションです。
特定の作成アクションにタグ付けのアクセス許可を追加する
元のリソース作成ポリシーに追加の IAM ポリシーをアタッチすると、制約付きの sagemaker:AddTags アクセス許可を付与できます。次のサンプルポリシーでは、sagemaker:AddTags を許可するとはいえ、CreateTrainingJob などの特定の SageMaker AI リソース作成アクションのみに制限しています。
{ "Sid": "AllowAddTagsForCreateOperations", "Effect": "Allow", "Action": [ "sagemaker:AddTags" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:TaggingAction": "CreateTrainingJob" } } }
ポリシー条件では sagemaker:AddTags を特定の作成アクションとともに使用するように制限しています。このアプローチでは、アクセス許可の作成ポリシーは変わらず、追加のポリシーで sagemaker:AddTags アクセスが制限されています。この条件は、範囲をタグ付けが必要な作成アクションに絞り込むことで、包括的な sagemaker:AddTags アクセス許可の付与を回避しています。これにより、特定の SageMaker AI リソース作成のユースケースにのみが許可され、sagemaker:AddTags の最小権限を実装できます。
例: タグのアクセス許可をグローバルに許可して、作成アクションをドメインに限定する
このカスタム IAM ポリシーの例では、最初の 2 つのステートメントは、タグを使用してリソースの作成を追跡する方法を示しています。これにより、すべてのリソースに対する sagemaker:CreateModel アクションと、そのアクションが使用される際のリソースのタグ付けが許可されます。3 番目のステートメントは、タグ値を使用してリソースのオペレーションを制御する方法を示しています。この場合、特定のドメイン ARN でタグ付けされた SageMaker AI リソースの作成を防ぎ、タグ値に基づいてアクセスを制限します。
特に、次のことに注意してください。
-
最初のステートメントでは、任意のリソース (
*) に対してCreateModelアクションを許可します。 -
2 番目のステートメントでは、
sagemaker:TaggingAction条件キーがCreateModelに等しい場合のみ、sagemaker:AddTagsアクションを許可します。これにより、sagemaker:AddTagsアクションは、新しく作成されたモデルのタグ付けに使用される場合にのみ制限されます。 -
3 番目のステートメントは、リソース (
Create*) への SageMaker AI 作成アクション (*) をすべて拒否します。ただしこれは、リソースに特定のドメイン ARN、sagemaker:domain-arnに等しいタグがある場合のみです。domain-arn
{ "Statement":[ { "Effect":"Allow", "Action":[ "sagemaker:CreateModel" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "sagemaker:AddTags" ], "Resource":"*", "Condition":{ "String":{ "sagemaker:TaggingAction":[ "CreateModel" ] } } }, { "Sid":"IsolateDomain", "Effect":"Deny", "Resource":"*", "Action":[ "sagemaker:Create*" ], "Condition":{ "StringEquals":{ "aws:ResourceTag/sagemaker:domain-arn":"domain-arn" } } } ] }
可視性条件を使用して検索可能なリソースへのアクセスを制限する
可視性条件を使用すると、ユーザーのアクセスをAWS アカウント内の特定のタグ付けされたリソースに制限できます。ユーザーは、アクセス許可が付与されたリソースにのみアクセスできます。ユーザーがリソースを検索する際の検索結果を特定のリソースに制限できます。
ユーザーが特定の Amazon SageMaker Studio または Amazon SageMaker Studio Classic ドメインに関連付けられたリソースのみを表示したりオペレーションを実行するように制限する必要がある場合があります。可視性条件を使用すると、ユーザーのアクセスを単一のドメインまたは複数のドメインに制限できます。
{ "Sid": "SageMakerApis", "Effect": "Allow", "Action": "sagemaker:Search", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:SearchVisibilityCondition/Tags.sagemaker:example-domain-arn/EqualsIfExists": "arn:aws:sagemaker:AWS リージョン:111122223333:domain/example-domain-1", "sagemaker:SearchVisibilityCondition/Tags.sagemaker:example-domain-arn/EqualsIfExists": "arn:aws:sagemaker:AWS リージョン:111122223333:domain/example-domain-2" } } }
可視性条件の一般的な形式は、"sagemaker:SearchVisibilityCondition/Tags.key": "value" です。タグ付けされた任意のリソースに対してキー値のペアを指定できます。
{ "MaxResults": number, "NextToken": "string", "Resource": "string", # Required Parameter "SearchExpression": { "Filters": [ { "Name": "string", "Operator": "string", "Value": "string" } ], "NestedFilters": [ { "Filters": [ { "Name": "string", "Operator": "string", "Value": "string" } ], "NestedPropertyName": "string" } ], "Operator": "string", "SubExpressions": [ "SearchExpression" ] }, "IsCrossAccount": "string", "VisibilityConditions" : [ List of conditions for visibility {"Key": "Tags.sagemaker:example-domain-arn", "Value": "arn:aws:sagemaker:AWS リージョン:111122223333:domain/example-domain-1"}, {"Key": "Tags.sagemaker:example-domain-arn", "Value": "arn:aws:sagemaker:AWS リージョン:111122223333:domain/example-domain-2"} ] ], "SortBy": "string", "SortOrder": "string" }
このポリシー内の可視性条件では、ポリシーで指定されているのと同じ「"sagemaker:SearchVisibilityCondition/Tags.key": "value"」形式を使用します。ユーザーは、タグが付けられた任意のリソースに使用するキー値のペアを指定できます。
ユーザーが検索リクエストに VisibilityConditions パラメータを含めても、そのユーザーに適用されるアクセスポリシーに、VisibilityConditions で指定された条件キーに一致するものが含まれていないと、Search リクエストは許可され、実行されます。
ユーザーのSearch API リクエストに VisibilityConditions パラメータが指定されておらず、そのユーザーに適用されるアクセスポリシーに VisibilityConditions に関連する条件キーが含まれている場合、そのユーザーの Search リクエストは拒否されます。