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

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

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

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

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

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

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

  • の使用を開始します。AWSマネージドポリシー— SageMaker をすばやく使用するには、AWS管理ポリシーを使用して、従業員に必要なアクセス許可を付与します。これらのポリシーはアカウントですでに有効になっており、AWS によって管理および更新されています 詳細については、IAM ユーザーガイドの「AWS 管理ポリシーを使用したアクセス許可の使用開始」を参照してください。

  • 最小権限を付与する – カスタムポリシーを作成するときは、タスクの実行に必要な許可のみを付与します。最小限のアクセス許可から開始し、必要に応じて追加のアクセス許可を付与します。この方法は、寛容なアクセス許可で始め、後でそれらを強化しようとするよりも安全です。詳細については、IAM ユーザーガイドの「最小限の特権を認める」を参照してください。

  • 機密性の高い操作に MFA を有効にする – 追加セキュリティとして、機密性の高いリソースまたは API 操作にアクセスするために IAM ユーザーに対して、多要素認証 (MFA) の使用を要求します。詳細については、IAM ユーザーガイドの「AWS での多要素認証 (MFA) の使用」を参照してください。

  • 追加のセキュリティとしてポリシー条件を使用する – 実行可能な範囲内で、ID ベースのポリシーでリソースへのアクセスを許可する条件を定義します。例えば、要求が発生しなければならない許容 IP アドレスの範囲を指定するための条件を記述できます。指定された日付または時間範囲内でのみリクエストを許可する条件を書くことも、SSL や MFA の使用を要求することもできます。詳細については、「」を参照してください。IAM JSON ポリシーエレメント: 条件IAM ユーザーガイド

SageMaker コンソールの使用

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

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

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

Amazon SageMaker Console を使用するために必要なアクセス許可

アクセス権限のリファレンス表では、Amazon SageMaker API オペレーションとそれらの各オペレーションに必要なアクセス権限を示しています。Amazon SageMaker API オペレーションの詳細については、「」を参照してください。Amazon SageMaker API のアクセス許可: アクション、アクセス権限、およびリソースのリファレンス

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

{ "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": "AccessAwsMarketplaceSubscritions", "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 コンソールを使用するには、追加のリソースのためのアクセス許可を付与する必要があります。具体的には、コンソールにはAWSMarketplace でサブスクリプションを表示、Amazon Cognito オペレーション、で個人の従業員を管理する Amazon S3 ple Private Workforce、で入力ファイルおよび出力ファイルにアクセスするための Amazon SimAWS 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" ] } } } ] }

ユーザーに自分のアクセス許可の表示を許可

この例では、ユーザー ID にアタッチされたインラインおよび管理ポリシーの表示を 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 JSON ポリシーエレメント: 条件IAM ユーザーガイド

条件キー、関連する API アクション、関連ドキュメントへのリンクはSageMaker の条件キーIAM ユーザーガイド

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

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

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

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

以下のポリシーでは、IAM ユーザーを/sagemaker/xgboost-dm/trainおよび/sagemaker/xgboost-dm/validationEFS ファイルシステムのディレクトリーを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" } } } ] }

特定のファイルシステムへの IAM ユーザーの制限

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

{ "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" ] } } } ] }

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

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

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

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

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

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

以下のポリシーは、トレーニングジョブが、 CreateTrainingJobを VPC 内から実行する必要があります。

{ "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 とアマゾンAugmented AI ワークチームは3つのいずれかに分類されます要員のタイプ: パブリック (Amazon Mechanical Turk)、プライベート、ベンダー。これらのタイプのいずれかまたは作業チームの ARN を使用して、特定の作業チームへの IAM ユーザーアクセスを制限するには、sagemaker:WorkteamTypeおよび/または両方のsagemaker: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" } } } ] }

入力データの暗号化を強制する

次のポリシーでは、IAM ユーザーに対してAWS KMSキーを使用して、トレーニング、ハイパーパラメータの調整、ラベリングのジョブを作成するときに、入力データの暗号化をsagemaker:VolumeKmsKey条件キー:

{ "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" } } } ] }

ノートブックインスタンスストレージボリュームの暗号化を強制する

次のポリシーでは、IAM ユーザーに対してAWS KMSノートブックインスタンスを作成または更新するときに、アタッチされたストレージボリュームを暗号化するには、sagemaker:VolumeKmsKey条件キー:

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

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

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

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

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

次のポリシーでは、トレーニングジョブを作成するときに、IAM ユーザーが特定のインスタンスタイプを使用するよう制限します。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 アクセラレーターを強制する

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

{ "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 のリソースに接続する」を参照してください。

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

{ "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" } } } ] }

アイデンティティベースのポリシーを使用して SageMaker API へのアクセスを制御する

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

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

VPC 内にインターフェイスエンドポイントを設定した場合でも、VPC 外のユーザーは、インターネット経由で SageMaker API およびランタイムに接続できます。ただし、VPC 内から受信するコールへのアクセスを制限する IAM ポリシーを、SageMaker リソースへのアクセス権を持つすべてのユーザーおよびグループにアタッチする場合を除きます。SageMaker API およびランタイムの VPC インターフェイスエンドポイントの作成については、を参照してください。VPC インターフェイスエンドポイント経由で SageMaker Connect

重要

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

VPC 内からの接続のみにアクセスを制限するには、VPC 内からの呼び出しのみにアクセスを制限する AWS Identity and Access Management ポリシーを作成します。次に、そのポリシーをすべてのAWS Identity and Access ManagementSageMaker API またはランタイムへのアクセスに使用されるユーザー、グループ、またはロールについて説明します。

注記

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

{ "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 API およびランタイムコールへのアクセスをIPアドレスで制限する

指定したリスト内の IP アドレスからのみ SageMaker API コールおよびランタイムの呼び出しへのアクセスを許可するには、API へのアクセスを拒否する IAM ポリシーをアタッチします。ただし、ノートブックのインスタンスにアクセスしたインスタンスにアクセスした場合は除きます。AWS Identity and Access ManagementAPI またはランタイムへのアクセスに使用されるユーザー、グループ、またはロールです。IAM ポリシーの作成の詳細については、「」を参照してください。IAM ポリシーを作成するAWS Identity and Access Managementユーザーガイド。API コールにアクセスする IP アドレスのリストを指定するには、IpAddress 条件演算子と aws:SourceIP 条件コンテキストキーを使用します。IAM 条件演算子の詳細については、「」を参照してください。IAM JSON ポリシーエレメント: 条件演算子AWS Identity and Access Managementユーザーガイド。IAM 条件キーの詳細については、「」を参照してください。AWSグローバル条件コンテキストキー

たとえば、次のポリシーでは、 CreateTrainingJob範囲内の IP アドレスからのみ192.0.2.0-192.0.2.255および203.0.113.0-203.0.113.255:

{ "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 ポリシーをアタッチします。 CreatePresignedNotebookInstanceUrlコールがリストの IP アドレスからすべてのAWS Identity and Access Managementノートブックインスタンスへのアクセスに使用されるユーザー、グループ、またはロールです。IAM ポリシーの作成の詳細については、「」を参照してください。IAM ポリシーを作成するAWS Identity and Access Managementユーザーガイド。ノートブックインスタンスにアクセスする IP アドレスのリストを指定するには、IpAddress 条件演算子と aws:SourceIP 条件コンテキストキーを使用します。IAM 条件演算子の詳細については、「」を参照してください。IAM JSON ポリシーエレメント: 条件演算子AWS Identity and Access Managementユーザーガイド。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 リソースへのアクセスを制御する

SageMaker リソースのグループへのアクセスを制御するには、タグをリソースに付加し、ResourceTagの条件を IAM ポリシーに含めます。

注記

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

  • ListAlgorithms

  • ListCodeRepositories

  • ListCompilationJobs

  • ListEndpointConfigs

  • ListEndpoints

  • ListFlowDefinitions

  • ListHumanTaskUis

  • ListHyperparameterTuningJobs

  • ListLabelingJobs

  • ListLabelingJobsForWorkteam

  • ListModelPackages

  • ListModels

  • ListNotebookInstanceLifecycleConfigs

  • ListNotebookInstances

  • ListSubscribedWorkteams

  • ListTags

  • ListProcessingJobs

  • ListTrainingJobs

  • ListTrainingJobsForHyperParameterTuningJob

  • ListTransformJobs

  • ListWorkteams

  • 検索

たとえば、2 つの異なる IAM グループを定義したとします。DevTeam1およびDevTeam2など、AWSアカウント. また、10 個のノートブックインスタンスを作成し、そのうちの 5 個を 1 つのプロジェクトに使用して、残りの 5 個を別のプロジェクトに使用するとします。DevTeam1 のメンバーには、最初のプロジェクトに使用されるノートブックインスタンスの API コールの実行を許可し、DevTeam2 のメンバーには、2 番目のプロジェクトに使用されるノートブックインスタンスの API コールの実効を許可します。

API コールへのアクセスをコントロールするには (例)

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

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

  3. IAM ポリシーを作成するにはResourceTag2 番目のプロジェクトで使用されるノートブックインスタンスへのアクセスを拒否し、そのポリシーをにアタッチします。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. IAM ポリシーを作成するにはResourceTag最初のプロジェクトで使用されるノートブックインスタンスへのアクセスを拒否し、そのポリシーをにアタッチします。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": "*" } ] }

API コールにタグの有無を要求する

特定のタグまたは特定のタグ値の有無を要求するには、RequestTagIAM ポリシー内の条件キーを使用します。たとえば、IAM グループの任意のメンバーによって作成されたすべてのエンドポイントを、キーのタグを使用して作成する必要がある場合は、environment値と valuedevで、次のようにポリシーを作成します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:CreateEndpoint", "Resource": "arn:aws:sagemaker:*:*:endpoint/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "dev" } } } ] }