Amazon SageMaker Identity-Based Policy の例 - Amazon SageMaker

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

Amazon SageMaker Identity-Based Policy の例

デフォルトでは、IAM ユーザーとロールには SageMaker リソースを作成または変更するアクセス許可はありません。また、、 AWS Management Console AWS CLI、または AWS API を使用してタスクを実行することはできません。IAM 管理者は、ユーザーとロールに必要な、指定されたリソースで特定の API オペレーションを実行する権限をユーザーとロールに付与する IAM ポリシーを作成する必要があります。続いて、管理者はそれらの権限が必要な IAM ユーザーまたはグループにそのポリシーをアタッチする必要があります。IAM ユーザーまたはグループにポリシーをアタッチする方法については、IAM ユーザーガイドの「IAM ID のアクセス許可の追加および削除」を参照してください。

JSON ポリシードキュメントのこれらの例を使用して、IAM アイデンティティベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「JSON タブでのポリシーの作成」を参照してください。

ポリシーのベストプラクティス

ID ベースのポリシーは、ユーザーのアカウントで誰かが SageMaker リソースを作成、アクセス、または削除できるどうかを決定します。これらのアクションを実行すると、 AWS アカウントに料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:

  • AWS 管理ポリシーを開始し、最小特権のアクセス許可に移行する – ユーザーとワークロードにアクセス許可を付与するには、多くの一般的なユースケースにアクセス許可を付与する AWS 管理ポリシーを使用します。これらは で使用できます AWS アカウント。ユースケースに固有の AWS カスタマー管理ポリシーを定義して、アクセス許可をさらに減らすことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWS マネージドポリシー」または「AWS ジョブ機能の管理ポリシー」を参照してください。

  • 最小特権を適用する – IAM ポリシーで許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、「IAM ユーザーガイド」の「IAM でのポリシーとアクセス許可」を参照してください。

  • IAM ポリシーで条件を使用してアクセスをさらに制限する - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。条件を使用して、 などの特定の を通じてサービスアクションが使用される場合に AWS のサービス、サービスアクションへのアクセスを許可することもできます AWS CloudFormation。詳細については、「IAM ユーザーガイド」の [IAM JSON policy elements: Condition] (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 コンソールの使用

Amazon SageMaker コンソールにアクセスするには、最小限のアクセス許可のセットが必要です。これらのアクセス許可により、 AWS アカウント内の SageMaker リソースの詳細を一覧表示および表示できます。最小限必要な許可よりも制限が厳しいアイデンティティベースのポリシーを作成すると、そのポリシーを持つエンティティ (ユーザーまたはロール) に対してコンソールが意図したとおりに機能しません。

これらのエンティティが SageMaker 引き続きコンソールを使用できるようにするには、エンティティに次の AWS 管理ポリシーもアタッチします。詳細については、「IAM ユーザーガイド」の「ユーザーへのアクセス許可の追加」を参照してください。

AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソールアクセス許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。

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

アクセス許可リファレンステーブルには、Amazon SageMaker API オペレーションが一覧表示され、各オペレーションに必要なアクセス許可が表示されます。Amazon SageMaker API オペレーションの詳細については、「」を参照してくださいAmazon SageMaker API アクセス許可: アクション、アクセス許可、リソースリファレンス

Amazon SageMaker コンソールを使用するには、追加のアクションのアクセス許可を付与する必要があります。具体的には、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 リソースの作成を制御する

SageMaker固有の条件キーを使用して、きめ細かなアクセスを制御し、 SageMaker リソースの作成を許可します。IAM ポリシーでの条件キーの使用の詳細については、IAM ユーザーガイドの「IAM JSON ポリシーエレメント: 条件」を参照してください。

条件キー、関連する API アクション、および関連ドキュメントへのリンクは、IAM ユーザーガイド「 の条件キー SageMaker」に記載されています。

次の例は、 SageMaker 条件キーを使用してアクセスを制御する方法を示しています。

ファイルシステム条件キーを使用して SageMaker リソースへのアクセスを制御する

SageMaker トレーニングは、トレーニングアルゴリズムを実行するための安全なインフラストラクチャを提供しますが、場合によっては多層防御を強化する必要がある場合があります。例えば、アルゴリズムで信頼されていないコードを実行するリスクを最小限に抑えます。または、組織に固有のセキュリティの義務があります。このようなシナリオでは、IAM ポリシーの Condition 要素でサービス固有の条件キーを使用して、特定のファイルシステム、ディレクトリ、アクセスモード (読み取り/書き込み、読み取り専用)、およびセキュリティグループにアクセスできるユーザーを制限できます。

特定のディレクトリおよびアクセスモードにアクセス可能な IAM ユーザーを制限する

以下のポリシーは、EFS ファイルシステムの EFS/sagemaker/xgboost-dm/trainおよび /sagemaker/xgboost-dm/validation ディレクトリにユーザーを ro (読み取り専用) に制限します AccessMode。

注記

ディレクトリが許可されると、そのすべてのサブディレクトリにもトレーニングアルゴリズムからアクセスできます。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、SageMaker 「ロール」を参照してください。

トレーニングを特定の 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 ワークチームは、パブリック (Amazon Mechanical Turk を使用)、プライベート、ベンダーの 3 つのワークフォースタイプのいずれかに分類されます。これらのタイプのいずれかまたは作業チームの ARN を使用して、特定の作業チームへのユーザーアクセスを制限するには、sagemaker:WorkteamTypesagemaker:WorkteamArn の条件キーのいずれかまたは両方を使用します。sagemaker:WorkteamType 条件キーには、文字列条件演算子を使用します。sagemaker:WorkteamArn 条件キーには、Amazon リソースネーム (ARN) 条件演算子を使用します。ユーザーが制限された作業チームでラベル付けジョブを作成しようとすると、 はアクセス拒否エラー SageMaker を返します。

以下のポリシーは、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:VolumeKmsKey条件 AWS KMS キーを使用してノートブックインスタンスを作成または更新するときに、アタッチされたストレージボリュームを暗号化する キーを指定するようにユーザーを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceEncryption", "Effect": "Allow", "Action": [ "sagemaker:CreateNotebookInstance" ], "Resource": "*", "Condition": { "ArnLike": { "sagemaker:VolumeKmsKey": "*key/volume-kms-key-12345" } } } ] }

トレーニングジョブのネットワークの隔離を強制する

次のポリシーでは、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.*"] } } } ] }

トレーニングジョブに特定の EI アクセラレーターを強制する

次のポリシーでは、ノートブックインスタンスを作成または更新したり、sagemaker:AcceleratorTypes 条件キーを使ってエンドポイント設定を作成したりするときに、特定の Elastic Inference (EI) アクセラレーター (提供されている場合) を使用できるユーザーを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceAcceleratorType", "Effect": "Allow", "Action": [ "sagemaker:CreateNotebookInstance", "sagemaker:UpdateNotebookInstance", "sagemaker:CreateEndpointConfig" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "sagemaker:AcceleratorTypes": ["ml.eia1.medium"] } } } ] }

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

ノートブックインスタンスへのインターネットアクセスとルートアクセスのいずれも無効にすることで、それらの安全性を高めることができます。ノートブックインスタンスへのルートアクセスのコントロールについては、「 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 API へのアクセスを制御する

SageMaker API コールと SageMaker ホストされたエンドポイントへのコールへのアクセスを制御するには、アイデンティティベースの IAM ポリシーを使用します。

SageMaker API とランタイムへのアクセスを VPC 内から呼び出すように制限する

VPC にインターフェイスエンドポイントを設定しても、VPC 外の個人は、VPC 内から発信される呼び出しへのアクセスを SageMaker 、リソースにアクセスできるすべてのユーザーとグループに制限する IAM ポリシーをアタッチしない限り、インターネット経由で SageMaker API とランタイムに接続できます。 SageMaker API とランタイム用の VPC インターフェイスエンドポイントの作成については、「」を参照してくださいVPC SageMaker 内で に接続する

重要

次のいずれかのような IAM ポリシーを適用すると、ユーザーはコンソールから指定された SageMaker APIs にアクセスできなくなります。

VPC 内からの接続のみにアクセスを制限するには、VPC 内からの呼び出しのみにアクセスを制限する AWS Identity and Access Management ポリシーを作成します。次に、 SageMaker 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" ] } } } ] }

IP アドレスによる SageMaker API コールとランタイムコールへのアクセスの制限

指定したリスト内の IP アドレスからのみ SageMaker API コールとランタイム呼び出しへのアクセスを許可するには、呼び出しがリスト内の IP アドレスから API またはランタイムへのアクセスに使用されるすべての AWS Identity and Access Management ユーザー、グループ、またはロールに送信される場合を除き、API へのアクセスを拒否する IAM ポリシーをアタッチします。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 アドレスからのみノートブックインスタンスへのアクセスを許可するには、 へのアクセスを拒否する IAM ポリシーをアタッチします。ただし、呼び出しがリスト内の IP アドレスからノートブックインスタンスへのアクセスに使用されるすべての AWS Identity and Access Management ユーザー、グループ、またはロールに送信されるCreatePresignedNotebookInstanceUrl場合を除きます。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 を介して に接続するときに互換性がありません。VPC インターフェイスエンドポイントを介して接続するときにノートブックインスタンスへのアクセスを制限する方法については、「VPC インターフェイスエンドポイントを介してノートブックインスタンスに接続する」を参照してください。

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

IAM ポリシー内でタグを指定して、 SageMaker リソースグループへのアクセスを制御します。リソースタグを使用して属性ベースのアクセス制御 (ABAC) を実装できます。タグを使用すると、リソースへのアクセスを特定のユーザーグループに分割することができます。あるチームに 1 つのリソースグループへのアクセス権を、別のチームには別のリソースセットへのアクセス権を割り当てることができます。IAM ポリシーに ResourceTag 条件を設定して、各グループにアクセス権を与えることができます。

注記

タグベースのポリシーでは、以下の API コールは制限されません。

  • DeleteImageバージョン

  • DescribeImageバージョン

  • ListAlgorithms

  • ListCodeリポジトリ

  • ListCompilationジョブ

  • ListEndpoint設定

  • ListEndpoints

  • ListFlow定義

  • ListHumanTaskUis

  • ListHyperparameterTuningJobs

  • ListLabelingジョブ

  • ListLabelingJobsForワークチーム

  • ListModelパッケージ

  • ListModels

  • ListNotebookInstanceLifecycle設定

  • ListNotebookインスタンス

  • ListSubscribedワークチーム

  • ListTags

  • ListProcessingジョブ

  • ListTrainingジョブ

  • ListTrainingJobsForHyperParameterTuningJob

  • ListTransformジョブ

  • ListWorkteams

  • 検索

タグを使用してリソースを分割する方法を理解しやすくするため、簡単な例を示します。 AWS アカウントDevTeam2DevTeam1と という 2 つの異なる IAM グループを定義しているとします。10 個のノートブックインスタンスも作成しました。1 つのプロジェクトに 5 つのノートブックインスタンスを使用しています。残りの 5 つは 2 つ目のプロジェクトに使用しています。1 つ目のプロジェクトで使用しているノートブックインスタンスで API コールを行うアクセス許可を DevTeam1 に付与できます。DevTeam2 には、2 つ目のプロジェクトで使用するノートブックインスタンスで API コールを行うよう指定できます。

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

API コールへのアクセスをコントロールするには (例)
  1. 最初のプロジェクトに使用されるノートブックインスタンスに、キーが Project、値が A であるタグを追加します。 SageMaker リソースへのタグの追加については、「」を参照してください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するためのアクセス許可を提供する

タグは、特定の AWS リソースにアタッチできるメタデータラベルです。タグは、検索、セキュリティ、コスト属性 、アクセスコントロール、自動化など、さまざまなタグ付けユースケースのメタデータ属性でリソースに注釈を付ける柔軟な方法を提供するキーと値のペアで構成されます。これらは、アクセス許可とポリシー、サービスクォータ、および他の AWS サービスとの統合で使用できます。タグは、ユーザーがカスタムタグを手動で指定するか、 AWS サービスがタグを自動的に AWS 生成するかに応じて、リソースの作成時にユーザー定義または生成できます。

  • ユーザー定義タグ SageMaker: ユーザーは、 SageMaker SDKs、 AWS CLI CLI、 SageMaker APIs、 SageMaker コンソール、または AWS CloudFormation テンプレートを使用して SageMaker リソースを作成するときにタグを追加できます。

    注記

    ユーザー定義タグは、リソースが後で更新され、タグ値が変更または置き換えられた場合に上書きできます。例えば、{Team: A} で作成されたトレーニングジョブは、{Team: B} として不適切に更新および遅延され、許可されたアクセス許可が不適切に割り当てられる可能性があります。したがって、ユーザーまたはグループが既存のタグ値を上書きできる可能性があるため、タグの追加を許可するときは注意が必要です。タグのアクセス許可の範囲を厳しく設定し、IAM 条件を使用してタグ付け機能を制御することをお勧めします。

  • AWS 生成されたタグ SageMaker: SageMaker は、作成する特定のリソースに自動的にタグ付けします。例えば、Studio と Studio Classic は、作成した SageMaker リソースに sagemaker:domain-arn タグを自動的に割り当てます。ドメイン ARN を使用して新しいリソースにタグを付けると、トレーニングジョブ、モデル、エンドポイントなどの SageMaker リソースがどのように発生するかを追跡できます。よりきめ細かな制御と追跡のために、新しいリソースには次のような追加のタグが付けられます。

    • sagemaker:user-profile-arn - リソースを作成したユーザープロファイルの ARN。これにより、特定のユーザーが作成したリソースを追跡できます。

    • sagemaker:space-arn - リソースが作成されたスペースの ARN。これにより、スペースごとにリソースをグループ化および分離できます。

    注記

    AWS が生成したタグをユーザーが変更することはできません。

AWS リソースのタグ付けとベストプラクティスの一般的な情報については、AWS 「 リソースのタグ付け」を参照してください。主なタグ付けのユースケースについては、「タグ付けのユースケース」を参照してください。

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

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

  • そのリソースタイプのベース SageMaker 作成アクセス許可。

  • アクセスsagemaker:AddTags許可。

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

重要

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

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

管理者は、ユーザー定義タグ用にユーザーに割り当てられた IAM ロール、または AWS 生成されたタグ用に Studio または Studio Classic が使用する実行ロールに、これらの AWS IAM アクセス許可をアタッチします。カスタム IAM ポリシーの作成と適用の手順については、「IAM ポリシーの作成 (コンソール)」を参照してください。

注記

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

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

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

{ "Sid": "AllowAddTagsForCreateOperations", "Effect": "Allow", "Action": [ "sagemaker:AddTags" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:TaggingAction": "CreateTrainingJob" } } }

ポリシー条件はsagemaker:AddTags、特定の作成アクションと一緒に使用される に制限されます。この方法では、アクセス許可の作成ポリシーはそのまま残り、追加のポリシーは制限付きsagemaker:AddTagsアクセスを提供します。条件は、タグ付けが必要な作成アクションに絞り込むことで、一括アクセスsagemaker:AddTags許可を防止します。これにより、特定の SageMakerリソース作成のユースケースにのみ許可sagemaker:AddTagsすることで、 の最小特権が実装されます。

例: タグのアクセス許可をグローバルに許可し、作成アクションをドメインに制限する

カスタム IAM ポリシーのこの例では、最初の 2 つのステートメントは、タグを使用してリソースの作成を追跡する - すべてのリソースに対して sagemaker:CreateModel アクションを許可し、そのアクションが使用されるときにそれらのリソースにタグ付けすることを示しています。3 番目のステートメントは、タグ値を使用してリソースのオペレーションを制御する方法を示しています。この場合、特定のドメイン ARN でタグ付けされた SageMaker リソースの作成が禁止され、タグ値に基づいてアクセスが制限されます。

特に、次のことに注意してください。

  • 最初のステートメントでは、任意のリソース () に対して CreateModelアクションを許可します*

  • 2 番目のステートメントでは、 sagemaker:AddTags アクションを許可しますが、sagemaker:TaggingAction条件キーが に等しい場合のみ許可されますCreateModel。これにより、sagemaker:AddTagsアクションは、新しく作成されたモデルのタグ付けに使用されている場合にのみ に制限されます。

  • 3 番目のステートメントは、リソース (Create*) に対する SageMaker 作成アクション (*) を拒否しますが、リソースに特定のドメイン ARN、 とsagemaker:domain-arn等しいタグがある場合に限りますdomain-arn

{ "Statement":[ { "Effect":"Allow", "Action":[ "sagemaker:CreateModel" ], "Resource":"*" }, { "Effect":"AllowTagging", "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 ドメインに関連付けられたリソースのみをユーザーに表示して操作させたい場合があります。可視性条件を使用して、1 つのドメインまたは複数のドメインへのアクセスを制限できます。

{ "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パラメータを含めても、そのユーザーに適用されるアクセスポリシーに、 で指定された一致する条件キーが含まれていない場合VisibilityConditionsSearchリクエストは引き続き許可され、実行されます。

ユーザーの Search API リクエストでVisibilityConditionsパラメータが指定されていないが、そのユーザーに適用されるアクセスポリシーに に関連する条件キーが含まれている場合VisibilityConditions、そのユーザーのSearchリクエストは拒否されます。