Ruolo IAM per l'esecuzione dei processi Amazon ECS - Amazon Elastic Container Service

Ruolo IAM per l'esecuzione dei processi 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 del processo è richiesto in base ai requisiti del processo. È possibile avere più ruoli di esecuzione dei processi per scopi e servizi diversi associati all'account.

Di seguito sono elencati i casi di utilizzo comune per un ruolo IAM di esecuzione del processo:

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 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 processi di 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. Per verificare se il tuo account dispone già del ruolo di esecuzione dei processi di Amazon ECS e, se necessario, collega la policy gestita IAM e utilizza la procedura indicata di seguito.

Come verificare la presenza di ecsTaskExecutionRole nella console IAM

  1. Apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel pannello di navigazione, seleziona Ruoli.

  3. Cercare l'elenco dei ruoli per ecsTaskExecutionRole. Se il ruolo non esiste, consulta Creazione del ruolo IAM di esecuzione dei processi. Se il ruolo è presente, seleziona il ruolo per visualizzare le policy allegate.

  4. Sulla scheda Autorizzazioni, assicurati che la policy gestita AmazonECSTaskExecutionRolePolicy sia collegata al ruolo. Se la policy è collegata, il tuo ruolo di esecuzione dei processi di Amazon ECS è configurato correttamente. In caso contrario, la procedura riportata di seguito consente di collegare la policy.

    1. Scegli Add Permissions (Aggiungi autorizzazioni), Attach policies (Collega policy).

    2. Per limitare le policy disponibili per il collegamento, in Filter (Filtro) digita AmazonECSTaskExecutionRolePolicy.

    3. Seleziona la casella a sinistra della policy AmazonECSTaskExecutionRolePolicy, quindi scegli Collega policy.

  5. Scegli Trust relationships (Relazioni di trust).

  6. Verifica che la relazione di trust includa la seguente policy. Se la relazione di trust corrisponde alla policy sottostante, scegli Cancel (Annulla). Se la relazione di attendibilità non corrisponde, scegli Edit trust policy (Modifica policy di attendibilità), copia la policy nella finestra Policy Document (Documento di policy) e scegli Update policy (Aggiorna policy).

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Creazione del ruolo IAM di esecuzione dei processi

Se l'account non dispone già di un ruolo di esecuzione attività, attenersi alla seguente procedura per creare il ruolo.

Come creare un ruolo IAM di esecuzione processi (AWS Management Console)

  1. Apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

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

  3. Nella sezione Trusted entity type (Tipo di entità attendibile), scegli AWS service (Servizio AWS), quindi scegli Elastic Container Service (Servizio di container elastico).

  4. Per Use case (Caso d'uso), scegli Elastic Container Service Task (Attività Elastic Container Service), quindi scegli Next (Successivo).

  5. Nella pagina Attached permissions policy (Policy di autorizzazione collegate), esegui le seguenti operazioni:

    1. Cerca AmazonECSTaskExecutionRolePolicy, quindi seleziona la policy.

    2. In Set permissions boundary - optional (Imposta limite di autorizzazioni - facoltativo), scegli Create role without a permissions boundary (Crea un ruolo senza un limite delle autorizzazioni).

    3. Seleziona Next (Successivo).

  6. In Role details (Dettagli ruolo), esegui le seguenti operazioni:

    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. Scegliere Create role (Crea ruolo).

Come creare un ruolo IAM di esecuzione processi (AWS CLI)

  1. Crea un file denominato ecs-tasks-trust-policy.json contenente la policy di attendibilità da utilizzare per il ruolo IAM. Il file JSON 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. Collega la policy AmazonECSTaskExecutionRolePolicy gestita da AWS al ruolo ecsTaskExecutionRole. Questa policy fornisce:

    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 la funzionalità di autenticazione di registri privati, è necessario il ruolo per l'esecuzione dei processi di Amazon ECS. In questo modo l'agente container può recuperare l'immagine del container. Per ulteriori informazioni, consulta Autenticazione di registri privati per i processi.

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. L'ARN per la chiave personalizzata deve essere aggiunto come risorsa.

Un esempio di policy inline che aggiunge le autorizzazioni è riportato di seguito.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "ssm:GetParameters", "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 del container di recuperare le risorse di AWS Systems Manager o Secrets Manager necessarie. Per ulteriori informazioni, consulta Specifica di dati sensibili.

Per fornire accesso ai parametri dell'Archivio parametri di AWS Systems Manager creato, aggiungi manualmente le autorizzazioni seguenti come policy inline al ruolo per l'esecuzione di attività. Per ulteriori informazioni, consulta Aggiunta e rimozione delle policy IAM.

  • ssm:GetParameters: obbligatorio quando si fa riferimento a un parametro dell'archivio parametri di Systems Manager in una definizione di attività.

  • secretsmanager:GetSecretValue: obbligatorio se fai riferimento direttamente a un segreto di Secrets Manager o se il parametro dell'archivio parametri di Systems Manager fa riferimento a un segreto di Secrets Manager in una definizione di attività.

  • kms:Decrypt: obbligatorio solo se il segreto utilizza una chiave KMS personalizzata e non quella di default. L'ARN per la chiave personalizzata deve essere aggiunto come risorsa.

La policy inline dell'esempio seguente aggiunge le autorizzazioni necessarie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "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

Non è possibile applicare le chiavi di condizione aws:sourceVpc o aws:sourceVpce all'operazione API ecr:GetAuthorizationToken perché la chiamata API GetAuthorizationToken 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" } } } ] }