역할 관리자 사용(AWS CDK) - 아마존 SageMaker

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

역할 관리자 사용(AWS CDK)

AWS Cloud Development Kit (AWS CDK) with Amazon SageMaker Role Manager를 사용하여 프로그래밍 방식으로 역할을 생성하고 권한을 설정합니다. 를 사용하여 수행할 수 있는 모든 작업을 수행하는 AWS CDK 데 사용할 수 있습니다. AWS Management Console CDK의 프로그래밍 방식 액세스를 통해 사용자에게 특정 리소스에 대한 액세스 권한을 부여하는 권한을 더 쉽게 제공할 수 있습니다. 에 대한 자세한 내용은 What is? AWS CDK 를 참조하십시오. AWS CDK

중요

SageMaker 컴퓨팅 역할 페르소나를 사용하여 컴퓨팅 역할을 생성해야 합니다. SageMaker 컴퓨팅 페르소나에 대한 자세한 정보는 SageMaker 컴퓨팅 페르소나섹션을 참조하세요. 내에서 컴퓨팅 역할을 생성하는 데 사용할 수 있는 코드는 을 AWS CDK참조하십시오컴퓨팅 페르소나에 권한 부여.

다음은 AWS CDK에서 수행할 수 있는 작업의 예시입니다.

  • 데이터 사이언티스트나 MLOps 엔지니어와 같은 기계 학습(ML) 페르소나에 대한 세분화된 권한이 있는 IAM 역할을 생성하세요.

  • ML 페르소나 또는 ML 활동에서 CDK 생성자에 권한을 부여하세요.

  • ML 활동 조건 파라미터를 설정합니다.

  • 글로벌 Amazon VPC 및 AWS Key Management Service 조건을 활성화하고 이에 대한 값을 설정합니다.

  • 액세스에 지장을 주지 않으면서 사용자를 위해 ML 활동의 모든 버전 중에서 선택하세요.

기계 학습 (ML) 과 관련된 일반적인 AWS 작업에는 특정 IAM 권한이 필요합니다. SageMaker 작업을 수행할 수 있는 권한은 Amazon SageMaker 역할 관리자의 ML 활동으로 정의됩니다. ML 활동은 IAM 역할에 연결된 권한 세트를 지정합니다. 예를 들어 Amazon SageMaker Studio Classic의 ML 활동에는 사용자가 스튜디오 클래식에 액세스하는 데 필요한 모든 권한이 있습니다. ML 활성화에 대한 자세한 내용은 ML 활동 참조섹션을 참조하세요.

역할을 생성할 때는 먼저 ML 페르소나 또는 ML 활동의 생성자를 정의합니다. 구문은 AWS CDK 스택 내의 리소스입니다. 예를 들어, 생성자는 Amazon S3 버킷, Amazon VPC 서브넷 또는 IAM 역할일 수 있습니다.

페르소나 또는 활동을 생성할 때 해당 페르소나 또는 활동과 관련된 권한을 특정 리소스로 제한할 수 있습니다. 예를 들어 Amazon VPC 내의 특정 서브넷에 대한 권한만 제공하도록 활동을 사용자 지정할 수 있습니다.

권한을 정의한 후에는 역할을 만든 다음 해당 역할을 전달하여 SageMaker 노트북 인스턴스와 같은 다른 리소스를 만들 수 있습니다.

다음은 CDK를 사용하여 완수할 수 있는 작업에 대한 Typescript의 코드 예제입니다. 활동을 생성할 때 활동의 생성자를 위한 ID와 옵션을 지정합니다. 옵션은 Amazon S3와 같이 활동에 필요한 파라미터를 지정하는 사전입니다. 필수 파라미터가 없는 활동에 대해서는 빈 사전을 전달합니다.

다음 코드는 해당 페르소나와 관련된 일련의 ML 활동이 포함된 데이터 사이언티스트 ML 페르소나를 생성합니다. ML 활동의 권한은 페르소나 구문에 지정된 Amazon VPC 및 AWS KMS 구성에만 적용됩니다. 다음 코드는 데이터 사이언티스트 페르소나를 위한 클래스를 생성합니다. ML 활동은 활동 목록에 정의되어 있습니다. VPC 권한 및 KMS 권한은 활동 목록 외부의 선택적 파라미터로 정의됩니다.

클래스를 정의한 후에는 스택 내에 구조로서 역할을 생성할 수 있습니다. AWS CDK 노트북 인스턴스를 생성할 수도 있습니다. 다음 코드에서 생성한 IAM 역할을 사용하는 사람은 자신의 AWS 계정에 로그인할 때 노트북 인스턴스에 액세스할 수 있습니다.

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const persona = new Persona(this, 'example-persona-id', { activities: [ Activity.accessAwsServices(this, 'example-id1', {}) ] }); const role = persona.createRole(this, 'example-IAM-role-id', 'example-IAM-role-name'); } }

다음 코드는 해당 페르소나와 관련된 일련의 ML 활동이 포함된 데이터 사이언티스트 ML 페르소나를 생성합니다. ML 활동의 권한은 페르소나 생성자에 지정된 VPC 및 KMS 구성에만 적용됩니다. 다음 코드는 데이터 사이언티스트 페르소나를 위한 클래스를 생성합니다. ML 활동은 활동 목록에 정의되어 있습니다. Amazon VPC 권한 및 권한은 AWS KMS 활동 목록 외부의 선택적 파라미터로 정의됩니다.

클래스를 정의한 후에는 AWS CDK 스택 내에 구조로서 역할을 생성할 수 있습니다. 노트북 인스턴스를 생성할 수도 있습니다. 다음 코드에서 생성한 IAM 역할을 사용하는 사람은 자신의 AWS 계정에 로그인할 때 노트북 인스턴스에 액세스할 수 있습니다.

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const persona = new Persona(this, 'example-persona-id', { activities: [ Activity.runStudioAppsV2(this, 'example-id1', {}), Activity.manageJobs(this, 'example-id2', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.manageModels(this, 'example-id3', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.manageExperiments(this, 'example-id4', {}), Activity.visualizeExperiments(this, 'example-id5', {}), Activity.accessS3Buckets(this, 'example-id6', {s3buckets: [s3.S3Bucket.fromBucketName('DOC-EXAMPLE-BUCKET')]}) ], // optional: to configure VPC permissions subnets: [ec2.Subnet.fromSubnetId('example-VPC-subnet-id')], securityGroups: [ec2.SecurityGroup.fromSecurityGroupId('example-VPC-security-group-id')], // optional: to configure KMS permissions dataKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], volumeKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], }); const role = persona.createRole(this, 'example-IAM-role-id', 'example-IAM-role-name'); const notebookInstance = new CfnNotebookInstance(this, 'example-notebook-instance-name', { RoleArn: role.RoleArn, ...}); } }

다음 코드는 해당 페르소나와 관련된 일련의 ML 활동이 포함된 ML Ops 페르소나를 생성합니다. ML 활동의 권한은 페르소나 구문에 지정된 Amazon VPC 및 AWS KMS 구성에만 적용됩니다. 다음 코드는 ML Ops 페르소나를 위한 클래스를 생성합니다. ML 활동은 활동 목록에 정의되어 있습니다. VPC 권한 및 KMS 권한은 활동 목록 외부의 선택적 파라미터로 정의됩니다.

클래스를 정의한 후에는 스택 내에 구조로서 역할을 생성할 수 있습니다. AWS CDK Amazon SageMaker 스튜디오 클래식 사용자 프로필을 생성할 수도 있습니다. 다음 코드에서 생성한 IAM 역할을 사용하는 사람은 자신의 AWS 계정에 로그인할 때 SageMaker Studio Classic을 열 수 있습니다.

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const persona = new Persona(this, 'example-persona-id', { activities: [ Activity.runStudioAppsV2(this, 'example-id1', {}), Activity.manageModels(this, 'example-id2', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.manageEndpoints(this, 'example-id3',{rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.managePipelines(this, 'example-id4', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.visualizeExperiments(this, 'example-id5', {}) ], subnets: [ec2.Subnet.fromSubnetId('example-VPC-subnet-id')], securityGroups: [ec2.SecurityGroup.fromSecurityGroupId('example-VPC-security-group-id')], dataKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], volumeKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], }); const role = persona.createRole(this, 'example-IAM-role-id', 'example-IAM-role-name'); let userProfile = new CfnNUserProfile(this, 'example-Studio Classic-profile-name', { RoleName: role.RoleName, ... }); } }

다음 코드는 해당 페르소나와 관련된 일련의 ML 활동이 포함된 ML Ops 페르소나를 생성합니다. 다음 코드는 ML Ops 페르소나를 위한 클래스를 정의합니다. ML 활동은 활동 목록에 정의되어 있습니다.

클래스를 정의한 후 AWS CDK 스택 내에서 역할을 구성으로 생성할 수 있습니다. 노트북 인스턴스를 생성할 수도 있습니다. 코드는 ML 활동의 권한을 Lambda 함수의 IAM 역할에 부여합니다.

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const persona = new Persona(this, 'example-persona-id', { activities: [ Activity.runStudioAppsV2(this, 'example-id1', {}), Activity.manageModels(this, 'example-id2', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.manageEndpoints(this, 'example-id3',{rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.managePipelines(this, 'example-id4', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.visualizeExperiments(this, 'example-id5', {}) ], }); const lambdaFn = lambda.Function.fromFunctionName('example-lambda-function-name'); persona.grantPermissionsTo(lambdaFn); } }

다음 코드는 ML 활동을 생성하고 활동에서 역할을 생성합니다. 활동의 권한은 사용자에 대해 지정한 VPC 및 KMS 구성에만 적용됩니다.

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const activity = Activity.manageJobs(this, 'example-activity-id', { rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')], subnets: [ec2.Subnet.fromSubnetId('example-VPC-subnet-id')], securityGroups: [ec2.SecurityGroup.fromSecurityGroupId('example-VPC-security-group-id')], dataKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], volumeKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], }); const role = activity.createRole(this, 'example-IAM-role-id', 'example-IAM-role-name'); } }

다음 코드는 단일 ML 활동에 대한 IAM 역할을 생성합니다.

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const activity = Activity.manageJobs(this, 'example-activity-id', { rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')], }); activity.create_role(this, 'example-IAM-role-id', 'example-IAM-role-name') } }