기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
모델 패키지 배포에 대한 아티팩트 액세스 제한
계정 간에 모델 패키지를 공유하면 생산 계정의 모델 아티팩트s3:GetObject에 소비 계정의 실행 역할이 필요합니다. 기본적으로이 권한은 역할이 사용될 때마다 적용됩니다. 따라서 역할을 사용하는 모든 보안 주체는 모델 패키지가 배포되는 동안뿐만 아니라 노트북, 훈련 작업 또는 직접 API 호출을 통해 아티팩트를 읽을 수 있습니다.
모델 패키지 배포만 아티팩트를 읽을 수 있도록 액세스 범위를 좁힐 수 있습니다. 배포 중에 SageMaker AI는 자신이 수임하는 실행-역할 세션sagemaker:ModelPackageArn에 세션 태그를 적용합니다. 태그 값은 배포 중인 모델 패키지의 ARN입니다. 따라서이 태그가 필요한 버킷 정책은 배포 세션에만 액세스 권한을 부여합니다.
이렇게 하려면 세 조각이 함께 작동해야 합니다. 세 가지 모두 구성해야 합니다. SageMaker AI는 세션 태그만 제공합니다.
-
신뢰 정책
ManagedBy=SageMaker에서 SageMaker AI 서비스 보안 주체만 이를 수임하도록 허용하는 태그가 지정된 실행 역할입니다. -
SageMaker AI 이외의 사용자가 해당 역할을 수임하거나
sagemaker:ModelPackageArn태그 키를 설정하지 못하도록 하는 서비스 제어 정책입니다. 이렇게 하지 않으면 호출 권한이 있는 보안 주체가 자체적으로 태그를 제공할 AWS STS 수 있습니다. -
세션에 태그가 있고 호출자가 조직에 있으며 역할에 태그가 지정된
s3:GetObject경우에만에 부여하는 Amazon S3 버킷 정책입니다ManagedBy=SageMaker.
중요
SCP는 세션 태그를 신뢰할 수 있게 만듭니다. SCP 없이 버킷 정책을 적용하면 실행 역할을 직접 수임할 수 있는 보안 주체가 자체 세션에 sagemaker:ModelPackageArn 태그를 연결하고 버킷 정책을 충족할 수 있습니다.
1단계: 실행 역할에 태그 지정 및 범위 지정
소비 계정에서 실행 역할에 태그를 지정ManagedBy=SageMaker하고 신뢰 정책을 SageMaker AI 서비스 보안 주체로 제한합니다. 신뢰 정책은 sts:AssumeRole 및를 모두 허용해야 합니다sts:TagSession. sts:TagSession가 없으면 SageMaker AI는 sagemaker:ModelPackageArn 세션 태그를 적용할 수 없으며 Amazon S3는 3단계의 버킷 정책에 필요한 모든 읽기를 거부합니다.
{ "RoleName": "GovernedModelExecutionRole", "Tags": [ { "Key": "ManagedBy", "Value": "SageMaker" } ], "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] }] } }
2단계: 서비스 제어 정책 추가
조직에 다음 SCP를 연결합니다. 첫 번째 문은 SageMaker AI 서비스 보안 주체만 태그가 지정된 역할을 수임하도록 허용합니다ManagedBy=SageMaker. 두 번째는 SageMaker AI만 sagemaker:ModelPackageArn 버킷 정책이 평가하는 유일한 태그 키인 태그 키를 설정할 수 있도록 허용합니다. SCP를 생성하는 방법에 대한 자세한 내용은 서비스 제어 정책 생성, 업데이트 및 삭제를 참조하세요.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyNonSageMakerAssumeOnManagedRoles", "Effect": "Deny", "Action": "sts:AssumeRole", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedBy": "SageMaker" }, "StringNotEquals": { "aws:PrincipalServiceName": "sagemaker.amazonaws.com" } } }, { "Sid": "DenyTaggingProtectedKeysUnlessSageMaker", "Effect": "Deny", "Action": [ "iam:TagRole", "iam:UntagRole", "sts:TagSession" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/sagemaker:ModelPackageArn": "*" }, "StringNotEquals": { "aws:PrincipalServiceName": "sagemaker.amazonaws.com" } } } ] }
참고
두 명령문 모두 키가 없을 때 true로 평가aws:PrincipalServiceName되는 StringNotEquals에서를 사용합니다. 따라서 SCP는 서비스 보안 주체가 전혀 없는 세션을 포함하여 멤버 계정의 모든 IAM 사용자 및 역할에 대해 이러한 작업을 거부합니다. SCPs AWS 서비스가 자체 서비스 보안 주체로 수행하는 호출에는 적용되지 않습니다. SageMaker AI 서비스 보안 주체에게만 액세스 권한을 부여하는 역할의 신뢰 정책은 다른 AWS 서비스를 제외합니다.
3단계: Amazon S3 버킷 정책 추가
생산 계정에서 모델 아티팩트가 있는 버킷에 다음 정책을 적용합니다. 세 가지 조건이 모두 있어야 합니다. Amazon S3는 세션이 누락된 모든 세션을 거부합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyModelPackageDeployments", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::model-artifacts-bucket/model-package-prefix/*", "Condition": { "StringLike": { "aws:PrincipalTag/sagemaker:ModelPackageArn": "arn:aws:sagemaker:*:producer-account-id:model-package/model-package-group/*" }, "StringEquals": { "aws:PrincipalOrgID": "o-organization-id", "aws:PrincipalTag/ManagedBy": "SageMaker" } } } ] }
를 이러한 조건Principal과 * 함께 사용하면 조직의 모든 역할이 태그가 지정ManagedBy=SageMaker되고 배포 태그를 보유하여 아티팩트를 읽을 수 있습니다. 각 소비 역할에 대해 정책을 편집할 필요는 없습니다. 모델 패키지 ARN의 와일드카드는 그룹의 모든 버전을 포함합니다.
중요
단일 모델 패키지 그룹의 아티팩트 Resource 범위입니다. 여러 그룹에 걸친 접두사를 사용하면 한 모델 패키지의 배포가 다른 그룹의 아티팩트를 읽을 수 있습니다. 세션 태그가 객체 경로가 아닌 그룹 와일드카드에 대해 확인되기 때문입니다.
아티팩트가 고객 관리형 AWS KMS 키로 암호화된 경우 실행 역할에도 해당 키kms:Decrypt가 필요합니다. 키 정책에 부여하십시오. IAM 정책만으로는 충분하지 않습니다.
아티팩트 액세스 모니터링
계정은 세션의 태그 지정과 그에 따른 액세스 결정을 모두 기록합니다.
-
CloudTrail에서 실행 역할의
AssumeRole이벤트는 아래에 세션 태그를 나열합니다requestParameters.sagemaker:ModelPackageArn가 있고 배포한 모델 패키지와 일치하는지 확인합니다. -
Amazon S3 데이터 이벤트 또는 서버 액세스 로그에서 아티팩트 접두사에 대한
GetObject요청은 각 읽기가 허용 또는 거부되었는지 여부를 표시하므로 배포되지 않은 액세스가 거부되고 있는지 확인할 수 있습니다.
정책을 프로덕션 버킷에 적용하기 전에 IAM 정책 시뮬레이터로 정책을 평가하여 배포 세션이 허용되고 태그가 없는 세션이 거부되었는지 확인할 수 있습니다. 자세한 내용은 IAM 정책 시뮬레이터를 사용한 IAM 정책 테스트를 참조하세요.