Concedi alle istanze di SageMaker notebook l'accesso temporaneo a un CodeCommit repository in un altro account AWS - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Concedi alle istanze di SageMaker notebook l'accesso temporaneo a un CodeCommit repository in un altro account AWS

Creato da Helge Aufderheide () AWS

Ambiente: produzione

Tecnologie: DevOps; Analisi; Apprendimento automatico e intelligenza artificiale; Gestione e governance

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

Riepilogo

Avviso: non AWS CodeCommit è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni

Questo modello mostra come concedere alle istanze e agli utenti di Amazon SageMaker Notebook l'accesso temporaneo a un AWS CodeCommit repository che si trova in un altro AWS account. Questo modello mostra anche come è possibile concedere autorizzazioni granulari per azioni specifiche che ciascuna entità può eseguire su ciascun repository.

Organizations spesso archivia i CodeCommit repository in un AWS account diverso da quello che ospita il loro ambiente di sviluppo. Questa configurazione multi-account aiuta a controllare l'accesso ai repository e riduce il rischio di una loro eliminazione accidentale. Per concedere queste autorizzazioni tra account, è consigliabile utilizzare i ruoli AWS Identity and Access Management (IAM). Quindi, IAM le identità predefinite in ogni AWS account possono assumere temporaneamente i ruoli per creare una catena di fiducia controllata tra gli account.

Nota: è possibile applicare una procedura simile per concedere ad altre IAM identità l'accesso a un repository su più account. CodeCommit Per ulteriori informazioni, consulta Configurare l'accesso tra più account a un AWS CodeCommit repository utilizzando i ruoli nella Guida per l'utente. AWS CodeCommit

Prerequisiti e limitazioni

Prerequisiti

  • Un AWS account attivo con un CodeCommit repository (account A)

  • Un secondo AWS account attivo con un'istanza SageMaker notebook (account B)

  • Un AWS utente con autorizzazioni sufficienti per creare e modificare IAM i ruoli nell'account A

  • Un secondo AWS utente con autorizzazioni sufficienti per creare e modificare IAM ruoli nell'account B

Architettura

Il diagramma seguente mostra un esempio di flusso di lavoro per concedere a un'istanza di SageMaker notebook e agli utenti di un account l'accesso a un AWS repository tra più account: CodeCommit

Flusso di lavoro per l'accesso tra account diversi a CodeCommit

Il diagramma mostra il flusso di lavoro seguente:

  1. Il ruolo AWS utente e il ruolo dell'istanza SageMaker notebook nell'account B presuppongono un profilo denominato.

  2. La politica di autorizzazione del profilo denominato specifica un ruolo di CodeCommit accesso nell'account A che il profilo assume successivamente.

  3. La politica di fiducia del ruolo di CodeCommit accesso nell'account A consente al profilo denominato nell'account B di assumere il CodeCommit ruolo di accesso.

  4. La politica di IAM autorizzazione del CodeCommit repository nell'account A consente al ruolo di CodeCommit accesso di accedere al CodeCommit repository.

Stack tecnologico

  • CodeCommit

  • Git

  • IAM

  • pip

  • SageMaker

Strumenti

  • AWS CodeCommitè un servizio di controllo delle versioni che consente di archiviare e gestire in modo privato gli archivi Git, senza dover gestire il proprio sistema di controllo del codice sorgente.

  • AWSIdentity and Access Management (IAM) consente di gestire in modo sicuro l'accesso alle AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.

  • Git è un sistema distribuito di controllo delle versioni per tenere traccia delle modifiche nel codice sorgente durante lo sviluppo del software.

  • git-remote-codecommitè un'utilità che consente di inviare ed estrarre codice dai CodeCommit repository estendendo Git.

  • pip è l'installatore di pacchetti per Python. Puoi usare pip per installare pacchetti dal Python Package Index e da altri indici.

Best practice

Quando imposti le autorizzazioni con IAM le politiche, assicurati di concedere solo le autorizzazioni necessarie per eseguire un'attività. Per ulteriori informazioni, consulta Applicare le autorizzazioni con privilegi minimi nella documentazione. IAM

Quando implementate questo modello, assicuratevi di fare quanto segue:

  • Verifica che IAM i principi dispongano solo delle autorizzazioni necessarie per eseguire azioni specifiche e necessarie all'interno di ciascun repository. Ad esempio, si consiglia di consentire ai IAM principi approvati di inviare e unire le modifiche a rami specifici del repository, ma di richiedere le unioni solo ai branch protetti.

  • Conferma che IAM ai principi siano assegnati IAM ruoli diversi in base ai rispettivi ruoli e responsabilità per ciascun progetto. Ad esempio, uno sviluppatore avrà autorizzazioni di accesso diverse rispetto a quelle di un release manager o di un AWS amministratore.

Epiche

AttivitàDescrizioneCompetenze richieste

Configura il ruolo di CodeCommit accesso e la politica delle autorizzazioni.

Nota: per automatizzare il processo di configurazione manuale documentato in questa epopea, puoi utilizzare un modello. AWS CloudFormation

Nell'account che contiene il CodeCommit repository (account A), procedi come segue:

  1. Crea un IAM ruolo che possa essere assunto dal ruolo dell'istanza SageMaker notebook nell'account B.

  2. Crea una IAM policy che conceda l'accesso al repository e allega la policy al ruolo. Solo a scopo di test, scegli la policy AWSCodeCommitPowerUserAWSgestita. Questa politica concede tutte le CodeCommit autorizzazioni tranne la possibilità di eliminare le risorse.

  3. Modifica la politica di fiducia del ruolo in modo che l'account B sia elencato come entità attendibile.

Importante: prima di spostare questa configurazione nell'ambiente di produzione, è consigliabile scrivere una IAM politica personalizzata che applichi i permessi con privilegi minimi. Per ulteriori informazioni, consulta la sezione Informazioni aggiuntive di questo modello.

GeneraleAWS, AWS DevOps

Concedi al ruolo dell'istanza SageMaker notebook nell'account B le autorizzazioni per assumere il ruolo di CodeCommit accesso nell'account A.

Nell'account che contiene il IAM ruolo dell'istanza del SageMaker notebook (account B), procedi come segue:

  1. Crea una IAM policy che consenta a un IAM ruolo o a un utente di assumere il ruolo di CodeCommit accesso nell'account A.

    Esempio di politica di IAM autorizzazione che consente a un IAM ruolo o a un utente di assumere un ruolo su più account

    {   "Version": "2012-10-17",   "Statement": [       {     "Sid": "VisualEditor0",     "Effect": "Allow",     "Action": "sts:AssumeRole",     "Resource": "arn:aws:iam:::accountA_ID:role/accountArole_ID"   } }
  2. Allega la policy al ruolo dell'istanza del tuo SageMaker notebook nell'account B.

  3. Fai in modo che il ruolo dell'istanza SageMaker notebook nell'account B assuma il ruolo di CodeCommit accesso nell'account A.

Nota: per visualizzare l'Amazon Resource Name (ARN) del tuo repository, consulta Visualizza i dettagli del CodeCommit repository nella Guida per l'AWS CodeCommit utente.

Generale, AWS AWS DevOps
AttivitàDescrizioneCompetenze richieste

Imposta un profilo utente sull'istanza del AWS SageMaker notebook per assumere il ruolo nell'account A.

Importante: assicurati di avere installata la versione più recente dell'interfaccia a riga di AWS comando (AWSCLI).

Nell'account che contiene l'istanza del SageMaker notebook (account B), procedi come segue:

  1. Accedi alla console di AWS gestione e apri la SageMaker console.

  2. Accedi all'istanza del tuo SageMaker notebook. Si apre l'interfaccia di Jupyter.

  3. Scegli Nuovo, quindi scegli Terminale. Si apre una nuova finestra di terminale nell'ambiente Jupyter.

  4. Vai al file SageMaker ~/.aws/config dell'istanza del notebook. Quindi, aggiungi un profilo utente al file inserendo la seguente dichiarazione:

------.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 ----------------------------------
GeneraleAWS, AWS DevOps

Installa l' git-remote-codecommitutilità.

Segui le istruzioni riportate nella Fase 2: Installazione git-remote-codecommit nella Guida AWS CodeCommit per l'utente.

Data scientist
AttivitàDescrizioneCompetenze richieste

Accedi al CodeCommit repository utilizzando i comandi Git o SageMaker.

Per usare Git

IAMi principali che assumono il ruolo dell'istanza del SageMaker notebook nell'account B possono ora eseguire comandi Git per accedere al CodeCommit repository nell'account A. Ad esempio, gli utenti possono eseguire comandi come git clonegit pull, e. git push

Per istruzioni, consulta Connect to an AWS CodeCommit repository nella Guida per l'AWS CodeCommit utente.

Per informazioni su come usare Git con CodeCommit, vedi Guida introduttiva AWS CodeCommit nella Guida per l'AWS CodeCommit utente.

Da usare SageMaker

Per usare Git dalla SageMaker console, devi consentire a Git di recuperare le credenziali dal tuo CodeCommit repository. Per istruzioni, consulta Associare un CodeCommit repository in un AWS account diverso a un'istanza di notebook nella documentazione. SageMaker

Git, console bash

Risorse correlate

Informazioni aggiuntive

Limitazione delle CodeCommit autorizzazioni a azioni specifiche

Per limitare le azioni che un IAM principale può eseguire nel CodeCommit repository, modifica le azioni consentite nella CodeCommit politica di accesso.

Per ulteriori informazioni sulle CodeCommit API operazioni, consulta il riferimento CodeCommit alle autorizzazioni nella Guida per l'AWS CodeCommit utente.

Nota: puoi anche modificare la policy AWSCodeCommitPowerUserAWSgestita per adattarla al tuo caso d'uso.

Limitazione delle CodeCommit autorizzazioni a repository specifici

Per creare un ambiente multitenant in cui più di un repository di codice siano accessibili solo a utenti specifici, procedi come segue:

  1. Crea più ruoli di CodeCommit accesso nell'account A. Quindi, configura la politica di fiducia di ciascun ruolo di accesso per consentire a utenti specifici dell'account B di assumere il ruolo.

  2. Limita gli archivi di codice che ogni ruolo può assumere aggiungendo una condizione «Risorsa» alla politica di ciascun ruolo di CodeCommit accesso.

Esempio di condizione «Risorsa» che limita l'accesso di un IAM principale a un archivio specifico CodeCommit

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

Nota: per facilitare l'identificazione e la differenziazione di più repository di codice nello stesso AWS account, è possibile assegnare prefissi diversi ai nomi dei repository. Ad esempio, puoi denominare gli archivi di codice con prefissi che si allineano a diversi gruppi di sviluppatori, come myproject-subproject1-repo1 e myproject-subproject2-repo1. Quindi, IAM puoi creare un ruolo per ogni gruppo di sviluppatori in base ai prefissi assegnati. Ad esempio, puoi creare un ruolo denominato myproject-subproject1-repoaccess e concedergli l'accesso a tutti gli archivi di codice che includono il prefisso myproject-subproject1.

Esempio di condizione «Resource» che si riferisce a un repository di codice che include un prefisso specifico ARN

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