Amazon SageMaker AI アイデンティティベースのポリシーの例 - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SageMaker AI アイデンティティベースのポリシーの例

デフォルトでは、IAM ユーザーとロールには SageMaker AI リソースを作成または変更するアクセス許可はありません。また、 AWS Management Console、 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 を使用して送信するように指定できます。条件を使用して、 などの特定の を通じてサービスアクションが使用される場合に AWS のサービス、サービスアクションへのアクセスを許可することもできます AWS CloudFormation。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素:条件」を参照してください。

  • IAM Access Analyzer を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する - IAM Access Analyzer は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、「IAM ユーザーガイド」の「IAM Access Analyzer でポリシーを検証する」を参照してください。

  • 多要素認証 (MFA) を要求する – で IAM ユーザーまたはルートユーザーを必要とするシナリオがある場合は AWS アカウント、セキュリティを強化するために 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 AI API オペレーションの詳細については、「」を参照してくださいAmazon SageMaker AI API のアクセス許可: アクション、アクセス許可、リソースリファレンス

Amazon SageMaker AI コンソールを使用するには、追加のアクションのアクセス許可を付与する必要があります。具体的には、ec2 アクションにサブネット、VPC、セキュリティグループを表示することを許可する、アクセス許可がコンソールに必要です。オプションで、CreateNotebookCreateTrainingJobCreateModel などのタスク用の実行ロールを作成する、アクセス許可がコンソールに必要です。これらのアクセス許可に次のアクセス許可ポリシーを付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerApis", "Effect": "Allow", "Action": [ "sagemaker:*" ], "Resource": "*" }, { "Sid": "VpcConfigurationForCreateForms", "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Sid":"KmsKeysForCreateForms", "Effect":"Allow", "Action":[ "kms:DescribeKey", "kms:ListAliases" ], "Resource":"*" }, { "Sid": "AccessAwsMarketplaceSubscriptions", "Effect": "Allow", "Action": [ "aws-marketplace:ViewSubscriptions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "codecommit:BatchGetRepositories", "codecommit:CreateRepository", "codecommit:GetRepository", "codecommit:ListRepositories", "codecommit:ListBranches", "secretsmanager:CreateSecret", "secretsmanager:DescribeSecret", "secretsmanager:ListSecrets" ], "Resource": "*" }, { "Sid":"ListAndCreateExecutionRoles", "Effect":"Allow", "Action":[ "iam:ListRoles", "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy" ], "Resource":"*" }, { "Sid": "DescribeECRMetaData", "Effect": "Allow", "Action": [ "ecr:Describe*" ], "Resource": "*" }, { "Sid": "PassRoleForExecutionRoles", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } } ] }

Amazon SageMaker Ground Truth コンソールを使用するために必要なアクセス許可

Amazon SageMaker Ground Truth コンソールを使用するには、追加のリソースのためのアクセス許可を付与する必要があります。具体的には、コンソールには以下のアクセス許可が必要です。

  • サブスクリプションを表示する AWS Marketplace、

  • プライベートワークフォースを管理する Amazon Cognito オペレーション

  • 入出力ファイルにアクセスするための Amazon S3 アクション

  • AWS Lambda 関数を一覧表示して呼び出すアクション

これらのアクセス許可に次のアクセス許可ポリシーを付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GroundTruthConsole", "Effect": "Allow", "Action": [ "aws-marketplace:DescribeListings", "aws-marketplace:ViewSubscriptions", "cognito-idp:AdminAddUserToGroup", "cognito-idp:AdminCreateUser", "cognito-idp:AdminDeleteUser", "cognito-idp:AdminDisableUser", "cognito-idp:AdminEnableUser", "cognito-idp:AdminRemoveUserFromGroup", "cognito-idp:CreateGroup", "cognito-idp:CreateUserPool", "cognito-idp:CreateUserPoolClient", "cognito-idp:CreateUserPoolDomain", "cognito-idp:DescribeUserPool", "cognito-idp:DescribeUserPoolClient", "cognito-idp:ListGroups", "cognito-idp:ListIdentityProviders", "cognito-idp:ListUsers", "cognito-idp:ListUsersInGroup", "cognito-idp:ListUserPoolClients", "cognito-idp:ListUserPools", "cognito-idp:UpdateUserPool", "cognito-idp:UpdateUserPoolClient", "groundtruthlabeling:DescribeConsoleJob", "groundtruthlabeling:ListDatasetObjects", "groundtruthlabeling:RunFilterOrSampleManifestJob", "groundtruthlabeling:RunGenerateManifestByCrawlingJob", "lambda:InvokeFunction", "lambda:ListFunctions", "s3:GetObject", "s3:PutObject", "s3:SelectObjectContent" ], "Resource": "*" } ] }

Amazon Augmented AI (プレビュー) コンソールを使用するために必要なアクセス許可

Augmented AI コンソールを使用するには、追加のリソースのためのアクセス許可を付与する必要があります。これらのアクセス許可に次のアクセス許可ポリシーを付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:*Algorithm", "sagemaker:*Algorithms", "sagemaker:*App", "sagemaker:*Apps", "sagemaker:*AutoMLJob", "sagemaker:*AutoMLJobs", "sagemaker:*CodeRepositories", "sagemaker:*CodeRepository", "sagemaker:*CompilationJob", "sagemaker:*CompilationJobs", "sagemaker:*Endpoint", "sagemaker:*EndpointConfig", "sagemaker:*EndpointConfigs", "sagemaker:*EndpointWeightsAndCapacities", "sagemaker:*Endpoints", "sagemaker:*Environment", "sagemaker:*EnvironmentVersion", "sagemaker:*EnvironmentVersions", "sagemaker:*Environments", "sagemaker:*Experiment", "sagemaker:*Experiments", "sagemaker:*FlowDefinitions", "sagemaker:*HumanLoop", "sagemaker:*HumanLoops", "sagemaker:*HumanTaskUi", "sagemaker:*HumanTaskUis", "sagemaker:*HyperParameterTuningJob", "sagemaker:*HyperParameterTuningJobs", "sagemaker:*LabelingJob", "sagemaker:*LabelingJobs", "sagemaker:*Metrics", "sagemaker:*Model", "sagemaker:*ModelPackage", "sagemaker:*ModelPackages", "sagemaker:*Models", "sagemaker:*MonitoringExecutions", "sagemaker:*MonitoringSchedule", "sagemaker:*MonitoringSchedules", "sagemaker:*NotebookInstance", "sagemaker:*NotebookInstanceLifecycleConfig", "sagemaker:*NotebookInstanceLifecycleConfigs", "sagemaker:*NotebookInstanceUrl", "sagemaker:*NotebookInstances", "sagemaker:*ProcessingJob", "sagemaker:*ProcessingJobs", "sagemaker:*RenderUiTemplate", "sagemaker:*Search", "sagemaker:*SearchSuggestions", "sagemaker:*Tags", "sagemaker:*TrainingJob", "sagemaker:*TrainingJobs", "sagemaker:*TransformJob", "sagemaker:*TransformJobs", "sagemaker:*Trial", "sagemaker:*TrialComponent", "sagemaker:*TrialComponents", "sagemaker:*Trials", "sagemaker:*Workteam", "sagemaker:*Workteams" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "sagemaker:*FlowDefinition" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "sagemaker:WorkteamType": [ "private-crowd", "vendor-crowd" ] } } }, { "Effect": "Allow", "Action": [ "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeleteScheduledAction", "application-autoscaling:DeregisterScalableTarget", "application-autoscaling:DescribeScalableTargets", "application-autoscaling:DescribeScalingActivities", "application-autoscaling:DescribeScalingPolicies", "application-autoscaling:DescribeScheduledActions", "application-autoscaling:PutScalingPolicy", "application-autoscaling:PutScheduledAction", "application-autoscaling:RegisterScalableTarget", "aws-marketplace:ViewSubscriptions", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:PutMetricAlarm", "cloudwatch:PutMetricData", "codecommit:BatchGetRepositories", "codecommit:CreateRepository", "codecommit:GetRepository", "codecommit:ListBranches", "codecommit:ListRepositories", "cognito-idp:AdminAddUserToGroup", "cognito-idp:AdminCreateUser", "cognito-idp:AdminDeleteUser", "cognito-idp:AdminDisableUser", "cognito-idp:AdminEnableUser", "cognito-idp:AdminRemoveUserFromGroup", "cognito-idp:CreateGroup", "cognito-idp:CreateUserPool", "cognito-idp:CreateUserPoolClient", "cognito-idp:CreateUserPoolDomain", "cognito-idp:DescribeUserPool", "cognito-idp:DescribeUserPoolClient", "cognito-idp:ListGroups", "cognito-idp:ListIdentityProviders", "cognito-idp:ListUserPoolClients", "cognito-idp:ListUserPools", "cognito-idp:ListUsers", "cognito-idp:ListUsersInGroup", "cognito-idp:UpdateUserPool", "cognito-idp:UpdateUserPoolClient", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:CreateVpcEndpoint", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcs", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:CreateRepository", "ecr:Describe*", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "elastic-inference:Connect", "elasticfilesystem:DescribeFileSystems", "elasticfilesystem:DescribeMountTargets", "fsx:DescribeFileSystems", "glue:CreateJob", "glue:DeleteJob", "glue:GetJob", "glue:GetJobRun", "glue:GetJobRuns", "glue:GetJobs", "glue:ResetJobBookmark", "glue:StartJobRun", "glue:UpdateJob", "groundtruthlabeling:*", "iam:ListRoles", "kms:DescribeKey", "kms:ListAliases", "lambda:ListFunctions", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:GetLogEvents", "logs:PutLogEvents", "sns:ListTopics" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:DeleteLogDelivery", "logs:DescribeResourcePolicies", "logs:GetLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:UpdateLogDelivery" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:CompleteLayerUpload", "ecr:BatchDeleteImage", "ecr:UploadLayerPart", "ecr:DeleteRepositoryPolicy", "ecr:InitiateLayerUpload", "ecr:DeleteRepository", "ecr:PutImage" ], "Resource": "arn:aws:ecr:*:*:repository/*sagemaker*" }, { "Effect": "Allow", "Action": [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource": [ "arn:aws:codecommit:*:*:*sagemaker*", "arn:aws:codecommit:*:*:*SageMaker*", "arn:aws:codecommit:*:*:*Sagemaker*" ] }, { "Effect": "Allow", "Action": [ "secretsmanager:ListSecrets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:CreateSecret" ], "Resource": [ "arn:aws:secretsmanager:*:*:secret:AmazonSageMaker-*" ] }, { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue" ], "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/SageMaker": "true" } } }, { "Effect": "Allow", "Action": [ "robomaker:CreateSimulationApplication", "robomaker:DescribeSimulationApplication", "robomaker:DeleteSimulationApplication" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "robomaker:CreateSimulationJob", "robomaker:DescribeSimulationJob", "robomaker:CancelSimulationJob" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:GetBucketCors", "s3:PutBucketCors" ], "Resource": [ "arn:aws:s3:::*SageMaker*", "arn:aws:s3:::*Sagemaker*", "arn:aws:s3:::*sagemaker*", "arn:aws:s3:::*aws-glue*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "s3:ExistingObjectTag/SageMaker": "true" } } }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*SageMaker*", "arn:aws:lambda:*:*:function:*sagemaker*", "arn:aws:lambda:*:*:function:*Sagemaker*", "arn:aws:lambda:*:*:function:*LabelingFunction*" ] }, { "Action": "iam:CreateServiceLinkedRole", "Effect": "Allow", "Resource": "arn:aws:iam::*:role/aws-service-role/sagemaker.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint", "Condition": { "StringLike": { "iam:AWSServiceName": "sagemaker.application-autoscaling.amazonaws.com" } } }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "robomaker.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "sns:Subscribe", "sns:CreateTopic" ], "Resource": [ "arn:aws:sns:*:*:*SageMaker*", "arn:aws:sns:*:*:*Sagemaker*", "arn:aws:sns:*:*:*sagemaker*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringEquals": { "iam:PassedToService": [ "sagemaker.amazonaws.com", "glue.amazonaws.com", "robomaker.amazonaws.com", "states.amazonaws.com" ] } } } ] }

自分の権限の表示をユーザーに許可する

この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を 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 アクセス許可は無視されます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessToElasticFileSystem", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:FileSystemId": "fs-12345678", "sagemaker:FileSystemAccessMode": "ro", "sagemaker:FileSystemType": "EFS", "sagemaker:FileSystemDirectoryPath": "/sagemaker/xgboost-dm/train" } } }, { "Sid": "AccessToElasticFileSystemValidation", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:FileSystemId": "fs-12345678", "sagemaker:FileSystemAccessMode": "ro", "sagemaker:FileSystemType": "EFS", "sagemaker:FileSystemDirectoryPath": "/sagemaker/xgboost-dm/validation" } } } ] }

ユーザーを特定のファイルシステムに制限する

悪意のあるアルゴリズムがユーザースペースクライアントを使用してアカウント内のファイルシステムに直接アクセスすることを回避するために、ネットワークトラフィックを制限できます。このようなトラフィックを制限するには、特定のセキュリティグループからの受信のみを許可します。次の例では、 ユーザーは指定されたセキュリティグループのみを使用してファイルシステムにアクセスできます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessToLustreFileSystem", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:FileSystemId": "fs-12345678", "sagemaker:FileSystemAccessMode": "ro", "sagemaker:FileSystemType": "FSxLustre", "sagemaker:FileSystemDirectoryPath": "/fsx/sagemaker/xgboost/train" }, "ForAllValues:StringEquals": { "sagemaker:VpcSecurityGroupIds": [ "sg-12345678" ] } } } ] }

この例では、アルゴリズムを特定のファイルシステムに制限できます。ただし、アルゴリズムがユーザースペースクライアントを使用して、ファイルシステム内のディレクトリにアクセスすることは回避できません。この問題を解消するには、以下を実行します。

  • ユーザーのアクセスを信頼するデータのみがファイルシステムに含まれていることを確認する

  • 承認された ECR リポジトリのアルゴリズムを使ってトレーニングジョブを起動できるユーザーを制限する IAM ロールを作成します。

SageMaker AI でロールを使用する方法の詳細については、SageMaker AI ロール」を参照してください。

トレーニングを特定の VPC に制限する

Amazon VPC 内からトレーニングジョブを作成するように AWS ユーザーを制限します。トレーニングジョブが VPC 内で作成されたら、VPC フローログを使用して、トレーニングクラスターとの間のすべてのトラフィックをモニタリングします。VPC フローログの使用方法については、Amazon Virtual Private Cloud ユーザーガイドの「VPC フローログ」を参照してください。

次のポリシーでは、トレーニングジョブが、VPC 内から CreateTrainingJob を呼び出すユーザーによって作成されるよう強制します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowFromVpc", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "sagemaker:VpcSubnets": ["subnet-a1234"], "sagemaker:VpcSecurityGroupIds": ["sg12345", "sg-67890"] }, "Null": { "sagemaker:VpcSubnets": "false", "sagemaker:VpcSecurityGroupIds": "false" } } } ] }

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-crowd です。workforcetypepublicprivate、または vendor に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictWorkteamType", "Effect": "Deny", "Action": "sagemaker:CreateLabelingJob", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:WorkteamType": "public-crowd" } } } ] }

以下のポリシーは、sagemaker:WorkteamArn 条件キーを使用してパブリック作業チームへのアクセスを制限する方法を示しています。最初の例は、その条件キーを作業チーム ARN の有効な IAM regex-variant および ArnLike 条件演算子と共に使う方法を示しています。2 番目の例は、その条件キーを ArnEquals 条件演算子および作業チーム ARN と共に使用する方法を示しています。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictWorkteamType", "Effect": "Deny", "Action": "sagemaker:CreateLabelingJob", "Resource": "*", "Condition": { "ArnLike": { "sagemaker:WorkteamArn": "arn:aws:sagemaker:*:*:workteam/public-crowd/*" } } } ] }
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictWorkteamType", "Effect": "Deny", "Action": "sagemaker:CreateLabelingJob", "Resource": "*", "Condition": { "ArnEquals": { "sagemaker:WorkteamArn": "arn:aws:sagemaker:us-west-2:394669845002:workteam/public-crowd/default" } } } ] }

入力データの暗号化を適用する

次のポリシーでは、作成時に sagemaker:VolumeKmsKey条件 AWS KMS キーを使用して入力データを暗号化するキーを指定するようにユーザーを制限します。

  • トレーニング

  • ハイパーパラメータチューニング

  • ラベリングジョブ

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceEncryption", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob", "sagemaker:CreateLabelingJob", "sagemaker:CreateFlowDefiniton" ], "Resource": "*", "Condition": { "ArnEquals": { "sagemaker:VolumeKmsKey": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } } } ] }

トレーニングジョブのネットワーク分離を適用する

次のポリシーでは、sagemaker:NetworkIsolation 条件キーを使用してトレーニングジョブを作成するときに、ネットワーク分離を可能にするユーザーを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceIsolation", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "Bool": { "sagemaker:NetworkIsolation": "true" } } } ] }

トレーニングジョブに特定のインスタンスタイプを適用する

次のポリシーでは、sagemaker:InstanceTypes 条件キーを使用してトレーニングジョブを作成するときに、特定のインスタンスタイプを使用できるユーザーを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceInstanceType", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "ForAllValues:StringLike": { "sagemaker:InstanceTypes": ["ml.c5.*"] } } } ] }

ノートブックインスタンス作成でのインターネットアクセスとルートアクセスを無効にする

ノートブックインスタンスへのインターネットアクセスとルートアクセスのいずれも無効にすることで、それらの安全性を高めることができます。ノートブックインスタンスへのルートアクセスを制御する方法については、「SageMaker ノートブックインスタンスへのルートアクセスを制御する」を参照してください。ノートブックインスタンスのインターネットアクセスを無効にする方法については、「VPC 内のノートブックインスタンスを外部リソースに接続する」を参照してください。

次のポリシーでは、インスタンスの作成時にネットワークアクセスを無効にしたり、ノートブックインスタンスの作成時や更新時にルートアクセスを無効にしたりするようユーザーに要求します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LockDownCreateNotebookInstance", "Effect": "Allow", "Action": [ "sagemaker:CreateNotebookInstance" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:DirectInternetAccess": "Disabled", "sagemaker:RootAccess": "Disabled" }, "Null": { "sagemaker:VpcSubnets": "false", "sagemaker:VpcSecurityGroupIds": "false" } } }, { "Sid": "LockDownUpdateNotebookInstance", "Effect": "Allow", "Action": [ "sagemaker:UpdateNotebookInstance" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:RootAccess": "Disabled" } } } ] }

ID ベースのポリシーを使用して 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 APIsにアクセスできません。

アクセスを VPC 内からの接続のみに制限するには、アクセスを制限する AWS Identity and Access Management ポリシーを作成します。このアクセスは、VPC 内からの呼び出しのみに制限する必要があります。次に、SageMaker AI API またはランタイムへのアクセスに使用されるすべての AWS Identity and Access Management ユーザー、グループ、またはロールにそのポリシーを追加します。

注記

このポリシーでは、インターフェイスのエンドポイントを作成したサブネット内の発信者にのみ接続を許可します。

{ "Id": "api-example-1", "Version": "2012-10-17", "Statement": [ { "Sid": "EnableAPIAccess", "Effect": "Allow", "Action": [ "sagemaker:*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-111bbaaa" } } } ] }

API へのアクセスをインターフェイスエンドポイントを使用して行われた呼び出しのみに制限するには、aws:SourceVpc の代わりに aws:SourceVpce 条件キーを使用します。

{ "Id": "api-example-1", "Version": "2012-10-17", "Statement": [ { "Sid": "EnableAPIAccess", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedNotebookInstanceUrl" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpce": [ "vpce-111bbccc", "vpce-111bbddd" ] } } } ] }

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 へのアクセスが許可されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:CreateTrainingJob", "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }

ノートブックインスタンスへのアクセスを 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 アドレスからのみノートブックインスタンスへのアクセスが許可されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:CreatePresignedNotebookInstanceUrl", "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }

ポリシーは、CreatePresignedNotebookInstanceUrl への呼び出しと、呼び出しが返す URL の両方へのアクセスを制限します。このポリシーは、コンソールでノートブックインスタンスを開くためのアクセスも制限します。このポリシーは、ノートブックインスタンスへの接続を試行するすべての HTTP リクエストと WebSocket フレームに適用されます。

注記

この方法を使用して IP アドレスでフィルタリングすることは、VPC インターフェイスエンドポイントを介して SageMaker AI に接続するときに互換性がありません。VPC インターフェイスエンドポイントを介して接続するときにノートブックインスタンスへのアクセスを制限する方法については、「VPC インターフェイスエンドポイントを介してノートブックインスタンスに接続する」を参照してください。

タグを使用して SageMaker AI リソースへのアクセスを制御する

SageMaker AI リソースのグループへのアクセスを制御するには、IAM ポリシー内でタグを指定します。リソースタグを使用して属性ベースのアクセス制御 (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 アカウントDevTeam2DevTeam1と という名前の 2 つの異なる IAM グループを定義したとします。10 個のノートブックインスタンスも作成しました。1 つのプロジェクトに 5 つのノートブックインスタンスを使用しています。残りの 5 つは 2 つ目のプロジェクトに使用しています。1 つ目のプロジェクトで使用しているノートブックインスタンスで API コールを行うアクセス許可を DevTeam1 に付与できます。DevTeam2 には、2 つ目のプロジェクトで使用するノートブックインスタンスで API コールを行うよう指定できます。

以下の手順は、タグ追加の概念を理解するのに役立つ簡単な例を示しています。これを使用して、前の段落で説明したソリューションを実装できます。

API コールへのアクセスをコントロールするには (例)
  1. 最初のプロジェクトに使用されるノートブックインスタンスに、キーが Project、値が A であるタグを追加します。SageMaker AI リソースにタグを追加する方法については、「」を参照してくださいAddTags

  2. 2 番目のプロジェクトに使用されるノートブックインスタンスに、キーが Project、値が B であるタグを追加します。

  3. 2 番目のプロジェクトで使用されるノートブックインスタンスへのアクセスを拒否する ResourceTag 条件がある IAM ポリシーを作成します。次に、このポリシーを DevTeam1 にアタッチします。次のサンプルポリシーでは、キーが Project で値が B のタグを持つノートブックインスタンスに対するすべての API コールを拒否します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:*", "Resource": "*" }, { "Effect": "Deny", "Action": "sagemaker:*", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ResourceTag/Project": "B" } } }, { "Effect": "Deny", "Action": [ "sagemaker:AddTags", "sagemaker:DeleteTags" ], "Resource": "*" } ] }

    IAM ポリシーを作成して ID にアタッチする方法については、AWS Identity and Access Management ユーザーガイドの「ポリシーを使用したアクセス制御」を参照してください。

  4. 最初のプロジェクトで使用されるノートブックインスタンスへのアクセスを拒否する ResourceTag 条件がある IAM ポリシーを作成します。次に、このポリシーを DevTeam2 にアタッチします。次のサンプルポリシーでは、キーが Project で値が A のタグを持つノートブックインスタンスに対するすべての API コールを拒否します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:*", "Resource": "*" }, { "Effect": "Deny", "Action": "sagemaker:*", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ResourceTag/Project": "A" } } }, { "Effect": "Deny", "Action": [ "sagemaker:AddTags", "sagemaker:DeleteTags" ], "Resource": "*" } ] }

SageMaker AI リソースにタグ付けするためのアクセス許可を付与する

タグは、特定の AWS リソースにアタッチできるメタデータラベルです。タグはキー値のペアで構成され、タグを使用すると、次のとおりさまざまなタグ付けのユースケースで、メタデータ属性を使ってリソースに柔軟に注釈付けを行うことができます。

  • 検索

  • セキュリティ

  • 原価配分

  • アクセスコントロール

  • Automation

これらは、アクセス許可とポリシー、サービスクォータ、および他の AWS サービスとの統合で使用できます。タグは、リソースの作成時にユーザー定義または AWS 生成できます。これは、ユーザーがカスタムタグを手動で指定するか、 AWS サービスが自動的にタグを生成するかによって異なります。

  • SageMaker AI のユーザー定義タグ: ユーザーは、SageMaker SDKs、 CLI、SageMaker APIs、SageMaker AI AWS CLI コンソール、または AWS 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 リソースのタグ付けとベストプラクティスの一般的な情報については、AWS 「リソースのタグ付け」を参照してください。主なタグ付けのユースケースについては、「Tagging use cases」を参照してください。

SageMaker AI リソースの作成時にタグを追加するアクセス許可を付与する

ユーザー (ユーザー定義タグ) または Studio および Studio Classic (AWS 生成されたタグ) に、作成時に新しい SageMaker AI リソースにタグを追加することを許可できます。これを行うには、IAM アクセス許可に次の両方が含まれている必要があります。

  • 基本 SageMaker AI は、そのリソースタイプのアクセス許可を作成します。

  • sagemaker:AddTags アクセス許可

例えば、SageMaker トレーニングジョブを作成してタグ付けすることをユーザーに許可する場合、sagemaker:CreateTrainingJobsagemaker:AddTags のアクセス許可を付与する必要があります。

重要

Amazon SageMaker Studio または Amazon SageMaker Studio Classic が Amazon SageMaker AI リソースを作成できるようにするカスタム IAM ポリシーは、それらのリソースにタグを追加するアクセス許可も付与する必要があります。Studio と Studio Classic は、作成したリソースに自動的にタグ付けするため、リソースにタグを追加するアクセス許可が必要になります。IAM ポリシーで Studio と Studio Classic によるリソースの作成が許可されていても、タグ付けが許可されていない場合は、リソースを作成しようとしたときに「AccessDenied」エラーが発生する可能性があります。

AWS Amazon SageMaker AI の マネージドポリシー SageMaker AI リソースを作成するアクセス許可を付与する には、それらのリソースの作成中にタグを追加するアクセス許可が既に含まれています。

管理者は、次のいずれかにこのような IAM アクセス許可をアタッチします。

  • AWS ユーザー定義タグのユーザーに割り当てられた IAM ロール

  • AWS 生成のタグのために Studio または Studio Classic が使用する実行ロール

カスタム IAM ポリシーの作成と適用の手順については、「IAM ポリシーを作成する (コンソール)」を参照してください。

注記

SageMaker AI リソース作成オペレーションのリストは、SageMaker API ドキュメントで で始まるアクションを検索することで確認できますCreate。これらは、 CreateTrainingJobや などの作成アクションでありCreateEndpoint、新しい SageMaker AI リソースを作成するオペレーションです。

特定の作成アクションにタグ付けのアクセス許可を追加する

元のリソース作成ポリシーに追加の IAM ポリシーをアタッチすると、制約付きの sagemaker:AddTags アクセス許可を付与できます。次のポリシー例では、 を許可しますがsagemaker:AddTags、 などの特定の SageMaker AI リソース作成アクションのみに制限しますCreateTrainingJob

{ "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 リクエストは拒否されます。