Come posso consentire a un account secondario di inviare o estrarre immagini nel mio repository di immagini Amazon ECR?

4 minuti di lettura
0

Desidero consentire a un account secondario di inviare o estrarre immagini nel mio repository di immagini Amazon Elastic Container Registry (Amazon ECR).

Risoluzione

Puoi inviare o estrarre immagini da o verso un repository Amazon ECR in un altro account. Innanzitutto, devi creare una politica che consenta all'account secondario di eseguire chiamate API al repository. Quindi, utilizza un token di autenticazione Docker generato dall'account secondario per utilizzare i comandi di invio ed estrazione per il repository dell'account principale.

Crea una policy che consenta all'account secondario di eseguire chiamate API al repository di immagini

1.    Apri la console Amazon ECR per il tuo account principale.

2.    Seleziona il nome del repository con collegamento ipertestuale del repository che desideri modificare.

3.    Nel pannello di navigazione a sinistra, in Amazon ECR - Repository, seleziona Autorizzazioni.

4.    Per aggiungere una policy del repository per il tuo account secondario dall'account principale, seleziona Modifica policy JSON. Inserisci la tua policy nell'editor di codice, quindi seleziona Salva.

Importante: nella tua policy, includi il numero di account dell'account secondario e le azioni che l'account può eseguire sul repository. Per consentire l'accesso a un ruolo specifico, fornisci il ruolo arn come principale. Ad esempio, AWS: arn:aws:iam::account-id:role/ecsInstanceRole. Il ruolo deve esistere nell'account secondario prima di salvare la policy del repository. Se non esiste, viene visualizzato un errore simile al seguente: è stata fornita una politica di repository non valida.

La seguente politica di repository di esempio consente a un account specifico di inviare ed estrarre immagini:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowPushPull",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::account-id:root"
      },
      "Action": [
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage",
        "ecr:BatchCheckLayerAvailability",
        "ecr:PutImage",
        "ecr:InitiateLayerUpload",
        "ecr:UploadLayerPart",
        "ecr:CompleteLayerUpload"
      ]
    }
  ]
}

5.    Nella definizione dell'attività, imposta l'immagine che desideri utilizzare con Amazon ECS. La tua immagine è ospitata nel repository Amazon ECR dell'account principale.
Nota: assicurati che il tuo account secondario disponga delle autorizzazioni Amazon ECR elencate nella policy gestita «AmazonEC2ContainerRegistryPowerUser». Queste autorizzazioni sono necessarie per estrarre o inviare dal tuo account principale.

Genera un token di autenticazione Docker temporaneo dall'account secondario ed esegui un test di invio o estrazione

Nota: se ricevi errori durante l'esecuzione dei comandi dell’Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente dell'AWS CLI.

L'account secondario non può eseguire azioni di policy sul repository finché non riceve un token di autenticazione temporaneo valido per 12 ore. Il token consente all'account secondario di utilizzare i comandi di invio ed estrazione Docker sul repository dell'account principale. Il comando ottieni password di accesso recupera e decodifica il token di autorizzazione che puoi quindi reindirizzare a un comando di accesso docker per l'autenticazione.

Nota: L'account che ottiene il token deve disporre delle autorizzazioni API AWS Identify and Access Management (IAM) pertinenti per modificare il repository. Ad esempio, consulta Policy per Amazon Elastic Container Registry gestite da AWS. Per risolvere i problemi con Docker, attiva la modalità di debug sul tuo daemon Docker. Questo comando è supportato utilizzando la versione più recente di AWS CLI versione 2, o nella v1.17.10 o successiva della versione 1 di AWS CLI. Per ulteriori informazioni, consulta ottieni password di accesso.

1.    Per generare un token di autenticazione Docker per un account che invia ed estrae immagini all'esterno di Amazon ECS, esegui il comando seguente. Sostituisci aws_account_id con l'ID del tuo account principale e sostituisci l'ID della regione con il tuo ID della regione.

Utilizzo di AWS CLI:

aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.regionID.amazonaws.com

Utilizzo degli Strumenti AWS per Windows PowerShell:

(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.regionID.amazonaws.com

Ottieni il seguente output:

aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-south-1.amazonaws.com
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

2.    Esegui l’estrazione di un'immagine di prova dall'account principale o l’invio di un'immagine di prova all'account principale:

docker pull AccountID.dkr.ecr.Region.amazonaws.com/ImageName::TagName

Nota: Sostituisci l'ID account e la regione con l'ID e la regione del tuo account. Sostituisci nome immagine e nome tag con il nome dell'immagine e del tag.

3.    Convalida che l'immagine sia stata scaricata correttamente:

docker images | grep ImageName

Nota: Sostituisci nome immagine con il nome della tua immagine.

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa