Ruolo IAM delle istanze di container Amazon ECS - Amazon Elastic Container Service

Ruolo IAM delle istanze di container Amazon ECS

Le istanze di container Amazon ECS, incluse le istanze Amazon EC2 e le istanze esterne, eseguono l'agente del container di Amazon ECS e richiedono un ruolo IAM che consenta al servizio di rilevare che l'agente appartiene a te. Prima di avviare le istanze di container e registrarle in un cluster, devi creare un ruolo IAM per le istanze da utilizzare. Il ruolo viene creato nell'account utilizzato per accedere alla console o eseguire i comandi AWS CLI.

Importante

Se registri le istanze esterne nel cluster, il ruolo IAM utilizzato richiede anche le autorizzazioni di Systems Manager. Per ulteriori informazioni, consulta Ruolo IAM di Amazon ECS Anywhere.

Amazon ECS fornisce la policy IAM gestita da AmazonEC2ContainerServiceforEC2Role che contiene le autorizzazioni necessarie per utilizzare il set completo di funzionalità di Amazon ECS. Questa policy gestita può essere associata a un ruolo IAM e alle istanze del container. In alternativa, è possibile utilizzare la policy gestita come guida durante la creazione di una policy personalizzata da utilizzare. Il ruolo dell'istanza di container fornisce le autorizzazioni necessarie per l'agente del container di Amazon ECS e il daemon Docker per chiamare le API AWS per tuo conto. Per ulteriori informazioni sulla policy gestita, consulta AmazonEC2ContainerServiceforEC2Role.

Crea il ruolo dell'istanza di container

Importante

Se registri istanze esterne nel cluster, consulta Ruolo IAM di Amazon ECS Anywhere.

Puoi creare manualmente il ruolo e collegare la policy IAM gestita per le istanze di container in modo da consentire ad Amazon ECS di aggiungere le autorizzazioni per funzionalità e miglioramenti futuri man mano che vengono introdotti. Usa la seguente procedura per collegare la policy IAM gestita, se necessario.

AWS Management Console
Per creare il ruolo di servizio per Elastic Container Service (console IAM)
  1. Accedi a 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 Servizio o caso d'uso, seleziona Elastic Container Service e poi il ruolo EC2 per il caso d'uso Elastic Container Service.

  5. Scegli Next (Successivo).

  6. Nella sezione Policy delle autorizzazioni, verifica che sia selezionata la policy AmazonEC2ContainerServiceforEC2Role.

    Importante

    La policy gestita AmazonEC2ContainerServiceforEC2Role deve essere collegata al ruolo IAM dell'istanza di container, altrimenti verrà generato un errore quando si utilizza la AWS Management Console per creare i cluster.

  7. Scegli Next (Successivo).

  8. Per Nome ruolo, inserisci ecsInstanceRole

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

AWS CLI

Sostituisci tutti gli input dell'utente con i tuoi valori.

  1. Crea un file denominato instance-role-trust-policy.json con i seguenti contenuti.

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
  2. Usa il seguente comando per creare il ruolo IAM dell'istanza utilizzando il documento della policy di attendibilità.

    aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://instance-role-trust-policy.json
  3. Creare un profilo dell'istanza denominato ecsInstanceRole-profile utilizzando il comando create-instance-profile.

    aws iam create-instance-profile --instance-profile-name ecsInstanceRole-profile

    Example response

    { "InstanceProfile": { "InstanceProfileId": "AIPAJTLBPJLEGREXAMPLE", "Roles": [], "CreateDate": "2022-04-12T23:53:34.093Z", "InstanceProfileName": "ecsInstanceRole-profile", "Path": "/", "Arn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole-profile" } }
  4. Aggiungi il ruolo ecsInstanceRole al profilo dell'istanza ecsInstanceRole-profile.

    aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole-profile \ --role-name ecsInstanceRole
  5. Collega la policy gestita da AmazonEC2ContainerServiceRoleForEC2Role al ruolo usando il comando seguente.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role \ --role-name ecsInstanceRole

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

Funzionalità Autorizzazioni aggiuntive

Amazon ECR ha l'immagine del container

Autorizzazioni Amazon ECR

Consenti a CloudWatch Logs di monitorare le istanze di container

Monitoraggio delle autorizzazioni delle istanze di container

File di configurazione di host in un bucket Amazon S3

Accesso in sola lettura ad Amazon S3

Autorizzazioni Amazon ECR

Il ruolo dell'istanza di container di Amazon ECS utilizzato con le istanze di container deve possedere le seguenti autorizzazioni di policy IAM per Amazon ECR.

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

Se utilizzi la policy gestita AmazonEC2ContainerServiceforEC2Role per le tue istanze di container, il tuo ruolo dispone già delle opportune autorizzazioni. Per verificare se il tuo ruolo supporta Amazon ECR, consulta Ruolo IAM per le istanze di container di Amazon ECS nella Guida per lo sviluppatore di Amazon Elastic Container.

Autorizzazioni necessarie per configurare l'impostazione dell'account awsvpcTrunking

Amazon ECS supporta l'avvio di istanze di container con densità ENI aumentata mediante i tipi di istanze Amazon EC2 supportati. Se usi questa funzionalità, consigliamo di creare 2 ruoli dell'istanza di container. Abilita l'impostazione dell'account awsvpcTrunking per un ruolo e usare quel ruolo per attività che richiedono il trunking ENI. Per informazioni sulle impostazioni dell'account awsvpcTrunking, consulta Accedi alle funzionalità di Amazon ECS con le impostazioni dell'account.

Il ruolo dell'istanza di container utilizzato con le istanze di container deve possedere le seguenti autorizzazioni di policy IAM per configurare le impostazioni dell'account

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:ListAccountSettings", "ecs:ListAttributes", "ecs:PutAccountSetting" ], "Resource": "*" } ] }

Per usare il ruolo dell'istanza di container, aggiungi quanto segue ai dati utente dell'istanza:

#!/bin/bash aws ecs put-account-setting --name awsvpcTrunking --value enabled --region region ECS_CLUSTER=MyCluster>> /etc/ecs/ecs.config EOF

Per maggiori informazioni sull'aggiunta di dati utente alle istanze EC2, consulta Run commands on your Linux instance at launch nella Guida dell'utente di Amazon EC2.

Accesso in sola lettura ad Amazon S3

Archiviare le informazioni di configurazione in un bucket privato in Amazon S3 e concedere l'accesso in sola lettura al ruolo IAM dell'istanza di container è un modo sicuro e conveniente per permettere la configurazione delle istanze di container all'ora di avvio. Puoi archiviare una copia del file ecs.config in un bucket privato, utilizzare i dati utente di Amazon EC2 per installare la AWS CLI e copiare le informazioni di configurazione su /etc/ecs/ecs.config all'avvio dell'istanza.

Per ulteriori informazioni sulla creazione di un file ecs.config, sull'archiviazione di tale file in Amazon S3 e sull'avvio di istanze con questa configurazione, consulta Archiviazione della configurazione di un'istanza di container Amazon ECS in Amazon S3.

È possibile utilizzare il seguente comando AWS CLI per consentire l'accesso in sola lettura ad Amazon S3 per il ruolo dell'istanza di container. Sostituisci ecsInstanceRole con il nome del ruolo che hai creato.

aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

Puoi usare la console IAM per aggiungere l'accesso in sola lettura ad Amazon S3 (AmazonS3ReadOnlyAccess) al tuo ruolo. Per ulteriori informazioni, consulta Aggiornamento delle autorizzazioni per un ruolo nella Guida per l'utente di AWS Identity and Access Management.

Monitoraggio delle autorizzazioni delle istanze di container

Prima che le tue istanze di container possano inviare i dati di log a CloudWatch Logs, devi creare una policy IAM per consentire all'agente Amazon ECS di scrivere i log dell'applicazione del cliente su CloudWatch (normalmente gestiti tramite il awslogs). Dopo aver creato la policy, collegala a ecsInstanceRole.

AWS Management Console
Come utilizzare l'editor di policy JSON per creare una policy
  1. Accedi a AWS Management Console e apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione a sinistra, seleziona Policies (Policy).

    Se è la prima volta che selezioni Policy, verrà visualizzata la pagina Benvenuto nelle policy gestite. Seleziona Inizia.

  3. Nella parte superiore della pagina, scegli Crea policy.

  4. Nella sezione Editor di policy, scegli l'opzione JSON.

  5. Inserisci il documento di policy JSON seguente:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  6. Scegli Next (Successivo).

    Nota

    È possibile alternare le opzioni dell'editor Visivo e JSON in qualsiasi momento. Se tuttavia si apportano modifiche o si seleziona Successivo nell'editor Visivo, IAM potrebbe ristrutturare la policy in modo da ottimizzarla per l'editor visivo. Per ulteriori informazioni, consulta Modifica della struttura delle policy nella Guida per l'utente di IAM.

  7. Nella pagina Rivedi e crea, inserisci un valore in Nome policy e Descrizione (facoltativo) per la policy in fase di creazione. Rivedi Autorizzazioni definite in questa policy per visualizzare le autorizzazioni concesse dalla policy.

  8. Seleziona Crea policy per salvare la nuova policy.

Dopo avere creato la policy, collegala al ruolo dell'istanza di container. Per informazioni su come associare la policy al ruolo, consulta Aggiornamento delle autorizzazioni per un ruolo nella Guida per l'utente di AWS Identity and Access Management

AWS CLI
  1. Crea un file denominato instance-cw-logs.json, con il seguente contenuto:

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  2. Usa il seguente comando per creare la policy IAM utilizzando il file del documento della policy JSON.

    aws iam create-policy \ --policy-name cwlogspolicy \ --policy-document file://instance-cw-logs.json
  3. Recupera l'ARN della policy IAM che hai creato usando il seguente comando. Sostituisci cwlogspolicy con il nome della policy che hai creato.

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogspolicy`].Arn'
  4. Usa il seguente comando per collegare la policy al ruolo IAM dell'istanza di container utilizzando la policy ARN.

    aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/cwlogspolicy