Ruolo IAM di esecuzione di attività Amazon ECS - Amazon Elastic Container Service

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

Ruolo IAM di esecuzione di attività Amazon ECS

Il ruolo di esecuzione del processo concede all'agente del container di Amazon ECS e agli agenti Fargate l'autorizzazione per effettuare chiamate API AWS per tuo conto. Il ruolo IAM di esecuzione di attività è necessario a seconda dei requisiti dell'attività. È possibile disporre di più ruoli di esecuzione di attività per scopi e servizi diversi associati all'account. Per conoscere le autorizzazioni IAM necessarie per l'esecuzione dell'applicazione, consulta Ruolo IAM dell'attività Amazon ECS.

Di seguito sono elencati i casi di utilizzo comune per un ruolo IAM di esecuzione di attività:

  • La tua attività è ospitata su AWS Fargateo su un'istanza esterna e:

    • estrae un'immagine del contenitore da un repository privato Amazon ECR.

    • estrae un'immagine del contenitore da un repository privato Amazon ECR in un account diverso dall'account che esegue l'attività.

    • invia i log dei contenitori a Logs utilizzando il driver di CloudWatch registro. awslogs Per ulteriori informazioni, consulta Invia i log di Amazon ECS a CloudWatch .

  • Le tue attività sono ospitate su una delle AWS Fargate istanze Amazon EC2 e:

Nota

Il ruolo di esecuzione dei processi è supportato dall'agente del container di Amazon ECS versione 1.16.0 e successiva.

Amazon ECS fornisce la policy gestita denominata TaskExecutionRolePolicy AmazonECS che contiene le autorizzazioni richieste dai casi d'uso comuni sopra descritti. Per ulteriori informazioni, consulta TaskExecutionRolePolicyAmazonecs nella AWS Managed Policy Reference Guide. Potrebbe essere necessario aggiungere politiche in linea al ruolo di esecuzione delle attività per casi d'uso speciali

La console Amazon ECS crea un ruolo di esecuzione delle attività. Puoi allegare manualmente la policy IAM gestita per le attività per consentire ad Amazon ECS di aggiungere autorizzazioni per funzionalità e miglioramenti futuri man mano che vengono introdotti. Puoi utilizzare la ricerca della console IAM per cercare ecsTaskExecutionRole e verificare se il tuo account ha già il ruolo di esecuzione delle attività. Per ulteriori informazioni, consulta la ricerca nella console IAM nella guida per l'utente IAM.

Se richiami le immagini come utente autenticato, è meno probabile che tu sia influenzato dalle modifiche apportate ai limiti di pull rate di Docker Hub. Per ulteriori informazioni, consulta Autenticazione di registri privati per istanze di container.

Utilizzando Amazon ECR e Amazon ECR Public, puoi evitare i limiti imposti da Docker. Se estrai immagini da Amazon ECR, ciò contribuisce anche ad abbreviare i tempi di estrazione della rete e a ridurre le modifiche al trasferimento di dati quando il traffico esce dal tuo VPC.

Quando utilizzi Fargate, devi autenticarti in un registro di immagini privato utilizzando repositoryCredentials. Non è possibile impostare le variabili di ambiente dell'agente di container Amazon ECS ECS_ENGINE_AUTH_TYPE o ECS_ENGINE_AUTH_DATA o modificare il file ecs.config per le attività in hosting su Fargate. Per ulteriori informazioni, consulta Autenticazione del registro privato per le attività.

Creazione del ruolo di esecuzione attività

Se il tuo account non ha già un ruolo di esecuzione delle attività, utilizza i seguenti passaggi per creare il ruolo.

AWS Management Console
Per creare il ruolo di servizio per Elastic Container Service (console IAM)
  1. Accedi AWS Management Console e apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel pannello di navigazione della console IAM, scegliere Ruoli e quindi Crea ruolo.

  3. Per Trusted entity type (Tipo di entità attendibile), scegli Servizio AWS.

  4. Per Service o use case, scegli Elastic Container Service, quindi scegli lo use case Elastic Container Service Task.

  5. Seleziona Successivo.

  6. Nella sezione Aggiungi autorizzazioni, cerca TaskExecutionRolePolicyAmazonecs, quindi seleziona la politica.

  7. Seleziona Successivo.

  8. Per il nome del ruolo, inserisci ecs Role. TaskExecution

  9. Verificare il ruolo e quindi scegliere Create role (Crea ruolo).

AWS CLI

Sostituisci tutti gli input dell'utente con le tue informazioni.

  1. Crea un file denominato ecs-tasks-trust-policy.json contenente la policy di attendibilità da utilizzare per il ruolo IAM. Il file deve contenere il testo seguente:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Crea un ruolo IAM denominato ecsTaskExecutionRole utilizzando la policy di attendibilità creata nel passaggio precedente.

    aws iam create-role \ --role-name ecsTaskExecutionRole \ --assume-role-policy-document file://ecs-tasks-trust-policy.json
  3. Allega la AmazonECSTaskExecutionRolePolicy policy AWS gestita al ecsTaskExecutionRole ruolo.

    aws iam attach-role-policy \ --role-name ecsTaskExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

Dopo aver creato il ruolo, aggiungi ulteriori autorizzazioni al ruolo per le seguenti funzionalità.

Funzionalità

Autorizzazioni aggiuntive

Usa le credenziali di Secrets Manager per accedere all'archivio privato delle immagini del contenitore

Autorizzazioni di autenticazione del registro privato

Trasmetti dati sensibili con Systems Manager o Secrets Manager

Autorizzazioni Secrets Manager o Systems Manager

Fai in modo che le attività di Fargate recuperino le immagini di Amazon ECR dagli endpoint dell'interfaccia

Fargate esegue le attività di estrazione delle immagini Amazon ECR tramite le autorizzazioni degli endpoint dell'interfaccia

Ospita i file di configurazione in un bucket Amazon S3

Autorizzazioni per lo storage di file Amazon S3

Autorizzazioni di autenticazione del registro privato

Le autorizzazioni seguenti devono essere aggiunte manualmente come policy inline al ruolo per l'esecuzione di attività, per fornire l'accesso ai segreti che crei. Per ulteriori informazioni, consulta Aggiunta e rimozione delle policy IAM.

  • secretsmanager:GetSecretValue

  • kms:Decrypt: obbligatorio solo se la chiave utilizza una chiave KMS personalizzata e non quella di default. Il nome della risorsa Amazon (ARN) per la chiave personalizzata deve essere aggiunto come risorsa.

Di seguito viene riportata una policy inline che aggiunge le autorizzazioni.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }

Autorizzazioni Secrets Manager o Systems Manager

L'autorizzazione per consentire all'agente del contenitore di estrarre le risorse necessarie AWS Systems Manager o Secrets Manager. Per ulteriori informazioni, consulta Trasferisci dati sensibili a un contenitore Amazon ECS.

Uso di Secrets Manager

Per fornire l'accesso ai segreti di Gestione di segreti che crei, aggiungi manualmente la seguente autorizzazione al ruolo di esecuzione dell'attività. Per avere informazioni sulla gestione delle autorizzazioni, consulta Aggiunta e rimozione di autorizzazioni per identità IAM nella Guida per l'utente IAM.

  • secretsmanager:GetSecretValue: obbligatorio se si fa riferimento a un segreto di Gestione dei segreti. Aggiunge l'autorizzazione per recuperare il segreto da Secrets Manager.

La policy dell'esempio seguente aggiunge le autorizzazioni necessarie.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" ] } ] }

Uso di Systems Manager

Importante

Per i processi che utilizzano il tipo di avvio EC2, devi utilizzare la variabile di configurazione dell'agente ECS ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true per utilizzare questa funzionalità. Puoi aggiungerlo al file ./etc/ecs/ecs.config durante la creazione dell'istanza di container oppure aggiungerlo a un'istanza esistente e quindi riavviare l'agente ECS. Per ulteriori informazioni, consulta Configurazione dell'agente del container Amazon ECS.

Per fornire l'accesso ai parametri di Archivio dei parametri Systems Manager che hai creato, aggiungi manualmente le autorizzazioni seguenti come policy al ruolo per l'esecuzione di attività. Per avere informazioni sulla gestione delle autorizzazioni, consulta Aggiunta e rimozione di autorizzazioni per identità IAM nella Guida per l'utente IAM.

  • ssm:GetParameters: obbligatorio quando si fa riferimento a un parametro di Archivio dei parametri Systems Manager in una definizione di attività. Aggiunge l'autorizzazione per recuperare i parametri di Systems Manager.

  • secretsmanager:GetSecretValue: obbligatorio quando si fa riferimento a un segreto di Gestione dei segreti direttamente o se il parametro di Archivio dei parametri Systems Manager fa riferimento a un segreto di Gestione dei segreti in una definizione di attività. Aggiunge l'autorizzazione per recuperare il segreto da Secrets Manager.

  • kms:Decrypt: obbligatorio solo se il segreto utilizza una chiave gestita personalizzata e non quella predefinita. L'ARN per la chiave personalizzata deve essere aggiunto come risorsa. Aggiunge l'autorizzazione per decrittografare la chiave gestita dal cliente.

La seguente policy di esempio aggiunge le autorizzazioni necessarie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:region:aws_account_id:parameter/parameter_name", "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name", "arn:aws:kms:region:aws_account_id:key/key_id" ] } ] }

Fargate esegue le attività di estrazione delle immagini Amazon ECR tramite le autorizzazioni degli endpoint dell'interfaccia

Quando avvii processi che usano il tipo di avvio Fargate che estraggono immagini da Amazon ECR quando Amazon ECR è configurato per utilizzare un endpoint VPC dell'interfaccia, puoi limitare l'accesso a un VPC o endpoint VPC specifico. Per fare questo, crea un ruolo di esecuzione dei processi per i processi che utilizzano chiavi di condizione IAM.

Utilizza le chiavi di condizione globali IAM seguenti per limitare l'accesso a un VPC o endpoint VPC specifico. Per ulteriori informazioni, consulta Chiavi di contesto delle condizioni globali AWS.

  • aws:SourceVpc: limita l'accesso a un VPC specifico.

  • aws:SourceVpce: limita l'accesso a un endpoint VPC specifico.

La policy del ruolo di esecuzione delle attività fornisce un esempio per l'aggiunta di chiavi di condizione:

Importante

All'azione ecr:GetAuthorizationToken API non possono essere applicate le chiavi di aws:sourceVpce condizione aws:sourceVpc or perché la chiamata GetAuthorizationToken API passa attraverso l'interfaccia di rete elastica di proprietà di AWS Fargate anziché l'interfaccia di rete elastica dell'attività.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpce": "vpce-xxxxxx", "aws:sourceVpc": "vpc-xxxxx" } } } ] }

Autorizzazioni per lo storage di file Amazon S3

Quando specifichi un file di configurazione ospitato in Amazon S3, il ruolo di esecuzione dell'attività deve includere l's3:GetObjectautorizzazione per il file di configurazione e l's3:GetBucketLocationautorizzazione per il bucket Amazon S3 in cui si trova il file. Per ulteriori informazioni, consulta Specifica delle autorizzazioni in una policy nella Guida per l'utente di Amazon Simple Storage Service.

La seguente policy di esempio aggiunge le autorizzazioni necessarie per il recupero di un file da Amazon S3. Specifica il nome del bucket Amazon S3 e il nome del file di configurazione.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::examplebucket/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket" ] } ] }