IAM 액세스 관리 - Amazon SageMaker

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

IAM 액세스 관리

다음 섹션에서는 Amazon SageMaker Pipelines에 대한 AWS Identity and Access Management (IAM) 요구 사항을 설명합니다. 이러한 권한을 구현하는 방법에 대한 예제는 사전 조건섹션을 참조하세요.

파이프라인 역할 권한

파이프라인을 만들 때 IAM 파이프라인에 전달되는 파이프라인 실행 역할이 필요합니다. 파이프라인을 생성하는 SageMaker 인스턴스의 역할은 파이프라인 실행 역할을 전달하려면 파이프라인 실행 역할에 대한 권한이 있어야 합니다iam:PassRole. IAM 역할에 대한 자세한 내용은IAM 역할 단원을 참조하세요.

파이프라인 실행 역할에는 다음 권한이 필요합니다.

  • 파이프라인iam:PassRole 내의 SageMaker 작업에 역할을 전달하려면 전달 중인 역할에 대한 권한입니다. 

  • 파이프라인의 각 작업 유형에 대한 CreateDescribe권한.

  • JsonGet 함수 사용에 대한 Amazon S3의 허용. 리소스 기반 정책 또는 자격 증명 기반 정책을 사용하여 Amazon S3 리소스에 대한 액세스를 제어할 수 있습니다. 리소스 기반 정책은 Amazon S3 버킷에 적용되며 버킷에 대한 파이프라인 액세스 권한을 부여합니다. 자격 증명 기반 정책은 파이프라인에 계정에서 Amazon S3를 호출할 수 있는 기능을 제공합니다. 리소스 기반 정책 및 자격 증명 기반 정책에 대한 더 자세한 내용은 자격 증명 기반 정책 및 리소스 기반 정책 및 정책을 참조하세요.

    { "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::<your-bucket-name>/*", "Effect": "Allow" }

파이프라인 단계 권한

파이프라인에는 SageMaker 작업을 실행하는 단계가 포함됩니다. 파이프라인 단계에서 이러한 작업을 실행하려면 필요한 리소스에 대한 액세스를 제공하는 IAM 역할이 계정에 필요합니다. 이 역할은 파이프라인에서 SageMaker 서비스 보안 주체에게 전달됩니다. IAM 역할에 대한 자세한 내용은IAM 역할 섹션을 참조하세요.

기본적으로 각 단계는 파이프라인 실행 역할을 맡습니다. 선택적으로 파이프라인의 모든 단계에 다른 역할을 전달할 수 있습니다. 이렇게 하면 파이프라인 정의에 지정된 두 단계 간에 직접적인 관계가 없는 한, 각 단계의 코드가 다른 단계에서 사용되는 리소스에 영향을 주지 않습니다. 단계의 프로세서 또는 추정기를 정의할 때 이러한 역할을 전달합니다. 이러한 역할을 이러한 정의에 포함하는 방법에 대한 예는 SageMaker Python SDK 설명서 를 참조하세요.

파이프라인 작업에 대한 액세스 관리 사용자 지정

조직에서 선택한 구성원이 파이프라인 단계를 일부 또는 전부 실행할 수 있도록 IAM 정책을 추가로 사용자 지정할 수 있습니다. 예를 들어 특정 사용자에게는 훈련 작업을 생성할 권한을 부여하고, 다른 사용자 그룹에게는 처리 작업을 생성할 수 있는 권한을 부여하고, 모든 사용자에게 나머지 단계를 실행할 수 있는 권한을 부여할 수 있습니다. 이 기능을 사용하려면 작업 이름 앞에 접두사를 붙이는 사용자 지정 문자열을 선택합니다. 관리자는 허용된 에 ARNs 접두사를 우선하고 데이터 과학자는 파이프라인 인스턴스화에 이 접두사를 포함합니다. 허용된 사용자에 대한 IAM 정책에는 지정된 접두사가 ARN 있는 작업이 포함되어 있으므로 파이프라인 단계의 후속 작업에는 계속 진행하는 데 필요한 권한이 있습니다. 작업 접두사는 기본적으로 꺼져 있습니다.이 옵션을 사용하려면 Pipeline클래스에서 이 옵션을 켜야 합니다.

접두사가 해제된 작업의 경우 작업 이름은 다음과 같이 형식이 지정되며 다음 테이블에 설명된 필드가 연결되어 있습니다.

pipelines-<executionId>-<stepNamePrefix>-<entityToken>-<failureCount>

필드 정의

파이프라인

항상 정적 문자열이 앞에 추가됩니다. 이 문자열은 파이프라인 오케스트레이션 서비스를 작업의 소스로 식별합니다.

executionId

실행 중인 파이프라인 인스턴스를 위한 무작위 버퍼입니다.

stepNamePrefix

사용자가 지정한 단계 이름(파이프라인 단계의 name인수에 지정됨)으로, 처음 20자로 제한됩니다.

entityToken

단계 개체의 멱등성을 보장하기 위한 무작위 토큰입니다.

failureCount

작업을 완료하기 위해 시도한 현재 재시도 횟수입니다.

이 경우 작업 이름 앞에 사용자 지정 접두사가 붙지 않으며 해당 IAM 정책이 이 문자열과 일치해야 합니다.

작업 접두사를 사용하는 사용자의 경우 기본 작업 이름은 다음과 같은 형식을 취하며 사용자 지정 접두사는 MyBaseJobName으로 지정됩니다.

<MyBaseJobName>-<executionId>-<entityToken>-<failureCount>

사용자 지정 접두사는 정적 pipelines 문자열을 대체하여 파이프라인의 일부로 SageMaker 작업을 실행할 수 있는 사용자의 선택을 좁히는 데 도움이 됩니다.

접두사 길이 제한

작업 이름에는 개별 파이프라인 단계에 따른 내부 길이 제약이 있습니다. 또한 이 제약 조건은 허용되는 접두사 길이를 제한합니다. 접두사 길이 요구 사항은 다음과 같습니다.

IAM 정책에 작업 접두사 적용

관리자는 특정 접두사 사용자가 작업을 생성할 수 있도록 허용하는 IAM 정책을 생성합니다. 다음 예제 정책은 데이터 사이언티스트가 MyBaseJobName접두사를 사용하는 경우 훈련 작업을 생성할 수 있도록 허용합니다.

{ "Action": "sagemaker:CreateTrainingJob", "Effect": "Allow", "Resource": [ "arn:aws:sagemaker:region:account-id:*/MyBaseJobName-*" ] }

파이프라인 인스턴스화에 작업 접두사를 적용합니다.

작업 인스턴스 클래스의 *base_job_name인수를 사용하여 접두사를 지정합니다.

참고

파이프라인 단계를 생성하기 전에 *base_job_name인수와 함께 작업 접두사를 작업 인스턴스에 전달합니다. 이 작업 인스턴스에는 작업을 파이프라인에서 한 단계로 실행하는 데 필요한 정보가 들어 있습니다. 이 인수는 사용된 작업 인스턴스에 따라 달라집니다. 다음 목록은 각 파이프라인 단계 유형에 사용할 인수를 보여줍니다.

  • Estimator (TrainingStep), Processor(ProcessingStep), AutoML(AutoMLStep) 클래스의 경우 base_job_name

  • Tuner 클래스(TuningStep)의 경우 tuning_base_job_name

  • Transformer 클래스(TransformStep)의 경우 transform_base_job_name

  • QualityCheckStep(품질 검사) 및 ClarifyCheckstep(명확화 검사) 클래스의 경우 CheckJobConfigbase_job_name

  • Model 클래스의 경우 사용되는 인수는 ModelStep에 결과를 전달하기 전에 create또는 register를 모델에 실행했는지에 따라 달라집니다.

    • create 호출 시 사용자 지정 접두사는 모델을 생성할 때 name인수에서 가져옵니다(예:Model(name=)).

    • register 호출 시 사용자 지정 접두사는 register호출의 model_package_name인수에서 가져옵니다(예:my_model.register(model_package_name=)).

다음 예제에서는 새 훈련 작업 인스턴스에 접두사를 지정하는 방법을 보여줍니다.

# Create a job instance xgb_train = Estimator( image_uri=image_uri, instance_type="ml.m5.xlarge", instance_count=1, output_path=model_path, role=role, subnets=["subnet-0ab12c34567de89f0"], base_job_name="MyBaseJobName" security_group_ids=["sg-1a2bbcc3bd4444e55"], tags = [ ... ] encrypt_inter_container_traffic=True, ) # Attach your job instance to a pipeline step step_train = TrainingStep( name="TestTrainingJob", estimator=xgb_train, inputs={ "train": TrainingInput(...), "validation": TrainingInput(...) } )

작업 접두사는 기본적으로 해제되어 있습니다. 이 기능을 사용하려면 다음 스니펫에 표시된 PipelineDefinitionConfiguse_custom_job_prefix옵션을 사용하세요.

from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig # Create a definition configuration and toggle on custom prefixing definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True); # Create a pipeline with a custom prefix pipeline = Pipeline( name="MyJobPrefixedPipeline", parameters=[...] steps=[...] pipeline_definition_config=definition_config )

파이프라인을 생성하고 실행합니다. 다음 예제는 파이프라인을 생성 및 실행하고, 작업 접두사를 끄고 파이프라인을 다시 실행하는 방법도 보여줍니다.

pipeline.create(role_arn=sagemaker.get_execution_role()) # Optionally, call definition() to confirm your prefixed job names are in the built JSON pipeline.definition() pipeline.start() # To run a pipeline without custom-prefixes, toggle off use_custom_job_prefix, update the pipeline # via upsert() or update(), and start a new run definition_config = PipelineDefinitionConfig(use_custom_job_prefix=False) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()

마찬가지로 기존 파이프라인에서도 이 기능을 켜고 작업 접두사를 사용하는 새 실행을 시작할 수 있습니다.

definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()

마지막으로, 파이프라인 실행의 list_steps을 호출하여 접두사가 지정된 사용자 지정 작업을 볼 수 있습니다.

steps = execution.list_steps() prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']

파이프라인을 사용한 서비스 제어 정책

서비스 제어 정책(SCPs)은 조직의 권한을 관리하는 데 사용할 수 있는 조직 정책의 한 유형입니다. SCPs 는 조직의 모든 계정에 대해 사용 가능한 최대 권한에 대한 중앙 제어를 제공합니다. 조직 내에서 파이프라인을 사용하면 데이터 과학자가 AWS 콘솔과 상호 작용하지 않고도 파이프라인 실행을 관리할 수 있습니다. 

Amazon S3에 대한 액세스를 제한SCP하는 VPC와 함께 를 사용하는 경우 파이프라인이 다른 Amazon S3 리소스에 액세스할 수 있도록 허용하는 조치를 취해야 합니다.

파이프라인이 JsonGet 함수VPC를 사용하여 외부에서 Amazon S3에 액세스할 수 있도록 하려면 파이프라인SCP을 사용하는 역할이 Amazon S3에 액세스할 수 있도록 조직의 를 업데이트합니다. 이렇게 하려면 보안 주체 태그와 조건 키를 사용하여 파이프라인 실행 역할을 통해 파이프라인 실행기에서 사용 중인 역할에 대한 예외를 생성합니다.

파이프라인이 외부에서 Amazon S3에 액세스하도록 허용하려면 VPC
  1. IAM 사용자 및 역할 태그 지정의 단계에 따라 파이프라인 실행 역할에 대한 고유한 태그를 생성합니다.

  2. 생성한 태그의 Aws:PrincipalTag IAM 조건 키를 SCP 사용하여 에 예외를 부여합니다. SCP를 생성하는 방법에 대한 자세한 내용은 서비스 제어 정책 생성, 업데이트 및 삭제를 참조하세요.