Donnez aux instances de SageMaker bloc-notes un accès temporaire à un CodeCommit référentiel dans un autre compte AWS - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Donnez aux instances de SageMaker bloc-notes un accès temporaire à un CodeCommit référentiel dans un autre compte AWS

Créée par Helge Aufderheide (AWS)

Environnement : Production

Technologies : DevOps ; Analytique ; Apprentissage automatique et intelligence artificielle ; Gestion et gouvernance

Services AWS : AWS CodeCommit ; AWS Identity and Access Management ; Amazon SageMaker

Récapitulatif

Ce modèle montre comment accorder aux instances d'Amazon SageMaker Notebook et aux utilisateurs un accès temporaire à un CodeCommit référentiel AWS qui se trouve dans un autre compte AWS. Ce modèle montre également comment vous pouvez accorder des autorisations granulaires pour des actions spécifiques que chaque entité peut effectuer sur chaque référentiel.

Organisations stockent souvent CodeCommit les référentiels dans un compte AWS différent de celui qui héberge leur environnement de développement. Cette configuration multi-comptes permet de contrôler l'accès aux référentiels et de réduire le risque de suppression accidentelle de ceux-ci. Pour accorder ces autorisations entre comptes, il est recommandé d'utiliser les rôles AWS Identity and Access Management (IAM). Les identités IAM prédéfinies de chaque compte AWS peuvent ensuite assumer temporairement les rôles nécessaires pour créer une chaîne de confiance contrôlée entre les comptes.

Remarque : Vous pouvez appliquer une procédure similaire pour accorder à d'autres identités IAM un accès entre comptes à un CodeCommit référentiel. Pour plus d'informations, consultez Configurer l'accès entre comptes à un CodeCommit référentiel AWS à l'aide de rôles dans le guide de l' CodeCommit utilisateur AWS.

Conditions préalables et limitations

Prérequis

  • Un compte AWS actif avec un CodeCommit référentiel (compte A)

  • Un deuxième compte AWS actif avec une instance de SageMaker bloc-notes (compte B)

  • Un utilisateur AWS disposant des autorisations suffisantes pour créer et modifier des rôles IAM dans le compte A

  • Un deuxième utilisateur AWS disposant des autorisations suffisantes pour créer et modifier des rôles IAM dans le compte B

Architecture

Le schéma suivant montre un exemple de flux de travail permettant d'accorder à une instance de SageMaker bloc-notes et aux utilisateurs d'un compte AWS un accès croisé à un CodeCommit référentiel :

Flux de travail pour l'accès entre comptes à CodeCommit

Le schéma suivant illustre le flux de travail suivant :

  1. Le rôle d'utilisateur AWS et le rôle d'instance de SageMaker bloc-notes dans le compte B supposent un profil nommé.

  2. La politique d'autorisation du profil nommé spécifie un rôle d' CodeCommit accès dans le compte A que le profil assume ensuite.

  3. La politique de confiance du rôle d' CodeCommit accès dans le compte A permet au profil nommé dans le compte B d'assumer le rôle CodeCommit d'accès.

  4. La politique d'autorisations IAM du CodeCommit référentiel dans le compte A autorise le rôle CodeCommit d'accès à accéder au CodeCommit référentiel.

Pile technologique

  • CodeCommit

  • Git

  • IAM

  • pip

  • SageMaker

Outils

  • AWS CodeCommit est un service de contrôle de version qui vous permet de stocker et de gérer de manière privée des référentiels Git, sans avoir à gérer votre propre système de contrôle de source.

  • AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.

  • Git est un système de contrôle de version distribué permettant de suivre les modifications du code source pendant le développement de logiciels.

  • git-remote-codecommitest un utilitaire qui vous permet de transférer et d'extraire du code depuis des CodeCommit référentiels en étendant Git.

  • pip est le programme d'installation du package pour Python. Vous pouvez utiliser pip pour installer des packages à partir de l'index des packages Python et d'autres index.

Bonnes pratiques

Lorsque vous définissez des autorisations à l'aide de politiques IAM, assurez-vous de n'accorder que les autorisations requises pour effectuer une tâche. Pour plus d'informations, veuillez consulter la rubrique Accorder les autorisations de moindre privilège dans la documentation IAM.

Lorsque vous implémentez ce modèle, veillez à effectuer les opérations suivantes :

  • Vérifiez que les principes IAM disposent uniquement des autorisations requises pour effectuer des actions spécifiques et nécessaires au sein de chaque référentiel. Par exemple, il est recommandé d'autoriser les principes IAM approuvés à appliquer et à fusionner les modifications apportées à des branches spécifiques du référentiel, mais de ne demander des fusions qu'aux branches protégées.

  • Vérifiez que les principes IAM se voient attribuer différents rôles IAM en fonction de leurs rôles et responsabilités respectifs pour chaque projet. Par exemple, les autorisations d'accès d'un développeur seront différentes de celles d'un responsable de publication ou d'un administrateur AWS.

Épopées

TâcheDescriptionCompétences requises

Configurez le rôle CodeCommit d'accès et la politique d'autorisations.

Remarque : pour automatiser le processus de configuration manuelle décrit dans cette épopée, vous pouvez utiliser un CloudFormation modèle AWS.

Dans le compte qui contient le CodeCommit référentiel (compte A), procédez comme suit :

  1. Créez un rôle IAM qui peut être assumé par le rôle d'instance de SageMaker bloc-notes dans le compte B.

  2. Créez une politique IAM qui accorde l'accès au référentiel et attachez la politique au rôle. À des fins de test uniquement, choisissez la politique gérée par AWSCodeCommitPowerUserAWS. Cette politique accorde toutes les CodeCommit autorisations, à l'exception de la possibilité de supprimer des ressources.

  3. Modifiez la politique de confiance du rôle afin que le compte B soit répertorié comme entité de confiance.

Important : Avant de transférer cette configuration dans votre environnement de production, il est recommandé de rédiger votre propre politique IAM qui applique les autorisations du moindre privilège. Pour plus d'informations, consultez la section Informations supplémentaires de ce modèle.

Informations générales sur AWS, AWS DevOps

Accordez à l'instance du SageMaker bloc-notes l'autorisation d'assumer le rôle CodeCommit d'accès dans le compte A.

Dans le compte qui contient le rôle IAM de l'instance de SageMaker bloc-notes (compte B), procédez comme suit :

  1. Créez une politique IAM qui permet à un rôle ou à un utilisateur IAM d'assumer le rôle d' CodeCommit accès dans le compte A.

    Exemple de politique d'autorisations IAM qui permet à un rôle ou à un utilisateur IAM d'assumer un rôle multicompte

    {   "Version": "2012-10-17",   "Statement": [       {     "Sid": "VisualEditor0",     "Effect": "Allow",     "Action": "sts:AssumeRole",     "Resource": "arn:aws:iam:::accountA_ID:role/accountArole_ID"   } }
  2. Associez la politique au rôle de votre instance de SageMaker bloc-notes dans le compte B.

  3. Faites en sorte que le rôle de l'instance du SageMaker bloc-notes dans le compte B assume le rôle CodeCommit d'accès dans le compte A.

Remarque : pour consulter le nom de ressource Amazon (ARN) de votre dépôt, consultez Afficher les détails CodeCommit du référentiel dans le guide de CodeCommit l'utilisateur AWS.

Informations générales sur AWS, AWS DevOps
TâcheDescriptionCompétences requises

Configurez un profil utilisateur sur l'instance de SageMaker bloc-notes AWS pour assumer le rôle dans le compte A.

Important : Assurez-vous que la dernière version de l'interface de ligne de commande AWS (AWS CLI) est installée.

Dans le compte qui contient l'instance de SageMaker bloc-notes (compte B), procédez comme suit :

  1. Connectez-vous à l'AWS Management Console et ouvrez la SageMaker console.

  2. Accédez à votre instance de SageMaker bloc-notes. L'interface Jupyter s'ouvre.

  3. Choisissez Nouveau, puis Terminal. Une nouvelle fenêtre de terminal s'ouvre dans votre environnement Jupyter.

  4. Accédez au fichier ~/.aws/config de l'instance de SageMaker bloc-notes. Ajoutez ensuite un profil utilisateur au fichier en saisissant l'instruction suivante :

------.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 ----------------------------------
Informations générales sur AWS, AWS DevOps

Installez l' git-remote-codecommit utilitaire.

Suivez les instructions de l'étape 2 : Installation git-remote-codecommit dans le guide de CodeCommit l'utilisateur AWS.

Spécialiste des données
TâcheDescriptionCompétences requises

Accédez au CodeCommit référentiel à l'aide des commandes Git ou SageMaker.

Pour utiliser Git

Les principaux IAM qui assument le rôle de l'instance de SageMaker bloc-notes dans le compte B peuvent désormais exécuter des commandes Git pour accéder au CodeCommit référentiel du compte A. Par exemple, les utilisateurs peuvent exécuter des commandes telles que git clonegit pull, et. git push

Pour obtenir des instructions, consultez la section Se connecter à un CodeCommit référentiel AWS dans le guide de CodeCommit l'utilisateur AWS.

Pour plus d'informations sur l'utilisation de Git avec CodeCommit, consultez Getting started with AWS CodeCommit dans le guide de CodeCommit l'utilisateur AWS.

À utiliser SageMaker

Pour utiliser Git depuis la SageMaker console, vous devez autoriser Git à récupérer les informations d'identification de votre CodeCommit dépôt. Pour obtenir des instructions, consultez la section Associer un CodeCommit référentiel d'un autre compte AWS à une instance de bloc-notes dans la SageMaker documentation.

Git, console bash

Ressources connexes

Informations supplémentaires

Restreindre CodeCommit les autorisations à des actions spécifiques

Pour limiter les actions qu'un principal IAM peut effectuer dans le CodeCommit référentiel, modifiez les actions autorisées dans la politique CodeCommit d'accès.

Pour plus d'informations sur les opérations CodeCommit d'API, consultez la référence CodeCommit des autorisations dans le guide de CodeCommit l'utilisateur AWS.

Remarque : vous pouvez également modifier la politique gérée par AWSCodeCommitPowerUserAWS en fonction de votre cas d'utilisation.

Restreindre CodeCommit les autorisations à des référentiels spécifiques

Pour créer un environnement mutualisé dans lequel plusieurs référentiels de code ne sont accessibles qu'à des utilisateurs spécifiques, procédez comme suit :

  1. Créez plusieurs rôles CodeCommit d'accès dans le compte A. Configurez ensuite la politique de confiance de chaque rôle d'accès pour permettre à des utilisateurs spécifiques du compte B d'assumer le rôle.

  2. Limitez les référentiels de code que chaque rôle peut assumer en ajoutant une condition « Ressource » à la politique de chaque rôle CodeCommit d'accès.

Exemple de condition de « ressource » qui restreint l'accès d'un principal IAM à un référentiel spécifique CodeCommit

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

Remarque : pour identifier et différencier plusieurs référentiels de code dans le même compte AWS, vous pouvez attribuer différents préfixes aux noms des référentiels. Par exemple, vous pouvez nommer les référentiels de code avec des préfixes correspondant à différents groupes de développeurs, tels que myproject-subproject1-repo1 et myproject-subproject2-repo1. Vous pouvez ensuite créer un rôle IAM pour chaque groupe de développeurs en fonction des préfixes qui leur ont été attribués. Par exemple, vous pouvez créer un rôle nommé myproject-subproject1-repoaccess et lui accorder l'accès à tous les référentiels de code qui incluent le préfixe myproject-subproject1.

Exemple de condition de « ressource » faisant référence à un ARN de référentiel de code qui inclut un préfixe spécifique

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