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 del processo.

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:

    • sta recuperando un'immagine di container da un repository privato di Amazon ECR.

    • sta estraendo un'immagine di container da un repository privato Amazon ECR in un account diverso da quello che esegue l'attività.

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

  • 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 AmazonECSTaskExecutionRolePolicy che contiene le autorizzazioni richieste dai casi di utilizzo comune descritti in precedenza. Potrebbe essere necessario aggiungere policy in linea al ruolo di esecuzione delle attività per i casi d'uso speciali descritti di seguito.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }

Un ruolo di esecuzione di attività Amazon ECS viene creato automaticamente nella console Amazon ECS; tuttavia, devi collegare manualmente la policy IAM gestita per i processi per consentire ad Amazon ECS di aggiungere le autorizzazioni per le funzionalità e i 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.

Creazione del ruolo di esecuzione dell'attività (ecsTaskExecutionRole)

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

AWS Management Console
Come creare un ruolo IAM di esecuzione di attività (AWS Management Console)
  1. Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel pannello di navigazione seleziona Ruoli, quindi Crea ruolo.

  3. Nella sezione Tipo di entità attendibile, scegli Servizio AWS , quindi scegli Elastic Container Service.

  4. Per Caso d'uso, seleziona Attività di Elastic Container Service e quindi Successivo.

  5. Nella sezione Aggiungi autorizzazioni, procedi come segue:

    1. Cerca TaskExecutionRolePolicyAmazonECS, quindi seleziona la politica.

    2. In Imposta il limite delle autorizzazioni - facoltativo, scegli Crea un ruolo senza un limite delle autorizzazioni.

    3. Seleziona Avanti.

  6. In Nome, rivedi e crea, procedi come segue:

    1. Per Role name (Nome ruolo), digita ecsTaskExecutionRole.

    2. Per Add tags (optional) (Aggiungi tag (facoltativo)), specifica eventuali tag personalizzati da associare alla policy.

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

Autorizzazioni IAM obbligatorie per l'autenticazione di registri privati

Per utilizzare questa funzionalità, è necessario il ruolo per l'esecuzione del processo di Amazon ECS. In questo modo l'agente container può recuperare l'immagine del container.

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 IAM richieste per i segreti di Amazon ECS

Per utilizzare la funzionalità dei segreti di Amazon ECS, è necessario disporre del ruolo di esecuzione del processo Amazon ECS e farvi riferimento nella definizione di attività. Ciò consente all'agente contenitore di estrarre le risorse necessarie AWS Systems Manager o Secrets Manager. Per ulteriori informazioni, consulta Invio di dati sensibili a un container.

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" ] } ] }

Autorizzazioni IAM facoltative per processi Fargate che eseguono il pull delle immagini Amazon ECR su endpoint di 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" } } } ] }