Amazon SageMaker 자격 증명 기반 정책 예제 - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SageMaker 자격 증명 기반 정책 예제

기본적으로 IAM 사용자 및 역할에는 SageMaker 리소스를 생성하거나 수정할 권한이 없습니다. 또한 AWS Management Console AWS CLI, 또는 AWS API를 사용하여 작업을 수행할 수 없습니다. IAM 관리자는 지정된 리소스에서 특정 API 작업을 수행할 수 있는 권한을 사용자와 역할에게 부여하는 IAM 정책을 생성해야 합니다. 그런 다음 관리자는 해당 권한이 필요한 IAM 사용자 또는 그룹에 이러한 정책을 연결해야 합니다. IAM 사용자 또는 그룹에 정책을 연결하는 방법을 알아보려면 IAM 사용 설명서의 IAM 자격 증명 권한 추가 및 제거를 참조하세요.

이 예제 JSON 정책 문서를 사용하여 IAM 자격 증명 기반 정책을 생성하는 방법을 알아보려면 JSON 탭에서 정책 생성을 참조하십시오.

정책 모범 사례

ID 기반 정책은 누군가가 계정에서 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부를 결정합니다. SageMaker 이 작업으로 인해 AWS 계정에 비용이 발생할 수 있습니다. ID 기반 정책을 생성하거나 편집할 때는 다음 지침과 권장 사항을 따릅니다.

  • AWS 관리형 정책으로 시작하여 최소 권한 권한으로 이동 — 사용자와 워크로드에 권한을 부여하려면 여러 일반적인 사용 사례에 권한을 부여하는 AWS 관리형 정책을 사용하세요. 해당 내용은 에서 사용할 수 있습니다. AWS 계정사용 사례에 맞는 AWS 고객 관리형 정책을 정의하여 권한을 더 줄이는 것이 좋습니다. 자세한 내용은 IAM 사용 설명서AWS 관리형 정책 또는 직무에 대한AWS 관리형 정책을 참조하십시오.

  • 최소 권한 적용 – IAM 정책을 사용하여 권한을 설정하는 경우, 태스크를 수행하는 데 필요한 권한만 부여합니다. 이렇게 하려면 최소 권한으로 알려진 특정 조건에서 특정 리소스에 대해 수행할 수 있는 작업을 정의합니다. IAM을 사용하여 권한을 적용하는 방법에 대한 자세한 정보는 IAM 사용 설명서IAM의 정책 및 권한을 참조하십시오.

  • IAM 정책의 조건을 사용하여 액세스 추가 제한 – 정책에 조건을 추가하여 작업 및 리소스에 대한 액세스를 제한할 수 있습니다. 예를 들어 SSL을 사용하여 모든 요청을 전송해야 한다고 지정하는 정책 조건을 작성할 수 있습니다. 예를 AWS 서비스들어 특정 작업을 통해 서비스 작업을 사용하는 경우 조건을 사용하여 서비스 작업에 대한 액세스 권한을 부여할 수도 AWS CloudFormation있습니다. 자세한 내용은 IAM 사용 설명서IAM JSON 정책 요소: 조건을 참조하십시오.

  • IAM Access Analyzer를 통해 IAM 정책을 확인하여 안전하고 기능적인 권한 보장 - IAM Access Analyzer에서는 IAM 정책 언어(JSON)와 모범 사례가 정책에서 준수되도록 신규 및 기존 정책을 확인합니다. IAM Access Analyzer는 100개 이상의 정책 확인 항목과 실행 가능한 추천을 제공하여 안전하고 기능적인 정책을 작성하도록 돕습니다. 자세한 내용은 IAM 사용 설명서IAM Access Analyzer 정책 검증을 참조하십시오.

  • 멀티 팩터 인증 (MFA) 필요 - IAM 사용자 또는 루트 사용자가 필요한 시나리오가 있는 경우 추가 보안을 위해 AWS 계정 MFA를 활성화하십시오. API 작업을 직접적으로 호출할 때 MFA가 필요하면 정책에 MFA 조건을 추가합니다. 자세한 내용은 IAM 사용 설명서MFA 보호 API 액세스 구성을 참조하십시오.

IAM의 모범 사례에 대한 자세한 내용은 IAM 사용 설명서IAM의 보안 모범 사례를 참조하십시오.

콘솔 사용 SageMaker

Amazon SageMaker 콘솔에 액세스하려면 최소 권한 집합이 있어야 합니다. 이러한 권한을 통해 AWS 계정의 SageMaker 리소스에 대한 세부 정보를 나열하고 볼 수 있어야 합니다. 필요한 최소 권한보다 더 제한적인 ID 기반 정책을 만들면 해당 정책을 사용하는 엔티티에 대해 콘솔이 제대로 작동하지 않습니다. 여기에는 해당 정책을 사용하는 사용자 또는 역할이 포함됩니다.

이러한 엔티티가 SageMaker 콘솔을 계속 사용할 수 있도록 하려면 다음 AWS 관리형 정책도 엔티티에 연결해야 합니다. 자세한 내용은 IAM 사용 설명서사용자에게 권한 추가를 참조하세요.

AWS CLI 또는 AWS API만 호출하는 사용자에게 최소 콘솔 권한을 허용할 필요는 없습니다. 그 대신, 수행하려는 API 작업과 일치하는 작업에만 액세스할 수 있도록 합니다.

Amazon SageMaker 콘솔을 사용하는 데 필요한 권한

권한 참조 표에는 Amazon SageMaker API 작업이 나열되어 있으며 각 작업에 필요한 권한이 나와 있습니다. Amazon SageMaker API 작업에 대한 자세한 내용은 을 참조하십시오Amazon SageMaker API 권한: 작업, 권한 및 리소스 참조.

Amazon SageMaker 콘솔을 사용하려면 추가 작업에 대한 권한을 부여해야 합니다. 특히 콘솔의 경우 ec2작업을 통해 서브넷, VPC 및 보안 그룹을 표시하는 권한이 필요합니다. 선택적으로, 콘솔에는 CreateNotebook, CreateTrainingJobCreateModel등의 작업에 대한 실행 역할을 생성할 수 있는 권한이 필요합니다. 다음 권한 정책으로 이러한 권한을 부여합니다.

{ "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 마켓플레이스

  • 프라이빗 인력을 관리하기 위한 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 사용자가 자신의 사용자 ID에 연결된 인라인 및 관리형 정책을 볼 수 있도록 허용하는 정책을 생성하는 방법을 보여줍니다. 이 정책에는 콘솔에서 또는 API를 사용하여 프로그래밍 방식으로 이 작업을 완료할 수 있는 AWS CLI 권한이 포함됩니다. AWS

{ "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 파일 시스템의 /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로 교육 제한

AWS 사용자가 Amazon VPC 내에서 교육 작업을 생성하도록 제한하십시오. 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 사용)

  • 비공개

  • 공급업체

이러한 유형 중 하나 또는 작업 팀 ARN을 사용하여 특정 작업 팀에 대한 사용자 액세스를 제한할 수 있습니다. 이렇게 하려면 sagemaker:WorkteamType 및/또는 sagemaker:WorkteamArn 조건 키를 사용하십시오. sagemaker:WorkteamType 조건 키의 경우 문자열 조건 연산자를 사용합니다. sagemaker:WorkteamArn 조건 키의 경우 Amazon 리소스 이름(ARN) 조건 연산자를 사용합니다. 사용자가 제한된 작업 팀을 사용하여 라벨링 작업을 만들려고 하면 액세스 거부 오류가 SageMaker 반환됩니다.

다음 정책은 적절한 조건 연산자 sagemaker:WorkteamType 및 유효한 sagemaker:WorkteamArn 조건 값과 함께 및 조건 키를 사용하는 다양한 방법을 보여줍니다.

다음 예제에서는 sagemaker:WorkteamType조건 키를 StringEquals조건 연산자와 함께 사용하여 퍼블릭 작업 팀에 대한 액세스를 제한합니다. 형식 workforcetype-crowd의 조건 값을 수락합니다.여기서 workforcetypepublic, private또는 vendor과 같을 수 있습니다.

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

다음 정책은 sagemaker:WorkteamArn조건 키를 사용하여 퍼블릭 작업 팀에 대한 액세스를 제한하는 방법을 보여줍니다. 첫 번째는 이 조건 키를 작업 팀 ARN 및 ArnLike조건 연산자의 유효한 IAM 정규식 변형과 함께 사용하는 방법을 보여줍니다. 두 번째는 이를 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 액셀러레이터를 적용하세요.

다음 정책은 가속기가 제공되는 경우 사용자가 다음과 같은 경우 조건 키를 사용하여 특정 EI (Elastic Inference) 가속기를 사용하도록 제한합니다. 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"] } } } ] }

노트북 인스턴스 생성 시 인터넷 액세스 및 루트 액세스를 강제로 비활성화합니다.

노트북 인스턴스에 대한 인터넷 액세스와 루트 액세스를 비활성화하여 보안을 강화할 수 있습니다. Notebook 인스턴스에 대한 루트 액세스 제어에 대한 자세한 내용은 을 참조하십시오. 노트북 인스턴스에 대한 루트 액세스를 제어합니다. SageMaker Notebook 인스턴스의 인터넷 액세스 비활성화에 대한 자세한 내용은 을 참조하십시오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 호스팅된 엔드포인트에 대한 호출에 대한 액세스를 제어하려면 ID 기반 IAM 정책을 사용하십시오.

SageMaker API 및 런타임에 대한 액세스를 VPC 내에서의 호출로 제한

VPC에 인터페이스 엔드포인트를 설정하면 VPC 외부의 개인이 인터넷을 통해 SageMaker API 및 런타임에 연결할 수 있습니다. 이를 방지하려면 VPC 내에서 들어오는 호출에 대한 액세스를 제한하는 IAM 정책을 연결하십시오. 이러한 호출을 리소스에 액세스할 수 있는 모든 사용자와 그룹으로 제한해야 합니다. SageMaker SageMaker API 및 런타임용 VPC 인터페이스 엔드포인트 생성에 대한 자세한 내용은 을 참조하십시오. VPC SageMaker 내에 연결

중요

다음 중 하나와 유사한 IAM 정책을 적용하는 경우 사용자는 콘솔을 통해 지정된 SageMaker API에 액세스할 수 없습니다.

VPC 내에서 이루어진 연결로만 액세스를 제한하려면 액세스를 제한하는 AWS Identity and Access Management 정책을 만드십시오. 이 액세스는 VPC 내에서 들어오는 호출로만 제한되어야 합니다. 그런 다음 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에 대한 액세스를 거부하는 IAM 정책을 생성해야 합니다. 그런 다음 해당 정책을 API 또는 런타임에 액세스하는 데 사용되는 모든 AWS Identity and Access Management 사용자, 그룹 또는 역할에 연결합니다. IAM 정책 생성에 대한 자세한 내용은AWS Identity and Access Management 사용 설명서의 IAM 정책 생성을 참조하세요.

API 호출에 액세스할 수 있는 IP 주소 목록을 지정하려면 다음을 사용하십시오.

  • IpAddress조건 연산자

  • aws:SourceIP조건 컨텍스트 키

IAM 조건 연산자에 대한 자세한 내용은AWS Identity and Access Management IAM 사용 설명서의 IAM JSON 정책 요소: 조건 연산자를 참조하세요. IAM 조건 컨텍스트 키에 대한 자세한 내용은 AWS 전역 조건 컨텍스트 키를 참조하세요.

예를 들어, 다음 정책은 192.0.2.0-192.0.2.255203.0.113.0-203.0.113.255 범위의 IP 주소에서만 CreateTrainingJob에 액세스하도록 허용합니다.

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

IP 주소를 기준으로 노트북 인스턴스에 대한 액세스를 제한합니다.

지정한 목록에 있는 IP 주소에서만 노트북 인스턴스에 대한 액세스를 허용할 수 있습니다. 이렇게 하려면 목록에 있는 IP 주소에서 호출이 오지 CreatePresignedNotebookInstanceUrl않는 한 액세스를 거부하는 IAM 정책을 만드십시오. 그런 다음 이 정책을 노트북 인스턴스에 액세스하는 데 사용되는 모든 AWS Identity and Access Management 사용자, 그룹 또는 역할에 연결하십시오. IAM 정책 생성에 대한 자세한 내용은AWS Identity and Access Management 사용 설명서의 IAM 정책 생성을 참조하세요.

노트북 인스턴스에 액세스하려는 IP 주소 목록을 지정하려면 다음을 사용하십시오.

  • IpAddress조건 연산자

  • aws:SourceIP조건 컨텍스트 키

IAM 조건 연산자에 대한 자세한 내용은AWS Identity and Access Management IAM 사용 설명서의 IAM JSON 정책 요소: 조건 연산자를 참조하세요. IAM 조건 컨텍스트 키에 대한 자세한 내용은 AWS 전역 조건 컨텍스트 키를 참조하세요.

예를 들어, 다음 정책은 192.0.2.0-192.0.2.255203.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 프레임에 적용됩니다.

참고

VPC 인터페이스 엔드포인트를 SageMaker 통해 연결하는 경우 이 방법을 사용하여 IP 주소를 기준으로 필터링하는 것은 호환되지 않습니다. . VPC 인터페이스 엔드포인트를 통해 연결하는 경우 노트북 인스턴스에 대한 액세스 제한에 대한 자세한 정보는 VPC 인터페이스 엔드포인트를 통해 노트북 인스턴스에 연결섹션을 참조하세요.

태그를 사용하여 SageMaker 리소스에 대한 액세스를 제어합니다.

IAM 정책 내에 태그를 지정하여 SageMaker 리소스 그룹에 대한 액세스를 제어합니다. 태그를 사용하여 속성 기반 액세스 제어(ABAC)를 구현합니다. 태그를 사용하면 리소스에 대한 접근 권한을 특정 사용자 그룹으로 분할할 수 있습니다. 한 팀이 한 리소스 그룹에 액세스할 수 있고 다른 팀이 다른 리소스 세트에 액세스할 수 있도록 할 수 있습니다. IAM 정책에 ResourceTag조건을 제공하여 각 그룹에 액세스를 제공할 수 있습니다.

참고

태그 기반 정책은 다음 API 직접 호출을 제한하지 않습니다.

  • DeleteImageVersion

  • DescribeImageVersion

  • ListAlgorithms

  • ListCodeRepositories

  • ListCompilationJobs

  • ListEndpointConfigs

  • ListEndpoints

  • ListFlowDefinitions

  • ListHumanTaskUis

  • ListHyperparameterTuningJobs

  • ListLabelingJobs

  • ListLabelingJobsForWorkteam

  • ListModelPackages

  • ListModels

  • ListNotebookInstanceLifecycleConfigs

  • ListNotebookInstances

  • ListSubscribedWorkteams

  • ListTags

  • ListProcessingJobs

  • ListTrainingJobs

  • ListTrainingJobsForHyperParameterTuningJob

  • ListTransformJobs

  • ListWorkteams

  • 검색

간단한 예제를 통해 태그를 사용하여 리소스를 분할하는 방법을 이해하는 데 도움이 될 수 있습니다. 계정에 이름이 DevTeam1DevTeam2 인 두 개의 서로 다른 IAM 그룹을 정의했다고 가정해 보겠습니다. AWS 노트북 인스턴스도 10개나 만들었습니다. 하나의 프로젝트에 노트북 인스턴스 중 5개를 사용하고 있습니다. 나머지 5개는 두 번째 프로젝트에 사용하고 있습니다. 첫 번째 프로젝트에 사용 중인 노트북 인스턴스에서 API를 호출할 수 있는 권한을 DevTeam1에 제공할 수 있습니다. 두 번째 프로젝트에 사용되는 노트북 인스턴스에서 API 직접 호출을 수행하도록 DevTeam2에 제공할 수 있습니다.

다음 절차는 태그 추가의 개념을 이해하는 데 도움이 되는 간단한 예제를 제공합니다. 이를 사용하여 이전 섹션에서 설명한 솔루션을 구현할 수 있습니다.

API 직접 호출에 대한 액세스를 제어하려면(예)
  1. 첫 번째 프로젝트에 사용되는 노트북 인스턴스에 Project키와 A값을 사용하여 태그를 추가합니다. SageMaker 리소스에 태그를 추가하는 방법에 대한 자세한 내용은 을 참조하십시오. AddTags

  2. 두 번째 프로젝트에 사용되는 노트북 인스턴스에 Project키와 B값을 사용하여 태그를 추가합니다.

  3. 두 번째 프로젝트에 사용되는 노트북 인스턴스에 대한 액세스를 거부하는 ResourceTag 조건으로 IAM 정책을 생성하십시오. 그런 다음 해당 정책을 에 연결합니다. DevTeam1 다음 예제 정책은 키와 값이 1인 태그가 있는 노트북 인스턴스의 모든 API 호출을 거부합니다. Project B

    { "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 다음 예제 정책은 키와 값이 1인 태그가 있는 노트북 인스턴스의 모든 API 호출을 거부합니다. Project A

    { "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 SDK, AWS CLI CLI, SageMaker API, 콘솔 또는 템플릿을 사용하여 SageMaker 리소스를 생성할 때 태그를 추가할 수 있습니다. SageMaker AWS CloudFormation

    참고

    리소스가 나중에 업데이트되고 태그 값이 변경되거나 교체되는 경우 사용자 정의 태그가 재정의될 수 있습니다. 예를 들어 {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:CreateTrainingJobsagemaker:AddTags 에 대한 권한을 부여해야 합니다.

중요

Amazon SageMaker Studio 또는 Amazon Studio Classic에서 Amazon SageMaker SageMaker 리소스를 생성할 수 있도록 허용하는 사용자 지정 IAM 정책은 해당 리소스에 태그를 추가할 수 있는 권한도 부여해야 합니다. Studio 및 Studio Classic은 생성한 모든 리소스에 자동으로 태그를 지정하기 때문에 리소스에 태그를 추가할 수 있는 권한이 필요합니다. IAM 정책에 따라 Studio 및 Studio Classic에서는 리소스를 생성할 수 있지만 태깅은 허용하지 않는 경우 AccessDenied "“리소스를 생성하려고 할 때 오류가 발생할 수 있습니다.

AWS 아마존 관리형 정책 SageMaker리소스 생성 권한을 부여하는 내용에는 해당 SageMaker 리소스를 생성할 때 태그를 추가할 수 있는 권한이 이미 포함되어 있습니다.

관리자는 다음 중 하나에 이러한 IAM 권한을 부여합니다.

  • AWS 사용자 정의 태그에 대해 사용자에게 할당된 IAM 역할

  • 스튜디오 또는 스튜디오 클래식에서 생성된 태그에 사용하는 실행 역할 AWS

사용자 지정 IAM 정책을 생성하고 적용하는 방법에 대한 지침은 IAM 정책 생성 (콘솔) 을 참조하십시오.

참고

SageMaker 리소스 생성 작업 목록은 SageMaker API 설명서에서 로 시작하는 작업을 검색하여 찾을 수 있습니다. Create 이러한 생성 작업 (예: CreateTrainingJobCreateEndpoint) 은 새 SageMaker 리소스를 생성하는 작업입니다.

특정 생성 작업에 태그 권한을 추가합니다.

원래 리소스 생성 정책에 추가 IAM 정책을 추가하여 제약 조건이 있는 sagemaker:AddTags 권한을 부여합니다. 다음 예제 정책은 다음과 같은 특정 SageMaker 리소스 생성 작업만 sagemaker:AddTags 허용하지만 제한합니다. CreateTrainingJob

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

정책 조건은 특정 생성 작업과 함께 사용할 수 sagemaker:AddTags 있도록 제한됩니다. 이 접근 방식에서는 추가 정책이 제한된 sagemaker:AddTags 액세스를 제공하는 반면 생성 권한 정책은 그대로 유지됩니다. 이 조건은 태그 지정이 필요한 생성 작업으로 범위를 좁게 지정하여 포괄적 sagemaker:AddTags 권한을 방지합니다. 이는 특정 리소스 생성 사용 사례에만 sagemaker:AddTags 허용함으로써 최소 권한을 구현합니다. SageMaker

예: 전 세계적으로 태그 권한 허용 및 도메인에 대한 생성 작업 제한

이 사용자 지정 IAM 정책 예제에서 처음 두 문장은 태그를 사용하여 리소스 생성을 추적하는 방법을 보여줍니다. 이를 통해 모든 리소스에서 sagemaker:CreateModel 작업을 수행하고 해당 작업이 사용될 때 해당 리소스에 태그를 지정할 수 있습니다. 세 번째 설명문은 태그 값을 사용하여 리소스에 대한 작업을 제어하는 방법을 보여줍니다. 이 경우 특정 도메인 ARN으로 태그가 지정된 SageMaker 리소스가 생성되지 않도록 하여 태그 값에 따라 액세스를 제한합니다.

중요 사항:

  • 첫 번째 명령문은 모든 리소스 () 에 대한 CreateModel 작업을 허용합니다. *

  • 두 번째 명령문은 sagemaker:AddTags 작업을 허용하지만 sagemaker:TaggingAction 조건 키가 다음과 같은 경우에만 가능합니다. CreateModel 이렇게 하면 새로 만든 모델에 태그를 지정하는 데 사용되는 경우에만 sagemaker:AddTags 작업이 제한됩니다.

  • 세 번째 명령문은 모든 리소스 (Create*) 에 대한 모든 SageMaker create action (*) 을 거부하지만, 리소스에 특정 도메인 sagemaker:domain-arn domain-arn 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 도메인과 연결된 리소스만 보고 상호 작용하도록 하고 싶을 수도 있습니다. 가시성 조건을 사용하여 단일 도메인 또는 여러 도메인에 대한 액세스를 제한할 수 있습니다.

{ "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 매개변수를 포함했지만 해당 사용자에게 적용되는 액세스 정책에 지정된 일치하는 조건 키가 없는 경우에도 Search 요청은 계속 허용되고 실행됩니다. VisibilityConditions

사용자의 Search API 요청에 VisibilityConditions 매개변수가 지정되지 않았지만 해당 사용자에게 적용되는 액세스 정책에 관련된 조건 키가 포함되어 있는 경우 해당 사용자의 Search 요청은 거부됩니다. VisibilityConditions