

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
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account"></a>

*Helge Aufderheide, Amazon Web Services*

## Riepilogo
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-summary"></a>

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](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) nella *AWS CodeCommit User Guide*.

## Prerequisiti e limitazioni
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-prereqs"></a>

**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 i ruoli IAM nell'account B

## Architecture
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-architecture"></a>

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 tra più account a CodeCommit\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/54d0fdb3-6d25-4433-9f67-c87846633d61/images/97a799af-ce88-4495-a61c-d0cd22493ce2.png)


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](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles).

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

1. 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.

1. 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

## Tools (Strumenti)
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-tools"></a>
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) è 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.
+ [Git](https://git-scm.com/) è un sistema distribuito di controllo delle versioni per tenere traccia delle modifiche nel codice sorgente durante lo sviluppo del software.
+ [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html)è un'utilità che consente di inviare ed estrarre codice dai CodeCommit repository estendendo Git.
+ [pip](https://pypi.org/project/pip/) è l'installatore di pacchetti per Python. Puoi usare pip per installare pacchetti dal Python Package Index e da altri indici.

## Best practice
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-best-practices"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) 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
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-epics"></a>

### Configura i ruoli IAM
<a name="configure-the-iam-roles"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura il ruolo di CodeCommit accesso e la politica delle autorizzazioni. | [Per automatizzare il processo di configurazione manuale documentato in questa epopea,**** puoi utilizzare un modello AWS. CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)Nell'account che contiene il CodeCommit repository (*account A), procedi come* segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)Prima di spostare questa configurazione nell'ambiente di produzione, è consigliabile scrivere una policy IAM personalizzata che applichi le autorizzazioni con privilegi [minimi](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)Per visualizzare l'Amazon Resource Name (ARN) del tuo repository, [consulta CodeCommit Visualizza i dettagli del repository](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-view-repository-details.html) nella *AWS CodeCommit * User Guide. | Informazioni generali su AWS, AWS DevOps | 

### Configura l'istanza del tuo SageMaker notebook nell'account B
<a name="set-up-your-sagemaker-notebook-instance-in-account-b"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura un profilo utente sull'istanza del SageMaker notebook AWS per assumere il ruolo nell'account A.  | [Assicurati di avere installata la versione più recente di AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)).Nell'account che contiene l'istanza del SageMaker notebook (*account B), procedi* come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)<pre>------.aws/config--------------<br />[profile remoterepouser]<br />role_arn = arn:aws:iam::<ID of Account A>:role/<rolename><br />role_session_name = remoteaccesssession<br />region = eu-west-1<br />credential_source  = Ec2InstanceMetadata<br />----------------------------------</pre> | Informazioni generali su AWS, AWS DevOps | 
| Installa l’utilità git-remote-codecommit. | Segui le istruzioni nella [Fase 2: Installazione git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html#setting-up-git-remote-codecommit-install) nella *AWS CodeCommit User Guide*. | Data Scientist | 

### Accedi al repository
<a name="access-the-repository"></a>


| Operazione | Description | Competenze 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 clone``git pull`, e. `git push`Per istruzioni, consulta [Connect to an AWS CodeCommit repository](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) nella *AWS CodeCommit User Guide*.Per informazioni su come usare Git con CodeCommit, consulta [Getting started with AWS CodeCommit nella AWS CodeCommit ](https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started-cc.html) *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](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-cross.html) nella SageMaker documentazione. | Git, console bash | 

## Risorse correlate
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-resources"></a>
+ [Configurare l'accesso tra account a un CodeCommit repository AWS utilizzando i ruoli (documentazione](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) CodeCommit AWS)
+ [Tutorial IAM: delega l'accesso tra account AWS utilizzando i ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) (documentazione IAM)

## Informazioni aggiuntive
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-additional"></a>

**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](https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control-permissions-reference.html) nella *AWS CodeCommit User Guide*.

**Nota**  
Puoi anche modificare la policy gestita di [AWSCodeCommitPowerUser](https://docs.aws.amazon.com/codecommit/latest/userguide/security-iam-awsmanpol.html#managed-policies-poweruser)AWS 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.

1. 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-*
```