다중 테넌시 훈련에 속성 기반 액세스 제어(ABAC) 사용 - Amazon SageMaker AI

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

다중 테넌시 훈련에 속성 기반 액세스 제어(ABAC) 사용

다중 테넌트 환경에서는 각 테넌트의 데이터를 격리하고 승인된 엔터티만 액세스할 수 있도록 하는 것이 중요합니다. SageMaker AI는 속성 기반 액세스 제어(ABAC)를 사용하여 훈련 작업에 대해 이러한 격리를 달성하도록 지원합니다. 각 테넌트에 대해 여러 IAM 역할을 생성하는 대신 ( AWS Security Token Service AWS STS) 세션 태그를 사용하여 특정 테넌트에 액세스하기 위한 훈련 작업에 대한 임시, 제한 권한 자격 증명을 요청하는 세션 체인 구성을 구성하여 모든 테넌트에 대해 동일한 IAM 역할을 사용할 수 있습니다. 세션 태그에 대한 자세한 내용은 AWS STS에서 세션 태그 전달을 참조하세요.

훈련 작업을 생성할 때 세션 체인 구성은 AWS STS 를 사용하여 임시 보안 자격 증명을 요청합니다. 이 요청은 태그가 지정된 세션을 생성합니다. 각 SageMaker 훈련 작업은 모든 훈련 작업에서 공유하는 단일 역할을 통해서만 특정 테넌트에 액세스할 수 있습니다. 세션 체인을 ABAC 사용하여를 구현하면 각 훈련 작업이 세션 태그에 지정된 테넌트에만 액세스하여 각 테넌트를 효과적으로 격리하고 보호할 수 있습니다. 다음 섹션에서는 SageMaker Python를 사용하여 다중 테넌트 훈련 작업 격리를 설정하고 ABAC 사용하는 단계를 안내합니다SDK.

사전 조건

다중 테넌트 훈련 작업 격리ABAC를 위해를 시작하려면 다음이 있어야 합니다.

  • 여러 위치에서 일관된 이름 지정을 사용하는 테넌트입니다. 예를 들어 테넌트에 URI 대한 입력 데이터 Amazon S3가 인 경우 동일한 테넌트s3://your-input-s3-bucket/example-tenant에 대한 Amazon FSx 디렉터리는 이고 /fsx-train/train/example-tenant 출력 데이터 Amazon S3는 이어야 URI 합니다s3://your-output-s3-bucket/example-tenant.

  • SageMaker AI 작업 생성 역할입니다. Amazon SageMaker AI Role Manager를 사용하여 SageMaker AI 작업 생성 역할을 생성할 수 있습니다. 자세한 내용은 역할 관리자 사용을 참조하세요.

  • 신뢰 정책에 sts:AssumeRole, 및 sts:TagSession 권한이 있는 SageMaker AI 실행 역할입니다. SageMaker AI 실행 역할에 대한 자세한 내용은 SageMaker AI 역할을 참조하세요.

    또한 실행 역할에는 속성 기반 다중 테넌트 아키텍처의 테넌트가 보안 주체 태그에 연결된 접두사에서 읽을 수 있도록 허용하는 정책이 있어야 합니다. 다음은 SageMaker AI 실행 역할이 tenant-id 키와 연결된 값에 액세스할 수 있도록 제한하는 정책의 예입니다. 태그 키 이름 지정에 대한 자세한 내용은 IAM 및의 태그 지정 규칙을 STS참조하세요.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<your-input-s3-bucket>/${aws:PrincipalTag/tenant-id}/*" ], "Effect": "Allow" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::<your-output-s3-bucket>/${aws:PrincipalTag/tenant-id}/*" }, { "Action": "s3:ListBucket", "Resource": "*", "Effect": "Allow" } ] }

세션 태그 체인이 활성화된 훈련 작업 생성

다음 절차에서는 ABAC활성화된 다중 테넌시 훈련SDK용 SageMaker Python을 사용하여 세션 태그 체인으로 훈련 작업을 생성하는 방법을 보여줍니다.

참고

다중 테넌시 데이터 스토리지 외에도 ABAC 워크플로를 사용하여 Amazon VPC AWS Key Management Service, 및 SageMaker AI가 호출하도록 허용하는 기타 서비스에 대한 실행 역할에 세션 태그를 전달할 수도 있습니다.

에 대한 세션 태그 체인 활성화 ABAC
  1. boto3 및 SageMaker Python을 가져옵니다SDK. ABAC활성화된 훈련 작업 격리는 SageMaker AI Python의 버전 2.217 이상에서만 사용할 수 있습니다SDK.

    import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput
  2. 테넌트 레이블이 지정된 세션 태그를 사용하도록 AWS STS 및 SageMaker AI 클라이언트를 설정합니다. 태그 값을 변경하여 다른 테넌트를 지정할 수 있습니다.

    # Start an AWS STS client sts_client = boto3.client('sts') # Define your tenants using tags # The session tag key must match the principal tag key in your execution role policy tags = [] tag = {} tag['Key'] = "tenant-id" tag['Value'] = "example-tenant" tags.append(tag) # Have AWS STS assume your ABAC-enabled job creation role response = sts_client.assume_role( RoleArn="arn:aws:iam::<account-id>:role/<your-training-job-creation-role>", RoleSessionName="SessionName", Tags=tags) credentials = response['Credentials'] # Create a client with your job creation role (which was assumed with tags) sagemaker_client = boto3.client( 'sagemaker', aws_access_key_id=credentials['AccessKeyId'], aws_secret_access_key=credentials['SecretAccessKey'], aws_session_token=credentials['SessionToken'] ) sagemaker_session = sagemaker.Session(sagemaker_client=sagemaker_client)

    "tenant-id=example-tenant" 작업 생성 역할에 태그를 추가할 때 실행 역할이 이러한 태그를 추출하여 다음 정책을 사용합니다.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<your-input-s3-bucket>/example-tenant/*" ], "Effect": "Allow" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::<your-output-s3-bucket>/example-tenant/*" }, { "Action": "s3:ListBucket", "Resource": "*", "Effect": "Allow" } ] }
  3. SageMaker Python를 사용하여 훈련 작업을 생성할 예측기를 정의합니다SDK. SageMaker AI 훈련 실행 역할True이 작업 생성 역할에서 태그를 검색할 수 있도록를 enable_session_tag_chaining 로 설정합니다.

    # Specify your training input trainingInput = TrainingInput( s3_data='s3://<your-input-bucket>/example-tenant', distribution='ShardedByS3Key', s3_data_type='S3Prefix' ) # Specify your training job execution role execution_role_arn = "arn:aws:iam::<account-id>:role/<your-training-job-execution-role>" # Define your esimator with session tag chaining enabled estimator = Estimator( image_uri="<your-training-image-uri>", role=execution_role_arn, instance_count=1, instance_type='ml.m4.xlarge', volume_size=20, max_run=3600, sagemaker_session=sagemaker_session, output_path="s3://<your-output-bucket>/example-tenant", enable_session_tag_chaining=True ) estimator.fit(inputs=trainingInput, job_name="abac-demo")

SageMaker AI는 훈련 작업 요청에 제공된 태그만 읽을 수 있으며 사용자를 대신하여 리소스에 태그를 추가하지 않습니다.

ABAC SageMaker 훈련용는 SageMaker AI 관리형 웜 풀과 호환됩니다. 웜 풀ABAC과 함께를 사용하려면 일치하는 훈련 작업의 세션 태그가 동일해야 합니다. 자세한 내용은 매칭하는 훈련 작업 단원을 참조하십시오.