Uso del administrador de roles (AWS CDK) - Amazon SageMaker AI

Uso del administrador de roles (AWS CDK)

Utilice el AWS Cloud Development Kit (AWS CDK) con el administrador de roles de Amazon SageMaker para crear roles y establecer permisos mediante programación. Puede utilizar el AWS CDK para realizar cualquier tarea que pueda realizar con la Consola de administración de AWS. El acceso programático del CDK facilita la concesión de permisos que permitan a los usuarios acceder a recursos específicos. Para obtener más información acerca del AWS CDK, consulte ¿Qué es AWS CDK?

importante

Debe utilizar la persona de rol de computación de SageMaker AI para crear un rol de computación de SageMaker AI. Para obtener más información acerca de la persona de computación, consulte Persona de computación de SageMaker AI. Para ver el código que puede usar para crear el rol de computación dentro del AWS CDK, consulte Conceder permisos a una persona de computación.

A continuación se muestran ejemplos de tareas que puede realizar en el AWS CDK:

  • Crear roles de IAM con permisos detallados para personas dedicadas al machine learning (ML), como científicos de datos e ingenieros de MLOps.

  • Conceder permisos a construcciones de CDK a partir de personas o actividades de ML.

  • Establecer parámetros de condición de actividad de ML.

  • Habilitar condiciones globales de Amazon VPC y AWS Key Management Service y establecer valores para ellas.

  • Elegir entre todas las versiones de las actividades de ML para sus usuarios sin interrumpir su acceso.

Hay tareas habituales de AWS relacionadas con el machine learning (ML) en SageMaker AI que requieren permisos de IAM específicos. Los permisos para realizar las tareas se definen como actividades de ML en el administrador de roles de Amazon SageMaker. Las actividades de ML especifican un conjunto de permisos que están vinculados al rol de IAM. Por ejemplo, la actividad de ML de Amazon SageMaker Studio Classic tiene todos los permisos que un usuario necesita para acceder a Studio Classic. Para obtener más información sobre las actividades de ML, consulte Referencia de actividad de ML.

Al crear roles, primero debe definir los constructos para la persona de ML o la actividad de ML. Un constructo es un recurso dentro de la pila de AWS CDK. Por ejemplo, un constructo podría ser un bucket de Amazon S3, una subred de Amazon VPC o un rol de IAM.

Al crear la persona o actividad, puede limitar los permisos asociados a esa persona o actividad a recursos específicos. Por ejemplo, puede personalizar la actividad para que solo proporcione permisos para una subred específica dentro de una Amazon VPC.

Una vez definidos los permisos, puede crear roles y, a continuación, transferirlos para crear otros recursos, como instancias de cuaderno de SageMaker.

Los siguientes son ejemplos de código en TypeScript para tareas que puede realizar con el CDK. Al crear una actividad, se especifica un ID y las opciones para el constructo de la actividad. Las opciones son diccionarios que especifican los parámetros necesarios para las actividades, como un Amazon S3. Se pasa un diccionario vacío para las actividades que no tienen los parámetros necesarios.

El siguiente código crea una persona de ML de científico de datos con un conjunto de actividades de ML específicas para esa persona. Los permisos de las actividades de ML solo se aplican a la Amazon VPC y a las configuraciones de AWS KMS especificadas en el constructo de persona. El siguiente código crea una clase para una persona de científico de datos. Las actividades de ML se definen en la lista de actividades. Los permisos de VPC y los permisos de KMS se definen como parámetros opcionales fuera de la lista de actividades.

Una vez que haya definido la clase, puede crear un rol como un constructo dentro de la pila de AWS CDK. También puede crear una instancia de cuaderno. La persona que usa el rol de IAM que ha creado en el siguiente código puede acceder a la instancia de cuaderno al iniciar sesión en su cuenta de 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'); } }

El siguiente código crea una persona de ML de científico de datos con un conjunto de actividades de ML específicas para esa persona. Los permisos de las actividades de ML solo se aplican a la VPC y a las configuraciones de KMS especificadas en el constructo de persona. El siguiente código crea una clase para una persona de científico de datos. Las actividades de ML se definen en la lista de actividades. Los permisos de Amazon VPC y los permisos de AWS KMS se definen como parámetros opcionales fuera de la lista de actividades.

Una vez que haya definido la clase, puede crear un rol como un constructo dentro de la pila de AWS CDK. También puede crear una instancia de cuaderno. La persona que usa el rol de IAM que ha creado en el siguiente código puede acceder a la instancia de cuaderno al iniciar sesión en su cuenta de 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('amzn-s3-demo-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, ...}); } }

El siguiente código crea una persona de MLOps con un conjunto de actividades de ML específicas para esa persona. Los permisos de las actividades de ML solo se aplican a la Amazon VPC y a las configuraciones de AWS KMS especificadas en el constructo de persona. El siguiente código crea una clase para una persona de MLOps. Las actividades de ML se definen en la lista de actividades. Los permisos de VPC y los permisos de KMS se definen como parámetros opcionales fuera de la lista de actividades.

Una vez que haya definido la clase, puede crear un rol como un constructo dentro de la pila de AWS CDK. También puede crear un perfil de usuario de Amazon SageMaker Studio Classic. La persona que usa el rol de IAM que ha creado en el siguiente código puede abrir SageMaker Studio Classic al iniciar sesión en su cuenta de 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.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, ... }); } }

El siguiente código crea una persona de MLOps con un conjunto de actividades de ML específicas para esa persona. El siguiente código crea una clase para una persona de MLOps. Las actividades de ML se definen en la lista de actividades.

Una vez que haya definido la clase, puede crear un rol como un constructo dentro de la pila de AWS CDK. También puede crear una instancia de cuaderno. El código concede permisos de las actividades de ML al rol de IAM de la función de 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); } }

El siguiente código crea una actividad de ML y crea un rol a partir de la actividad. Los permisos de la actividad solo se aplican a la configuración de VPC y KMS que especifique para el usuario.

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

El siguiente código crea un rol de IAM para una única actividad 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') } }