翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SageMaker ID ベースのポリシーの例
デフォルトでは、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 Access Analyzer は 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーを作成できるようサポートします。詳細については、「IAM ユーザーガイド」の「IAM Access Analyzer ポリシーの検証」を参照してください。
-
多要素認証 (MFA) を要求する – AWS アカウント で IAM ユーザーまたはルートユーザーを要求するシナリオがある場合は、セキュリティを強化するために 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、セキュリティグループを表示することを許可する、アクセス許可がコンソールに必要です。オプションで、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": "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 ファイルシステム条件キーを使用してリソースへのアクセスを制御する
- トレーニングを特定の VPC に制限する
- Ground Truth ラベリングジョブおよび Amazon A2I ヒューマンレビューワークフローのワークフォースタイプへのアクセスを制限する
- 入力データの暗号化を強制する
- ノートブックインスタンスストレージボリュームの暗号化を強制する
- トレーニングジョブのネットワークの隔離を強制する
- トレーニングジョブに特定のインスタンスタイプを強制する
- トレーニングジョブに特定の EI アクセラレーターを強制する
- ノートブックインスタンスを作成するためにインターネットアクセスとルートアクセスを無効にする
SageMaker ファイルシステム条件キーを使用してリソースへのアクセスを制御する
SageMaker トレーニングは、トレーニングアルゴリズムを実行するための安全なインフラストラクチャを提供しますが、場合によっては、深層防御を実装する必要があります。たとえば、アルゴリズムで信頼されていないコードを実行するリスクを最小限に抑えます。または、組織に固有のセキュリティの義務があります。このようなシナリオでは、IAM ポリシーの Condition 要素でサービス固有の条件キーを使用して、特定のファイルシステム、ディレクトリ、アクセスモード (読み取り/書き込み、読み取り専用)、およびセキュリティグループにアクセスできるユーザーを制限できます。
特定のディレクトリおよびアクセスモードにアクセス可能な IAM ユーザーを制限する
以下のポリシーでは、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:WorkteamType
sagemaker:WorkteamArn
条件キーのいずれかまたは両方を使用します。sagemaker:WorkteamType
条件キーには、文字列条件演算子を使用します。sagemaker:WorkteamArn
条件キーには、Amazon リソースネーム (ARN) 条件演算子を使用します。ユーザーが制限された作業チームでラベリングジョブを作成しようとすると、 SageMaker アクセス拒否エラーが返されます。
以下のポリシーは、sagemaker:WorkteamType
および sagemaker:WorkteamArn
条件キーを適切な条件演算子および有効な条件値と共に使用するさまざまな方法を示しています。
以下の例では、sagemaker:WorkteamType
条件キーと StringEquals
条件演算子を使用して、パブリック作業チームへのアクセスを制限しています。条件値の形式は
です。workforcetype
-crowdworkforcetype
は public
、private
、または 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
" } } } ] }
入力データの暗号化を強制する
次のポリシーでは、AWS KMSsagemaker: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" } } } ] }
ノートブックインスタンスストレージボリュームの暗号化を強制する
次のポリシーでは、AWS KMSsagemaker:VolumeKmsKey
条件キーを使用してノートブックインスタンスを作成または更新するときに、アタッチされたストレージボリュームを暗号化するためのキーを指定するよう、ユーザーに強制します。
{ "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
Condition キーを使ってトレーニングジョブを作成するときに、特定のインスタンスタイプを使うよう、ユーザーに強制します。
{ "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 ポリシーを使用します。
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 ポリシーを作成します。次に、 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 コールおよびランタイムの呼び出しへのアクセスを許可するには、API へのアクセスを拒否する IAM ポリシーをアタッチします。ただし、API やランタイムにアクセスするために使用されるすべてのAWS Identity and Access Managementユーザー、グループ、ロールに対する呼び出しが、リスト内の IP アドレスから行われた場合を除きます。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 アドレスからのみノートブックインスタンスへのアクセスを許可するには、CreatePresignedNotebookInstanceUrl
へのアクセスを拒否する IAM ポリシーをアタッチします。ただし、リスト内の IP アドレスから、ノートブックインスタンスへのアクセスに使用する各 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 インターフェイスエンドポイントを介して接続するときには互換性がありません。 。VPC インターフェイスエンドポイントを介して接続するときにノートブックインスタンスへのアクセスを制限する方法については、「VPC インターフェイスエンドポイントを介してノートブックインスタンスに接続する」を参照してください。
SageMaker タグによるリソースへのアクセスを制御する
SageMaker タグをリソースにアタッチし、IAMResourceTag
ポリシーで条件を指定することで、リソースグループへのアクセスを制御します。
注記
タグベースのポリシーでは、以下の API コールは制限されません。
-
DeleteImageVersion
-
DescribeImageVersion
-
ListAlgorithms
-
ListCodeRepositories
-
ListCompilationJobs
-
ListEndpointConfigs
-
ListEndpoints
-
ListFlowDefinitions
-
ListHumanTaskUis
-
ListHyperparameterTuningJobs
-
ListLabelingJobs
-
ListLabelingJobsForWorkteam
-
ListModelPackages
-
ListModels
-
ListNotebookInstanceLifecycleConfigs
-
ListNotebookInstances
-
ListSubscribedWorkteams
-
ListTags
-
ListProcessingJobs
-
ListTrainingJobs
-
ListTrainingJobsForHyperParameterTuningJob
-
ListTransformJobs
-
ListWorkteams
-
検索
例えば、AWS アカウントで DevTeam1
および DevTeam2
という 2 つの異なる IAM グループを定義したとします。また、10 個のノートブックインスタンスを作成し、そのうちの 5 個を 1 つのプロジェクトに使用して、残りの 5 個を別のプロジェクトに使用するとします。DevTeam1
のメンバーには、最初のプロジェクトに使用されるノートブックインスタンスの API コールの実行を許可し、DevTeam2
のメンバーには、2 番目のプロジェクトに使用されるノートブックインスタンスの API コールの実効を許可します。
API コールへのアクセスをコントロールするには (例)
-
最初のプロジェクトに使用されるノートブックインスタンスに、キーが
Project
、値がA
であるタグを追加します。 SageMaker リソースへのタグの追加については、「」を参照してくださいAddTags
。 -
2 番目のプロジェクトに使用されるノートブックインスタンスに、キーが
Project
、値がB
であるタグを追加します。 -
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 ユーザーガイドの「ポリシーを使用したアクセス制御」を参照してください。
-
最初のプロジェクトで使用されるノートブックインスタンスへのアクセスを拒否する
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": "*" } ] }
API コールにタグの有無を要求する
特定のタグまたは特定のタグ値の有無を要求するには、IAM ポリシーで RequestTag
条件キーを使用します。例えば、IAM グループの任意のメンバーによって作成されたすべてのエンドポイントを、キーが environment
、値が dev
であるタグを使って作成する必要がある場合、次のようにポリシーを作成します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:CreateEndpoint", "Resource": "arn:aws:sagemaker:*:*:endpoint/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "dev" } } } ] }