기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SageMaker 자격 증명 기반 정책 예제
기본적으로 IAM 사용자 및 역할에는 SageMaker 리소스를 생성하거나 수정할 수 있는 권한이 없습니다. 또한 AWS Management Console AWS CLI, 또는 를 사용하여 작업을 수행할 수 없습니다 AWS API. IAM 관리자는 사용자 및 역할에 필요한 지정된 리소스에 대해 특정 API 작업을 수행할 수 있는 권한을 부여하는 IAM 정책을 생성해야 합니다. 그런 다음 관리자는 해당 권한이 필요한 IAM 사용자 또는 그룹에 해당 정책을 연결해야 합니다. IAM 사용자 또는 그룹에 정책을 연결하는 방법을 알아보려면 서비스 권한 부여 참조의 IAM ID 권한 추가 및 제거를 참조하세요.
이러한 예제 정책 문서를 사용하여 IAM 자격 증명 기반 JSON 정책을 생성하는 방법을 알아보려면 JSON 탭의 정책 생성을 참조하세요.
주제
정책 모범 사례
자격 증명 기반 정책은 계정에서 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는 정책이 정책 언어(JSON) 및 IAM 모범 사례를 준수하도록 새 정책 및 기존 IAM 정책을 검증합니다. IAM Access Analyzer는 안전하고 기능적인 정책을 작성하는 데 도움이 되는 100개 이상의 정책 확인 및 실행 가능한 권장 사항을 제공합니다. 자세한 내용은 IAM 사용 설명서의 IAM Access Analyzer 정책 검증을 참조하세요.
-
다중 인증 필요(MFA) - 에 IAM 사용자 또는 루트 사용자가 필요한 시나리오가 있는 경우 추가 보안을 MFA 위해 를 AWS 계정켭니다. API 작업을 호출할 MFA 때 를 요구하려면 정책에 MFA 조건을 추가합니다. 자세한 내용은 IAM 사용 설명서의 MFA-보호된 API 액세스 구성을 참조하세요.
의 모범 사례에 대한 자세한 내용은 IAM 사용 설명서의 의 보안 모범 사례를 IAM IAM참조하세요.
SageMaker 콘솔 사용
Amazon SageMaker 콘솔에 액세스하려면 최소 권한 집합이 있어야 합니다. 이러한 권한을 통해 AWS 계정의 SageMaker 리소스에 대한 세부 정보를 나열하고 볼 수 있어야 합니다. 자격 증명 기반 정책을 최소 필수 권한보다 더 제한적으로 생성하면 해당 정책이 있는 엔터티에 대해 콘솔이 제대로 작동하지 않습니다. 여기에는 해당 정책의 사용자 또는 역할이 포함됩니다.
이러한 엔터티가 SageMaker 콘솔을 계속 사용할 수 있도록 하려면 다음 AWS 관리형 정책도 엔터티에 연결해야 합니다. 자세한 내용은 서비스 승인 참조의 사용자에게 권한 추가를 참조하세요.
AWS CLI 또는 에만 전화를 거는 사용자에 대해서는 최소 콘솔 권한을 허용할 필요가 없습니다 AWS API. 대신 수행하려는 API 작업과 일치하는 작업에만 액세스할 수 있도록 허용합니다.
주제
Amazon SageMaker 콘솔을 사용하는 데 필요한 권한
권한 참조 테이블에는 Amazon SageMaker API 작업이 나열되고 각 작업에 필요한 권한이 표시됩니다. Amazon SageMaker API 작업에 대한 자세한 내용은 섹션을 참조하세요Amazon SageMaker API 권한: 작업, 권한 및 리소스 참조.
Amazon SageMaker 콘솔을 사용하려면 추가 작업에 대한 권한을 부여해야 합니다. 특히 콘솔에는 ec2
작업이 서브넷, VPCs및 보안 그룹을 표시할 수 있는 권한이 필요합니다. 선택적으로, 콘솔에는 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 사용자가 사용자 ID에 연결된 인라인 및 관리형 정책을 볼 수 있도록 허용하는 정책을 생성하는 방법을 보여줍니다. 이 정책에는 콘솔에서 또는 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 작업 및 관련 문서에 대한 링크는 서비스 승인 참조의 에 대한 조건 키 SageMaker에 나열됩니다.
다음 예제에서는 SageMaker 조건 키를 사용하여 액세스를 제어하는 방법을 보여줍니다.
주제
파일 시스템 조건 키를 사용하여 SageMaker 리소스에 대한 액세스 제어
SageMaker 훈련은 훈련 알고리즘을 실행할 수 있는 안전한 인프라를 제공하지만, 경우에 따라 심층 방어를 강화해야 할 수도 있습니다. 예를 들어, 알고리즘에서 신뢰할 수 없는 코드를 실행할 위험을 최소화하거나 조직에 특정 보안 권한이 있습니다. 이러한 시나리오의 경우 IAM 정책의 조건 요소에 있는 서비스별 조건 키를 사용하여 다음을 수행할 수 있도록 사용자를 범위로 축소할 수 있습니다.
-
특정 파일 시스템
-
디렉터리
-
액세스 모드(읽기-쓰기, 읽기 전용)
-
보안 그룹
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 흐름 로그를 참조하세요.
다음 정책은 내에서 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 Human Review 워크플로에 대한 인력 유형에 대한 액세스 제한
Amazon SageMaker Ground Truth 및 Amazon Augmented AI 작업 팀은 다음 세 가지 인력 유형 중 하나에 속합니다.
-
퍼블릭(Amazon Mechanical Turk 사용)
-
비공개
-
공급업체
이러한 유형 중 하나 또는 작업 팀 을 사용하여 특정 작업 팀에 대한 사용자 액세스를 제한할 수 있습니다ARN. 이렇게 하려면 sagemaker:WorkteamType
및/또는 sagemaker:WorkteamArn
조건 키를 사용합니다. sagemaker:WorkteamType
조건 키의 경우 문자열 조건 연산자를 사용합니다. sagemaker:WorkteamArn
조건 키에는 Amazon 리소스 이름(ARN) 조건 연산자 를 사용합니다. 사용자가 제한된 작업 팀이 있는 레이블 지정 작업을 생성하려고 하면 는 액세스 거부 오류를 SageMaker 반환합니다.
다음 정책은 적절한 sagemaker:WorkteamArn
조건 연산자 및 유효한 조건 값과 함께 sagemaker:WorkteamType
및 조건 키를 사용하는 다양한 방법을 보여줍니다.
다음 예제에서는 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
조건 키를 사용하여 퍼블릭 작업 팀에 대한 액세스를 제한하는 방법을 보여줍니다. 첫 번째는 작업 팀과 ArnLike
조건 연산자의 유효한 IAM 정규식 변형ARN과 함께 사용하는 방법을 보여줍니다. 두 번째는 ArnEquals
조건 연산자 및 작업 팀 과 함께 사용하는 방법을 보여줍니다ARN.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictWorkteamType", "Effect": "Deny", "Action": "sagemaker:CreateLabelingJob", "Resource": "*", "Condition": { "ArnLike": { "sagemaker:WorkteamArn": "arn:aws:sagemaker:*:*:workteam/public-crowd/*" } } } ] }
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictWorkteamType", "Effect": "Deny", "Action": "sagemaker:CreateLabelingJob", "Resource": "*", "Condition": { "ArnEquals": { "sagemaker:WorkteamArn": "
arn:aws:sagemaker:us-west-2:394669845002:workteam/public-crowd/default
" } } } ] }
입력 데이터의 암호화 적용
다음 정책은 생성 시 sagemaker:VolumeKmsKey
조건 AWS KMS 키를 사용하여 입력 데이터를 암호화하는 키를 지정하도록 사용자를 제한합니다.
-
훈련
-
하이퍼파라미터 튜닝
-
레이블 지정 작업
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceEncryption", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob", "sagemaker:CreateLabelingJob", "sagemaker:CreateFlowDefiniton" ], "Resource": "*", "Condition": { "ArnEquals": { "sagemaker:VolumeKmsKey": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } } } ] }
훈련 작업에 네트워크 격리 적용
다음 정책은 sagemaker:NetworkIsolation
조건 키를 사용하여 훈련 작업을 생성할 때 사용자가 네트워크 격리를 사용하도록 제한합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceIsolation", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "Bool": { "sagemaker:NetworkIsolation": "true" } } } ] }
훈련 작업에 특정 인스턴스 유형 적용
다음 정책은 sagemaker:InstanceTypes
조건 키를 사용하여 훈련 작업을 생성할 때 사용자가 특정 인스턴스 유형을 사용하도록 제한합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceInstanceType", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "ForAllValues:StringLike": { "sagemaker:InstanceTypes": ["ml.c5.*"] } } } ] }
노트북 인스턴스 생성을 위한 인터넷 액세스 및 루트 액세스 비활성화 적용
노트북 인스턴스에 대한 인터넷 액세스와 루트 액세스를 비활성화하여 보안을 강화할 수 있습니다. 노트북 인스턴스에 대한 루트 액세스를 제어하는 방법에 대한 자세한 내용은 섹션을 참조하세요 SageMaker 노트북 인스턴스에 대한 루트 액세스 제어. 노트북 인스턴스에 대한 인터넷 액세스 비활성화에 대한 자세한 내용은 섹션을 참조하세요의 노트북 인스턴스를 외부 리소스VPC에 연결.
다음 정책은 사용자가 인스턴스를 만들 때 네트워크 액세스를 비활성화하고, 노트북 인스턴스를 만들거나 업데이트할 때 루트 액세스를 비활성화하도록 합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LockDownCreateNotebookInstance", "Effect": "Allow", "Action": [ "sagemaker:CreateNotebookInstance" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:DirectInternetAccess": "Disabled", "sagemaker:RootAccess": "Disabled" }, "Null": { "sagemaker:VpcSubnets": "false", "sagemaker:VpcSecurityGroupIds": "false" } } }, { "Sid": "LockDownUpdateNotebookInstance", "Effect": "Allow", "Action": [ "sagemaker:UpdateNotebookInstance" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:RootAccess": "Disabled" } } } ] }
자격 증명 기반 정책을 사용하여 SageMaker API에 대한 액세스 제어
호스팅 SageMaker 엔드포인트에 대한 SageMaker API 호출 및 호출에 대한 액세스를 제어하려면 자격 증명 기반 IAM 정책을 사용합니다.
내 의 호출에 대한 SageMaker API 액세스 및 런타임 제한 VPC
에서 인터페이스 엔드포인트를 설정하면 외부의 VPC개인이 인터넷을 SageMaker API 통해 및 런타임에 연결할 VPC 수 있습니다. 이를 방지하려면 내에서 에서 걸려오는 통화에 대한 액세스를 제한하는 IAM 정책을 연결합니다VPC. 이러한 호출은 SageMaker 리소스에 액세스할 수 있는 모든 사용자 및 그룹으로 제한되어야 합니다. 및 런타임에 SageMaker API 대한 VPC 인터페이스 엔드포인트 생성에 대한 자세한 내용은 섹션을 참조하세요 SageMaker 내 에 연결 VPC.
중요
다음 중 하나와 유사한 IAM 정책을 적용하는 경우 사용자는 콘솔을 통해 지정된 SageMaker APIs 에 액세스할 수 없습니다.
내에서 의 연결에만 대한 액세스를 제한하려면 액세스를 제한하는 AWS Identity and Access Management 정책을 VPC생성합니다. 이 액세스는 내에서 에서 오는 통화로만 제한되어야 합니다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:SourceVpce
조건 키를 사용합니다aws:SourceVpc
.
{ "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 JSON 정책 요소: 조건 연산자를 참조하세요. IAM 조건 컨텍스트 키에 대한 자세한 내용은 AWS 전역 조건 컨텍스트 키 섹션을 참조하세요.
예를 들어, 다음 정책은 192.0.2.0
-192.0.2.255
및 203.0.113.0
-203.0.113.255
범위의 IP 주소에서만 CreateTrainingJob
에 액세스하도록 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:CreateTrainingJob", "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }
IP 주소로 노트북 인스턴스에 대한 액세스 제한
지정한 목록의 IP 주소에서만 노트북 인스턴스에 대한 액세스를 허용할 수 있습니다. 이렇게 하려면 목록의 IP 주소에서 전화가 오지 않는 CreatePresignedNotebookInstanceUrl
한 에 대한 액세스를 거부하는 IAM 정책을 생성합니다. 그런 다음 노트북 인스턴스에 액세스하는 데 사용되는 모든 AWS Identity and Access Management 사용자, 그룹 또는 역할에 이 정책을 연결합니다. IAM 정책 생성에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 IAM 정책 생성을 참조하세요.
노트북 인스턴스에 액세스하려는 IP 주소 목록을 지정하려면 다음을 사용합니다.
-
IpAddress
조건 연산자 -
aws:SourceIP
조건 컨텍스트 키
IAM 조건 연산자에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 IAM JSON 정책 요소: 조건 연산자를 참조하세요. IAM 조건 컨텍스트 키에 대한 자세한 내용은 AWS 전역 조건 컨텍스트 키 섹션을 참조하세요.
예를 들어, 다음 정책은 192.0.2.0
-192.0.2.255
및 203.0.113.0
-203.0.113.255
범위의 IP 주소에서만 노트북 인스턴스에 액세스하도록 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:CreatePresignedNotebookInstanceUrl", "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }
이 정책은 호출이 반환URL하는 CreatePresignedNotebookInstanceUrl
및 에 대한 호출에 대한 액세스를 제한합니다. 또한 콘솔에서 노트북 인스턴스 열기에 대한 액세스도 제한합니다. 노트북 인스턴스에 연결을 시도하는 모든 HTTP 요청 및 WebSocket 프레임에 적용됩니다.
참고
이 방법을 사용하여 IP 주소를 기준으로 필터링하는 것은 VPC 인터페이스 엔드포인트를 SageMaker 통해 에 연결할 때 호환되지 않습니다. 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
-
검색
간단한 예제를 통해 태그를 사용하여 리소스를 분할하는 방법을 이해하는 데 도움이 될 수 있습니다. AWS 계정DevTeam2
에서 DevTeam1
및 라는 두 개의 서로 다른 IAM 그룹을 정의했다고 가정해 보겠습니다. 노트북 인스턴스도 10개나 만들었습니다. 하나의 프로젝트에 노트북 인스턴스 중 5개를 사용하고 있습니다. 나머지 5개는 두 번째 프로젝트에 사용하고 있습니다. 첫 번째 프로젝트에 사용 중인 노트북 인스턴스에서 API 전화를 걸 수 있는 DevTeam1
권한을 제공할 수 있습니다. 두 번째 프로젝트에 사용되는 노트북 인스턴스에 대한 API 호출을 DevTeam2
에 제공할 수 있습니다.
다음 절차는 태그 추가의 개념을 이해하는 데 도움이 되는 간단한 예제를 제공합니다. 이를 사용하여 이전 섹션에서 설명한 솔루션을 구현할 수 있습니다.
API 호출에 대한 액세스를 제어하려면(예)
-
첫 번째 프로젝트에 사용되는 노트북 인스턴스에
Project
키와A
값을 사용하여 태그를 추가합니다. SageMaker 리소스에 태그를 추가하는 방법에 대한 자세한 내용은 섹션을 참조하세요AddTags
. -
두 번째 프로젝트에 사용되는 노트북 인스턴스에
Project
키와B
값을 사용하여 태그를 추가합니다. -
두 번째 프로젝트에 사용되는 노트북 인스턴스에 대한 액세스를 거부하는
ResourceTag
조건으로 IAM 정책을 생성합니다. 그런 다음 해당 정책을 에 연결합니다DevTeam1
. 다음 예제 정책은 키Project
와 값이 인 태그가 있는 노트북 인스턴스의 모든 API 호출을 거부합니다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 정책을 생성하고 자격 증명에 연결하는 방법에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 정책을 사용하여 액세스 제어를 참조하세요.
-
첫 번째 프로젝트에 사용되는 노트북 인스턴스에 대한 액세스를 거부하는
ResourceTag
조건으로 IAM 정책을 생성합니다. 그런 다음 해당 정책을 에 연결합니다DevTeam2
. 다음 예제 정책은 키Project
와 값이 인 태그가 있는 노트북 인스턴스의 모든 API 호출을 거부합니다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 리소스에 연결할 수 있는 메타데이터 레이블입니다. 태그는 다음과 같은 다양한 태그 지정 사용 사례에 대한 메타데이터 속성으로 리소스에 주석을 지정할 수 있는 유연한 방법을 제공하는 키-값 페어로 구성됩니다.
-
search
-
보안
-
액세스 제어
-
자동화
권한 및 정책, 서비스 할당량, 다른 AWS 서비스와의 통합에 사용할 수 있습니다. 태그를 사용자 정의하거나 리소스를 생성할 때 AWS 생성할 수 있습니다. 이는 사용자가 사용자 지정 태그를 수동으로 지정하는지 아니면 AWS 서비스가 태그를 자동으로 생성하는지에 따라 달라집니다.
-
의 사용자 정의 태그 SageMaker: 사용자는 SageMaker SDKs, , AWS CLI CLI, SageMaker APIs SageMaker 콘솔 또는 AWS CloudFormation 템플릿을 사용하여 SageMaker 리소스를 생성할 때 태그를 추가할 수 있습니다.
참고
리소스가 나중에 업데이트되고 태그 값이 변경되거나 대체되는 경우 사용자 정의 태그를 재정의할 수 있습니다. 예를 들어 {Team: A}로 생성된 훈련 작업은 부적절하게 업데이트되고 {Team: B}로 재태그될 수 있습니다. 따라서 허용된 권한이 잘못 할당될 수 있습니다. 따라서 사용자 또는 그룹이 태그를 추가할 수 있도록 허용할 때는 기존 태그 값을 재정의할 수 있으므로 주의해야 합니다. 태그 권한을 엄격하게 범위를 지정하고 IAM 조건을 사용하여 태그 지정 기능을 제어하는 것이 가장 좋습니다.
-
에서 AWS 생성된 태그 SageMaker: SageMaker 에서 생성하는 특정 리소스에 태그를 자동으로 지정합니다. 예를 들어 Studio 및 Studio Classic은 생성한 SageMaker 리소스에
sagemaker:domain-arn
태그를 자동으로 할당합니다. 새 리소스에 도메인에 태그를 지정하면 훈련 작업, 모델 및 엔드포인트와 같은 SageMaker 리소스의 출처를 ARN 추적할 수 있습니다. 더 미세한 제어 및 추적을 위해 새 리소스는 다음과 같은 추가 태그를 받습니다.-
sagemaker:user-profile-arn
- 리소스를 생성한 ARN 사용자 프로필의 입니다. 이를 통해 특정 사용자가 생성한 리소스를 추적할 수 있습니다. -
sagemaker:space-arn
- 리소스ARN가 생성된 공간의 입니다. 이렇게 하면 공간당 리소스를 그룹화하고 격리할 수 있습니다.
참고
AWS 생성된 태그는 사용자가 변경할 수 없습니다.
-
AWS 리소스 태그 지정 및 모범 사례에 대한 일반적인 내용은 AWS 리소스 태그 지정을 참조하세요. 기본 태깅 사용 사례에 대한 자세한 내용은 사용 사례 태깅을 참조하세요.
SageMaker 리소스를 생성할 때 태그를 추가할 수 있는 권한 부여
사용자(사용자 정의 태그 ) 또는 Studio 및 Studio Classic(AWS 생성된 태그 )이 생성 시 새 SageMaker 리소스에 태그를 추가하도록 허용할 수 있습니다. 이렇게 하려면 IAM 권한에 다음 두 가지가 모두 포함되어야 합니다.
-
해당 리소스 유형에 대한 기본 SageMaker 생성 권한입니다.
-
sagemaker:AddTags
권한입니다.
예를 들어 사용자가 SageMaker 훈련 작업을 생성하고 태그를 지정하도록 허용하려면 sagemaker:CreateTrainingJob
및 에 대한 권한을 부여해야 합니다sagemaker:AddTags
.
중요
Amazon SageMaker Studio 또는 Amazon SageMaker Studio Classic이 Amazon SageMaker 리소스를 생성할 수 있도록 허용하는 사용자 지정 IAM 정책도 해당 리소스에 태그를 추가할 수 있는 권한을 부여해야 합니다. Studio 및 Studio Classic은 생성한 리소스에 태그를 자동으로 지정하기 때문에 리소스에 태그를 추가할 수 있는 권한이 필요합니다. IAM 정책에서 Studio 및 Studio Classic이 리소스를 생성하도록 허용하지만 태그 지정은 허용하지 않는 경우 리소스를 생성하려고 할 때 “AccessDenied” 오류가 발생할 수 있습니다.
AWS Amazon용 관리형 정책 SageMaker 는 SageMaker 리소스를 생성할 수 있는 권한을 부여하며 이러한 리소스를 생성하는 동안 태그를 추가할 수 있는 권한이 이미 포함되어 있습니다.
관리자는 다음 중 하나에 이러한 IAM 권한을 연결합니다.
-
AWS IAM 사용자 정의 태그에 대해 사용자에게 할당된 역할
-
Studio 또는 Studio Classic에서 생성된 태그에 AWS 사용하는 실행 역할
사용자 지정 IAM 정책 생성 및 적용에 대한 지침은 IAM 정책 생성(콘솔)을 참조하세요.
참고
SageMaker 리소스 생성 작업 목록은 SageMaker API 설명서에서 로 시작하는 작업을 검색하여 찾을 수 있습니다Create
. CreateTrainingJob
및 와 같은 이러한 생성 작업은 새 SageMaker 리소스를 생성하는 작업CreateEndpoint
입니다.
특정 생성 작업에 태그 권한 추가
원래 리소스 생성 IAM 정책에 추가 정책을 연결하여 제약이 있는 sagemaker:AddTags
권한을 부여합니다. 다음 예제 정책은 를 허용하지만 sagemaker:AddTags
와 같은 특정 SageMaker 리소스 생성 작업으로만 제한합니다CreateTrainingJob
.
{ "Sid": "AllowAddTagsForCreateOperations", "Effect": "Allow", "Action": [ "sagemaker:AddTags" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:TaggingAction": "CreateTrainingJob" } } }
정책 조건은 특정 생성 작업과 함께 sagemaker:AddTags
사용하도록 제한됩니다. 이 접근 방식에서 권한 생성 정책은 그대로 유지되며 추가 정책은 제한된 sagemaker:AddTags
액세스를 제공합니다. 이 조건은 태깅이 필요한 작업을 생성하도록 블랭킷 sagemaker:AddTags
권한을 좁게 조정하여 블랭킷 권한을 방지합니다. 이렇게 하면 특정 SageMaker 리소스 생성 사용 사례에 대해서만 허용sagemaker:AddTags
하여 에 대한 최소 권한이 구현됩니다.
예: 전역적으로 태그 권한 허용 및 도메인으로 작업 생성 제한
사용자 지정 IAM 정책의 이 예제에서 처음 두 문은 태그를 사용하여 리소스 생성을 추적하는 방법을 보여줍니다. 이를 통해 해당 sagemaker:CreateModel
작업이 사용될 때 모든 리소스에 대한 작업과 해당 리소스의 태그 지정을 허용합니다. 세 번째 문은 태그 값을 사용하여 리소스에 대한 작업을 제어하는 방법을 보여줍니다. 이 경우 특정 도메인 로 태그가 지정된 SageMaker 리소스를 생성하여 태그 값을 기반으로 액세스를 ARN제한하는 것을 방지합니다.
중요 사항:
-
첫 번째 문은 모든 리소스()에서
CreateModel
작업을 허용합니다*
. -
두 번째 문은
sagemaker:AddTags
작업을 허용하지만sagemaker:TaggingAction
조건 키가 인 경우에만 허용됩니다CreateModel
. 이렇게 하면 새로 생성된 모델에 태그를 지정하는 데 사용되는 경우에만sagemaker:AddTags
작업이 로 제한됩니다. -
세 번째 문은 리소스(
Create*
)에 대한 SageMaker 생성 작업(*
)을 거부하지만 리소스에 특정 도메인 ARN, 와sagemaker:domain-arn
동일한 태그가 있는 경우에만 거부합니다
.domain-arn
{ "Statement":[ { "Effect":"Allow", "Action":[ "sagemaker:CreateModel" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "sagemaker:AddTags" ], "Resource":"*", "Condition":{ "String":{ "sagemaker:TaggingAction":[ "CreateModel" ] } } }, { "Sid":"IsolateDomain", "Effect":"Deny", "Resource":"*", "Action":[ "sagemaker:Create*" ], "Condition":{ "StringEquals":{ "aws:ResourceTag/sagemaker:domain-arn":"
domain-arn
" } } } ] }
가시성 조건을 사용하여 검색 가능한 리소스에 대한 액세스 제한
가시성 조건을 사용하여 AWS 계정 내의 태그가 지정된 특정 리소스에 대한 사용자의 액세스를 제한합니다. 사용자는 권한이 있는 리소스에만 액세스할 수 있습니다. 사용자가 리소스를 검색할 때 검색 결과를 특정 리소스로 제한할 수 있습니다.
사용자가 특정 Amazon SageMaker Studio 또는 Amazon SageMaker Studio Classic 도메인과 연결된 리소스만 보고 상호 작용하도록 할 수 있습니다. 가시성 조건을 사용하여 단일 도메인 또는 여러 도메인으로 액세스를 제한할 수 있습니다.
{ "Sid": "SageMakerApis", "Effect": "Allow", "Action": "sagemaker:Search", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:SearchVisibilityCondition/Tags.sagemaker:
example-domain-arn
/EqualsIfExists": "arn:aws:sagemaker:AWS 리전
:111122223333
:domain/example-domain-1
", "sagemaker:SearchVisibilityCondition/Tags.sagemaker:example-domain-arn
/EqualsIfExists": "arn:aws:sagemaker:AWS 리전
:111122223333
:domain/example-domain-2
" } } }
가시성 조건의 일반적인 형식은 입니다"sagemaker:SearchVisibilityCondition/Tags.key": "value"
. 태그가 지정된 리소스에 키-값 페어를 제공할 수 있습니다.
{ "MaxResults": number, "NextToken": "string", "Resource": "string", # Required Parameter "SearchExpression": { "Filters": [ { "Name": "string", "Operator": "string", "Value": "string" } ], "NestedFilters": [ { "Filters": [ { "Name": "string", "Operator": "string", "Value": "string" } ], "NestedPropertyName": "string" } ], "Operator": "string", "SubExpressions": [ "SearchExpression" ] }, "IsCrossAccount": "string", "VisibilityConditions" : [ List of conditions for visibility {"Key": "Tags.sagemaker:
example-domain-arn
", "Value": "arn:aws:sagemaker:AWS 리전
:111122223333
:domain/example-domain-1
"}, {"Key": "Tags.sagemaker:example-domain-arn
", "Value": "arn:aws:sagemaker:AWS 리전
:111122223333:domain/example-domain-2
"} ] ], "SortBy": "string", "SortOrder": "string" }
내 가시성 조건은 정책에 지정된 것과 동일한 "sagemaker:SearchVisibilityCondition/Tags.key": "value"
형식을 사용합니다. 사용자는 태그가 지정된 리소스에 사용되는 키-값 페어를 지정할 수 있습니다.
사용자가 검색 요청에 VisibilityConditions
파라미터를 포함하지만 해당 사용자에게 적용되는 액세스 정책에 에 지정된 일치하는 조건 키가 없는 경우 VisibilityConditions
Search
요청은 여전히 허용되며 실행됩니다.
사용자의 검색 API 요청에 VisibilityConditions
파라미터가 지정되지 않았지만 해당 사용자에게 적용되는 액세스 정책에 와 관련된 조건 키가 포함된 경우 VisibilityConditions
해당 사용자의 Search
요청이 거부됩니다.