Otorgue a las instancias de SageMaker notebook acceso temporal a un CodeCommit repositorio de otra cuenta de AWS - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Otorgue a las instancias de SageMaker notebook acceso temporal a un CodeCommit repositorio de otra cuenta de AWS

Creado por Helge Aufderheide (AWS)

Entorno: producción

Tecnologías: análisis DevOps, aprendizaje automático e inteligencia artificial, gestión y gobierno

Servicios de AWS: AWS CodeCommit; AWS Identity and Access Management; Amazon SageMaker

Resumen

Este patrón muestra cómo conceder a las instancias de Amazon SageMaker Notebook y a los usuarios acceso temporal a un CodeCommit repositorio de AWS que se encuentra en otra cuenta de AWS. También indica cómo conceder permisos detallados para acciones específicas que cada entidad puede realizar en un repositorio.

Las organizaciones suelen almacenar CodeCommit los repositorios en una cuenta de AWS diferente a la cuenta que aloja su entorno de desarrollo. Esta configuración de múltiples cuentas ayuda a controlar el acceso a los repositorios y reduce el riesgo de que se eliminen accidentalmente. Para conceder estos permisos entre cuentas, se recomienda usar roles de AWS Identity and Access Management (IAM). Las identidades de IAM predefinidas en cada cuenta de AWS podrán asumir temporalmente los roles para crear una cadena de confianza controlada en todas las cuentas.

Nota: Puede aplicar un procedimiento similar para conceder a otras identidades de IAM el acceso multicuenta a un repositorio. CodeCommit Para obtener más información, consulte Configurar el acceso multicuenta a un CodeCommit repositorio de AWS mediante roles en la Guía del CodeCommit usuario de AWS.

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta de AWS activa con un CodeCommit repositorio (cuenta A)

  • Una segunda cuenta de AWS activa con una instancia de SageMaker notebook (cuenta B)

  • Un usuario de AWS con permisos suficientes para crear y modificar roles de IAM en la cuenta A

  • Un segundo usuario de AWS con permisos suficientes para crear y modificar roles de IAM en la cuenta B

Arquitectura

En el siguiente diagrama se muestra un ejemplo de flujo de trabajo para conceder a una instancia de SageMaker Notebook y a los usuarios de una cuenta de AWS acceso multicuenta a un CodeCommit repositorio:

Flujo de trabajo para el acceso multicuenta a CodeCommit

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. El rol de usuario de AWS y el rol de instancia de SageMaker notebook en la cuenta B asumen un perfil con nombre.

  2. La política de permisos del perfil mencionado especifica un rol de CodeCommit acceso en la cuenta A que luego asume el perfil.

  3. La política de confianza del rol de CodeCommit acceso en la cuenta A permite que el perfil designado en la cuenta B asuma el rol de CodeCommit acceso.

  4. La política de permisos de IAM del CodeCommit repositorio en la cuenta A permite que el CodeCommit rol de acceso acceda al CodeCommit repositorio.

Pila de tecnología

  • CodeCommit

  • Git

  • IAM

  • pip

  • SageMaker

Herramientas

  • AWS CodeCommit es un servicio de control de versiones que le ayuda a almacenar y gestionar repositorios de Git de forma privada, sin necesidad de gestionar su propio sistema de control de código fuente.

  • AWS Identity and Access Management (IAM) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.

  • Git es un sistema de control de versiones distribuido que rastrea los cambios en el código fuente durante el desarrollo del software.

  • git-remote-codecommites una utilidad que te ayuda a insertar y extraer código de CodeCommit los repositorios mediante la extensión de Git.

  • pip es el instalador de paquetes para Python. Puede usar pip para instalar paquetes desde Python Package Index y otros índices.

Prácticas recomendadas

Cuando establezca permisos con políticas de IAM, conceda solo los permisos necesarios para llevar a cabo una tarea. Para obtener más información, consulte Aplicar permisos de privilegio mínimo en la documentación de IAM.

Al implementar este patrón, asegúrese de hacer lo siguiente:

  • Confirme que los principios de IAM solo tienen los permisos necesarios para realizar acciones específicas y necesarias en cada repositorio. Por ejemplo, se recomienda permitir que los principios de IAM aprobados envíen y combinen los cambios en ramificaciones específicas del repositorio, pero que solo puedan solicitar combinaciones en las ramificaciones protegidas.

  • Confirme que a los principios de IAM se les asignen diferentes roles de de IAM en función de los roles y responsabilidades respectivos de cada proyecto. Por ejemplo, un desarrollador tendrá permisos de acceso diferentes a los de un administrador de versiones o un administrador de AWS.

Epics

TareaDescripciónHabilidades requeridas

Configura el rol de CodeCommit acceso y la política de permisos.

Nota: Para automatizar el proceso de configuración manual documentado en esta epopeya, puede utilizar una CloudFormation plantilla de AWS.

En la cuenta que contiene el CodeCommit repositorio (cuenta A), haga lo siguiente:

  1. Cree una función de IAM que pueda asumir la función de instancia de SageMaker bloc de notas de la cuenta B.

  2. Cree una política de IAM que conceda acceso al repositorio y asocie la política al rol. Solo con fines de prueba, elija la política administrada por AWSCodeCommitPowerUserAWS. Esta política concede todos los CodeCommit permisos excepto la posibilidad de eliminar recursos.

  3. Modifique la política de confianza del rol para que la cuenta B aparezca como entidad de confianza.

Importante: antes de trasladar esta configuración a su entorno de producción, se recomienda redactar su propia política de IAM que aplique permisos de privilegio mínimo. Para obtener más información, consulte la sección de Información adicional de este patrón.

AWS general, AWS DevOps

Conceda permisos a la instancia de SageMaker bloc de notas en la cuenta B para que asuma la función de CodeCommit acceso en la cuenta A.

En la cuenta que contiene la función de IAM de la instancia de SageMaker bloc de notas (cuenta B), haga lo siguiente:

  1. Cree una política de IAM que permita a un usuario o rol de IAM asumir el rol de CodeCommit acceso en la cuenta A.

    Ejemplo de política de permisos de IAM que permite a un usuario o rol de IAM asumir un rol entre cuentas

    {   "Version": "2012-10-17",   "Statement": [       {     "Sid": "VisualEditor0",     "Effect": "Allow",     "Action": "sts:AssumeRole",     "Resource": "arn:aws:iam:::accountA_ID:role/accountArole_ID"   } }
  2. Adjunta la política a la función de la instancia de tu SageMaker bloc de notas en la cuenta B.

  3. Haga que la función de la instancia de SageMaker bloc de notas en la cuenta B asuma la función de CodeCommit acceso en la cuenta A.

Nota: Para ver el nombre de recurso de Amazon (ARN) de su repositorio, consulte Ver detalles del CodeCommit repositorio en la Guía CodeCommit del usuario de AWS.

AWS general, AWS DevOps
TareaDescripciónHabilidades requeridas

Configure un perfil de usuario en la instancia de AWS SageMaker Notebook para que asuma el rol en la cuenta A.

Importante: asegúrese de tener instalada la última versión de la interfaz de la línea de comandos de AWS (AWS CLI).

En la cuenta que contiene la instancia de SageMaker bloc de notas (cuenta B), haga lo siguiente:

  1. Inicie sesión en la consola de administración de AWS y abra la consola de SageMaker .

  2. Acceda a la instancia de su SageMaker bloc de notas. Se abrirá la interfaz de Jupyter.

  3. Seleccione Nuevo y, a continuación, seleccione Terminal. Se abrirá una nueva ventana de terminal en su entorno de Jupyter.

  4. Navegue hasta el archivo ~/.aws/config de la instancia del SageMaker bloc de notas. A continuación, añada un perfil de usuario al archivo introduciendo la siguiente instrucción:

------.aws/config-------------- [profile remoterepouser] role_arn = arn:aws:iam::<ID of Account A>:role/<rolename> role_session_name = remoteaccesssession region = eu-west-1 credential_source = Ec2InstanceMetadata ----------------------------------
AWS general, AWS DevOps

Instale la git-remote-codecommit utilidad.

Siga las instrucciones del paso 2: Instalación de git-remote-codecommit la Guía del CodeCommit usuario de AWS.

Científico de datos
TareaDescripciónHabilidades requeridas

Acceda al CodeCommit repositorio mediante los comandos de Git o SageMaker.

Uso en Git

Los directores de IAM que asumen la función de la instancia de SageMaker bloc de notas en la cuenta B ahora pueden ejecutar comandos de Git para acceder al CodeCommit repositorio de la cuenta A. Por ejemplo, los usuarios pueden ejecutar comandos como git clonegit pull, y. git push

Para obtener instrucciones, consulte Conectarse a un CodeCommit repositorio de AWS en la Guía del CodeCommit usuario de AWS.

Para obtener información sobre cómo usar Git con CodeCommit, consulte Introducción a AWS CodeCommit en la Guía del CodeCommit usuario de AWS.

Para usar SageMaker

Para usar Git desde la SageMaker consola, debes permitir que Git recupere las credenciales de tu CodeCommit repositorio. Para obtener instrucciones, consulte Asociar un CodeCommit repositorio de una cuenta de AWS diferente a una instancia de notebook en la SageMaker documentación.

Git, consola bash

Recursos relacionados

Información adicional

Restringir los CodeCommit permisos a acciones específicas

Para restringir las acciones que un responsable de IAM puede realizar en el CodeCommit repositorio, modifique las acciones que están permitidas en la política de CodeCommit acceso.

Para obtener más información sobre las operaciones de la CodeCommit API, consulte la referencia de CodeCommit permisos en la Guía del CodeCommit usuario de AWS.

Nota: También puede editar la política gestionada por AWSCodeCommitPowerUserAWS para adaptarla a su caso de uso.

Restringir CodeCommit los permisos a repositorios específicos

Para crear un entorno multiusuario en el que solo usuarios específicos puedan acceder a más de un repositorio de código, haga lo siguiente:

  1. Cree varios roles de CodeCommit acceso en la cuenta A. A continuación, configure la política de confianza de cada rol de acceso para permitir que usuarios específicos de la cuenta B asuman el rol.

  2. Restrinja los repositorios de código que puede asumir cada función añadiendo una condición de «recurso» a la política de cada función de CodeCommit acceso.

Ejemplo de condición de «recurso» que restringe el acceso de un director de IAM a un repositorio específico CodeCommit

"Resource" : [<REPOSITORY_ARN>,<REPOSITORY_ARN> ]

Nota: para ayudar a identificar y diferenciar varios repositorios de código en la misma cuenta de AWS, puede asignar distintos prefijos a los nombres de los repositorios. Por ejemplo, puede asignar nombres a los repositorios de código con prefijos que correspondan a distintos grupos de desarrolladores, como myproject-subproject1-repo1 y myproject-subproject2-repo1. A continuación, puede crear un rol de IAM para cada grupo de desarrolladores en función de sus prefijos asignados. Por ejemplo, puedes crear un rol denominado myproject-subproject1-repoaccess y concederle acceso a todos los repositorios de código que incluyen el prefijo myproject-subproject1.

Ejemplo de condición “Recurso” que hace referencia a un ARN de repositorio de código que incluye un prefijo específico

"Resource" : arn:aws:codecommit:<region>:<account-id>:myproject-subproject1-*