Usar o gerente de perfis (AWS CDK) - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar o gerente de perfis (AWS CDK)

Use o AWS Cloud Development Kit (AWS CDK) com o Amazon SageMaker Role Manager para criar funções e definir permissões de forma programática. Você pode usar o AWS CDK para realizar qualquer tarefa que possa ser executada usando AWS Management Console o. O acesso programático do CDK facilita o fornecimento de permissões que dão aos usuários acesso a recursos específicos. Para obter mais informações sobre o AWS CDK, consulte O que é AWS CDK?

Importante

Você deve usar a persona SageMaker Compute Role para criar um SageMaker Compute Role. Para obter informações sobre a persona de computação, consulte SageMaker persona computacional. Para obter o código que você pode usar para criar a função de computação no AWS CDK, consulteConceder permissões a uma pessoa de computação.

Veja a seguir exemplos de tarefas que você pode realizar no AWS CDK:

  • Crie perfis do IAM com permissões granulares para personas de machine learning (ML), como cientistas de dados e engenheiros de MLOps.

  • Conceda permissões para construções de CDK a partir de personas de ML ou atividades de ML.

  • Defina os parâmetros da condição da atividade de ML.

  • Ative a Amazon VPC e AWS Key Management Service as condições globais e defina valores para elas.

  • Escolha entre todas as versões das atividades de ML para seus usuários sem causar interrupções no acesso.

Há AWS tarefas comuns relacionadas ao aprendizado de máquina (ML) SageMaker que exigem permissões específicas do IAM. As permissões para realizar as tarefas são definidas como atividades de ML no Amazon SageMaker Role Manager. As atividades de ML especificam um conjunto de permissões vinculadas o perfil do IAM. Por exemplo, a atividade de ML do Amazon SageMaker Studio Classic tem todas as permissões que um usuário precisa para acessar o Studio Classic. Para obter mais informações sobre atividades de ML, consulte Referência da atividade de ML.

Ao criar perfis, você primeiro deve definir as construções para a persona de ML ou a atividade de ML. Uma construção é um recurso dentro da AWS CDK pilha. Por exemplo, uma construção pode ser um bucket do Amazon S3, uma sub-rede do Amazon VPC ou um perfil do IAM.

Ao criar a persona ou atividade, você pode limitar as permissões associadas a essa persona ou atividade a recursos específicos. Por exemplo, você pode personalizar a atividade para fornecer permissões somente para uma sub-rede específica dentro de uma Amazon VPC.

Depois de definir as permissões, você pode criar funções e depois passar essas funções para criar outros recursos, como instâncias do SageMaker notebook.

Veja a seguir exemplos de código em Typescript para tarefas que você pode realizar usando o CDK. Ao criar uma atividade, você deve especificar um ID e as opções para a construção da atividade. As opções são dicionários que especificam os parâmetros necessários para as atividades, como um Amazon S3. Você passa um dicionário vazio para atividades que não têm parâmetros obrigatórios.

O código a seguir cria uma persona de cientista de dados de ML com um conjunto de atividades de ML específicas para a persona. As permissões das atividades de ML se aplicam somente à Amazon VPC e às AWS KMS configurações especificadas na construção da persona. O código a seguir cria uma classe para uma persona de cientista de dados. As atividades de ML são definidas na lista de atividades. As permissões de VPC e de KMS são definidas como parâmetros opcionais fora da lista de atividades.

Depois de definir a classe, você pode criar uma função como uma construção na AWS CDK pilha. Você também pode criar uma instância de caderno. A pessoa que está usando a função do IAM que você criou no código a seguir pode acessar a instância do notebook ao fazer login na AWS conta.

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'); } }

O código a seguir cria uma persona de cientista de dados de ML com um conjunto de atividades de ML específicas para a persona. As permissões das atividades de ML se aplicam somente às configurações de VPC e do KMS especificadas na construção da persona. O código a seguir cria uma classe para uma persona de cientista de dados. As atividades de ML são definidas na lista de atividades. As permissões e as AWS KMS permissões da Amazon VPC são definidas como parâmetros opcionais fora da lista de atividades.

Depois de definir a classe, você pode criar uma função como uma construção na AWS CDK pilha. Você também pode criar uma instância de caderno. A pessoa que está usando a função do IAM que você criou no código a seguir pode acessar a instância do notebook ao fazer login na AWS conta.

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, ...}); } }

O código a seguir cria uma persona de Operações de ML com um conjunto de atividades de ML específicas para a persona. As permissões das atividades de ML se aplicam somente à Amazon VPC e às AWS KMS configurações especificadas na construção da persona. O código a seguir cria uma classe para uma persona de Operações de ML. As atividades de ML são definidas na lista de atividades. As permissões de VPC e de KMS são definidas como parâmetros opcionais fora da lista de atividades.

Depois de definir a classe, você pode criar uma função como uma construção na AWS CDK pilha. Você também pode criar um perfil de usuário do Amazon SageMaker Studio Classic. A pessoa que está usando a função do IAM que você criou no código a seguir pode abrir o SageMaker Studio Classic ao fazer login na AWS conta.

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, ... }); } }

O código a seguir cria uma persona de Operações de ML com um conjunto de atividades de ML específicas para a persona. O código a seguir cria uma classe para uma persona de Operações de ML. As atividades de ML são definidas na lista de atividades.

Depois de definir a classe, você pode criar uma função como uma construção na AWS CDK pilha. Você também pode criar uma instância de caderno. O código concede permissões das atividades de ML para o perfil do IAM da função do Lambda.

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); } }

O código a seguir cria uma atividade de ML e cria um perfil a partir da atividade. As permissões da atividade se aplicam somente à configuração de VPC e KMS que você especifica para o usuário.

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'); } }

O código a seguir cria um perfil do IAM para uma única atividade de ML.

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') } }