Offri 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à.

Offri 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

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

Riepilogo

Questo modello mostra come concedere alle istanze e agli utenti di SageMaker notebook Amazon l'accesso temporaneo a un CodeCommit repository AWS che si trova in un altro account AWS. 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 account AWS 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 che vengano eliminati accidentalmente. Per concedere queste autorizzazioni su più account, è consigliabile utilizzare i ruoli AWS Identity and Access Management (IAM). Quindi, le identità IAM predefinite in ogni account AWS possono assumere temporaneamente i ruoli per creare una catena di fiducia controllata tra gli account.

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

Prerequisiti e limitazioni

Prerequisiti

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

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

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

  • Un secondo utente AWS con autorizzazioni sufficienti per creare e modificare ruoli IAM 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 AWS l'accesso multiaccount a un repository: CodeCommit

Flusso di lavoro per l'accesso a più account a CodeCommit

Il diagramma mostra il flusso di lavoro seguente:

  1. Il ruolo utente AWS 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 autorizzazione IAM 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 archivi Git in modo privato, senza dover gestire il proprio sistema di controllo del codice sorgente.

  • AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.

  • Git è un sistema distribuito di controllo delle versioni per tracciare le 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 le policy IAM, assicurati di concedere solo le autorizzazioni necessarie per eseguire un'attività. Per ulteriori informazioni, consulta Applicazione delle autorizzazioni del privilegio minimo nella documentazione di IAM.

Quando implementi questo modello, assicurati di fare quanto segue:

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

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

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 ruolo IAM che possa essere assunto dal ruolo dell'istanza SageMaker notebook nell'account B.

  2. Crea una policy IAM che conceda l'accesso al repository e allega la policy al ruolo. Solo a scopo di test, scegli la policy gestita da AWSCodeCommitPowerUserAWS. Questa policy 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 policy IAM personalizzata che applichi le autorizzazioni con privilegi minimi. Per ulteriori informazioni, consulta la sezione Informazioni aggiuntive di questo modello.

Informazioni generali su AWS, 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 ruolo IAM dell'istanza SageMaker notebook (account B), procedi come segue:

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

    Esempio di policy di autorizzazione IAM che consente a un ruolo o utente IAM 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 CodeCommit Visualizza i dettagli del repository nella AWS CodeCommit User Guide.

Informazioni generali su AWS, AWS DevOps
AttivitàDescrizioneCompetenze richieste

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

Importante: assicurati di avere installata la versione più recente di AWS Command Line Interface (AWS CLI).

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

  1. Accedi alla Console di gestione AWS 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 ----------------------------------
Informazioni generali su AWS, AWS DevOps

Installa l' git-remote-codecommit utilità.

Segui le istruzioni nella Fase 2: Installazione git-remote-codecommit nella AWS CodeCommit User Guide.

Data scientist
AttivitàDescrizioneCompetenze richieste

Accedi al CodeCommit repository utilizzando i comandi Git o SageMaker.

Per usare Git

I principali IAM che assumono il ruolo dell'istanza 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 AWS CodeCommit User Guide.

Per informazioni su come usare Git con CodeCommit, consulta Getting started with AWS CodeCommit nella AWS CodeCommit User Guide.

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 altro account AWS a un'istanza notebook nella SageMaker documentazione.

Git, console bash

Risorse correlate

Informazioni aggiuntive

Limitazione delle CodeCommit autorizzazioni a azioni specifiche

Per limitare le azioni che un responsabile IAM può intraprendere nel CodeCommit repository, modifica le azioni consentite nella CodeCommit policy di accesso.

Per ulteriori informazioni sulle operazioni CodeCommit API, consulta il riferimento CodeCommit alle autorizzazioni nella AWS CodeCommit User Guide.

Nota: puoi anche modificare la policy gestita di AWSCodeCommitPowerUserAWS 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 «Resource» che limita l'accesso di un principale IAM a un repository specifico CodeCommit

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

Nota: per aiutare a identificare e differenziare più repository di codice nello stesso account AWS, puoi assegnare prefissi diversi ai nomi dei repository. Ad esempio, puoi denominare repository di codice con prefissi che si allineano a diversi gruppi di sviluppatori, come myproject-subproject1-repo1 e myproject-subproject2-repo1. Quindi, puoi creare un ruolo IAM 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 ARN di un repository di codice che include un prefisso specifico

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