Le migliori pratiche per i ruoli IAM in 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à.

Le migliori pratiche per i ruoli IAM in Amazon ECS

I ruoli richiesti da Amazon ECS dipendono dalla definizione dell'attività, dal tipo di avvio e dalle funzionalità utilizzate. Ti consigliamo di creare ruoli separati nella tabella anziché condividerli.

Ruolo Definizione Se necessario Ulteriori informazioni
Ruolo di esecuzione di attività Questo ruolo consente ad Amazon ECS di utilizzare altri AWS servizi per tuo conto.

La tua attività è ospitata su AWS Fargateo su istanze esterne 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

La tua attività è ospitata su una AWS Fargate o più EC2 istanze Amazon e:

  • utilizza l'autenticazione del registro privato.

  • utilizza Runtime Monitoring.

  • la definizione dell'attività fa riferimento a dati sensibili utilizzando i segreti di Secrets Manager o i parametri AWS Systems Manager Parameter Store.

Ruolo IAM di esecuzione di attività Amazon ECS
Ruolo del processo Questo ruolo consente al codice dell'applicazione (sul contenitore) di utilizzare altri AWS servizi. L'applicazione accede ad altri AWS servizi, come Amazon S3. Ruolo IAM dell'attività Amazon ECS
Ruolo dell'istanza di container Questo ruolo consente alle EC2 istanze o alle istanze esterne di registrarsi nel cluster. La tua attività è ospitata su EC2 istanze Amazon o su un'istanza esterna. Ruolo IAM delle istanze di container Amazon ECS
Ruolo di Amazon ECS Anywhere Questo ruolo consente l'accesso alle istanze esterne. AWS APIs La tua attività è ospitata su istanze esterne. Ruolo IAM di Amazon ECS Anywhere
Ruolo di Amazon ECS CodeDeploy Questo ruolo consente CodeDeploy di aggiornare i tuoi servizi. Si utilizza il tipo di distribuzione CodeDeploy blu/verde per distribuire i servizi. Ruolo CodeDeploy IAM di Amazon ECS
Ruolo di Amazon ECS EventBridge Questo ruolo consente EventBridge di aggiornare i tuoi servizi. Utilizzi le EventBridge regole e gli obiettivi per pianificare le tue attività. Ruolo EventBridge IAM di Amazon ECS
Ruolo dell'infrastruttura Amazon ECS Questo ruolo consente ad Amazon ECS di gestire le risorse dell'infrastruttura nei tuoi cluster.
  • Vuoi allegare volumi Amazon EBS alle tue attività Fargate EC2 o avviare Amazon ECS. Il ruolo di infrastruttura consente ad Amazon ECS di gestire i volumi Amazon EBS per le tue attività.

  • Desideri utilizzare Transport Layer Security (TLS) per crittografare il traffico tra i tuoi servizi Amazon ECS Service Connect.

  • Vuoi creare gruppi target VPC Lattice.

Ruolo IAM dell'infrastruttura Amazon ECS

Ruolo del processo

Ti consigliamo di assegnare un ruolo da svolgere. Il suo ruolo può essere distinto dal ruolo dell' EC2 istanza Amazon su cui è in esecuzione. L'assegnazione di un ruolo a ciascuna attività è conforme al principio dell'accesso con privilegi minimi e consente un controllo più granulare su operazioni e risorse.

Quando aggiungi un ruolo di attività a una definizione di attività, l'agente di container Amazon ECS crea in automatico un token con un ID di credenziali univoco (ad esempio 12345678-90ab-cdef-1234-567890abcdef) per l'attività. Il token e le credenziali del ruolo vengono quindi aggiunti alla cache interna dell'agente. L'agente popola la variabile di ambiente AWS_CONTAINER_CREDENTIALS_RELATIVE_URI nel container con l'URI dell'ID delle credenziali (ad esempio /v2/credentials/12345678-90ab-cdef-1234-567890abcdef).

Puoi recuperare manualmente le credenziali temporanee del ruolo da un container aggiungendo la variabile di ambiente all'indirizzo IP dell'agente di container Amazon ECS ed eseguendo il comando curl sulla stringa risultante.

curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

L'output previsto è il seguente:

{ "RoleArn": "arn:aws:iam::123456789012:role/SSMTaskRole-SSMFargateTaskIAMRole-DASWWSF2WGD6", "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "Token": "IQoJb3JpZ2luX2VjEEM/Example==", "Expiration": "2021-01-16T00:51:53Z" }

Le versioni più recenti di recuperano AWS SDKs automaticamente queste credenziali dalla variabile di AWS_CONTAINER_CREDENTIALS_RELATIVE_URI ambiente quando si AWS effettuano chiamate API. Per informazioni su come rinnovare le credenziali, consulta Rinnovo delle credenziali su RePost. AWS

L'output include una coppia di chiavi di accesso composta da un ID di chiave di accesso segreto e da una chiave segreta che l'applicazione utilizza per accedere alle risorse. AWS Include anche un token che AWS viene utilizzato per verificare la validità delle credenziali. Per impostazione predefinita, le credenziali assegnate alle attività che utilizzano ruoli di attività sono valide per sei ore. Successivamente, vengono ruotate in automatico dall'agente di container Amazon ECS.

Ruolo di esecuzione di attività

Il ruolo di esecuzione delle attività viene utilizzato per concedere all'agente container Amazon ECS l'autorizzazione a richiamare azioni AWS API specifiche per tuo conto. Ad esempio, quando si utilizza AWS Fargate, Fargate necessita di un ruolo IAM che le consenta di estrarre immagini da Amazon ECR e scrivere log in Logs. CloudWatch Un ruolo IAM è necessario anche quando un'attività fa riferimento a un segreto archiviato in AWS Secrets Manager, ad esempio un image pull secret.

Nota

Se stai estraendo immagini in qualità di utente autenticato, è meno probabile che tu subisca l'impatto delle modifiche apportate ai limiti del tasso di estrazione 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.

Importante

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

Ruolo dell'istanza di container

La policy IAM gestita da AmazonEC2ContainerServiceforEC2Role deve includere le seguenti autorizzazioni: Seguendo i consigli di sicurezza standard relativi alla concessione dei privilegi minimi, la policy gestita AmazonEC2ContainerServiceforEC2Rolepuò essere utilizzata come guida. Se una qualsiasi delle autorizzazioni concesse nella policy gestita non è necessaria per il caso d'uso, crea una policy personalizzata e aggiungi solo le autorizzazioni richieste.

  • ec2:DescribeTags— (Facoltativo) Consente a un responsabile di descrivere i tag associati a un' EC2 istanza Amazon. Questa autorizzazione viene utilizzata dall'agente del container Amazon ECS per supportare la propagazione dei tag delle risorse. Per ulteriori informazioni, consulta Assegnazione di tag alle risorse.

  • ecs:CreateCluster— (Facoltativo) Consente a un principale di creare un cluster Amazon ECS. Questa autorizzazione viene utilizzata dall'agente del container di Amazon ECS per creare un cluster default, se non è già presente.

  • ecs:DeregisterContainerInstance— (Facoltativo) Consente a un principale di annullare la registrazione di un'istanza di container Amazon ECS da un cluster. L'agente container Amazon ECS non chiama questa operazione API, ma questa autorizzazione rimane per garantire la compatibilità con le versioni precedenti.

  • ecs:DiscoverPollEndpoint— (Obbligatorio) Questa azione restituisce gli endpoint utilizzati dall'agente container Amazon ECS per il polling degli aggiornamenti.

  • ecs:Poll— (Obbligatorio) Consente all'agente container Amazon ECS di comunicare con il piano di controllo di Amazon ECS per segnalare le modifiche allo stato delle attività.

  • ecs:RegisterContainerInstance— (Obbligatorio) Consente a un principale di registrare un'istanza di container in un cluster. Questa autorizzazione viene utilizzata dall'agente container Amazon ECS per registrare l' EC2 istanza Amazon in un cluster e per supportare la propagazione dei tag di risorse.

  • ecs:StartTelemetrySession— (Facoltativo) Consente all'agente container Amazon ECS di comunicare con il piano di controllo di Amazon ECS per riportare informazioni e parametri sullo stato di salute per ogni container e attività.

    Sebbene questa autorizzazione non sia richiesta, ti consigliamo di aggiungerla per consentire ai parametri dell'istanza del contenitore di avviare azioni di scalabilità e ricevere anche report relativi ai comandi di controllo dello stato.

  • ecs:TagResource— (Facoltativo) Consente all'agente container Amazon ECS di etichettare il cluster al momento della creazione e di etichettare le istanze di container quando sono registrate in un cluster.

  • ecs:UpdateContainerInstancesState: consente a un principale di modificare lo stato di un'istanza di container Amazon ECS. Questa autorizzazione viene utilizzata dall'agente del container di Amazon ECS per il drenaggio dell'istanza Spot.

  • ecs:Submit*— (Obbligatorio) Ciò include le azioni SubmitAttachmentStateChangesSubmitContainerStateChange, e SubmitTaskStateChange API. Vengono utilizzati dall'agente del container di Amazon ECS per segnalare le modifiche di stato per ogni risorsa al piano di controllo Amazon ECS. L'SubmitContainerStateChangeautorizzazione non viene più utilizzata dall'agente container Amazon ECS, ma serve a garantire la compatibilità con le versioni precedenti.

  • ecr:GetAuthorizationToken— (Facoltativo) Consente a un principale di recuperare un token di autorizzazione. Un token di autorizzazione rappresenta le credenziali di autenticazione IAM e può essere utilizzato per accedere a qualsiasi registro Amazon ECR a cui ha accesso il principale IAM. Il token di autorizzazione ricevuto è valido per 12 ore.

  • ecr:BatchCheckLayerAvailability— (Facoltativo) Quando l'immagine di un contenitore viene inviata a un repository privato Amazon ECR, ogni livello di immagine viene controllato per verificare se è già stato inviato. Se lo è, il livello dell'immagine viene ignorato.

  • ecr:GetDownloadUrlForLayer— (Facoltativo) Quando l'immagine di un contenitore viene estratta da un repository privato Amazon ECR, questa API viene chiamata una volta per ogni livello di immagine che non è già memorizzato nella cache.

  • ecr:BatchGetImage— (Facoltativo) Quando l'immagine di un contenitore viene estratta da un repository privato Amazon ECR, questa API viene chiamata una volta per recuperare il manifesto dell'immagine.

  • logs:CreateLogStream— (Facoltativo) Consente a un principale di creare un flusso di log di CloudWatch Logs per un gruppo di log specificato.

  • logs:PutLogEvents— (Facoltativo) Consente a un principale di caricare un batch di eventi di registro in un flusso di log specificato.

Ruoli collegati ai servizi

Puoi utilizzare il ruolo collegato al servizio per Amazon ECS per concedere al servizio Amazon ECS l'autorizzazione a chiamare altri servizi APIs per tuo conto. Amazon ECS necessita delle autorizzazioni per creare ed eliminare interfacce di rete, oltre che per registrare e annullare la registrazione delle destinazioni con un gruppo di destinazione. Inoltre, necessita delle autorizzazioni necessarie per creare ed eliminare policy di dimensionamento. Queste autorizzazioni vengono concesse attraveso il ruolo collegato al servizio. Tale ruolo viene creato per tuo conto la prima volta che utilizzi il servizio.

Nota

Se elimini inavvertitamente il ruolo collegato al servizio, puoi ricrearlo. Per ricevere istruzioni, consulta Creazione di un ruolo collegato al servizio.

Consigli sui ruoli

Consigliamo di completare le seguenti operazioni quando configuri i ruoli e le policy IAM dell'attività.

Blocca l'accesso ai EC2 metadati di Amazon

Quando esegui le tue attività su EC2 istanze Amazon, ti consigliamo vivamente di bloccare l'accesso ai EC2 metadati di Amazon per evitare che i contenitori ereditino il ruolo assegnato a tali istanze. Se le tue applicazioni devono richiamare un'azione AWS API, utilizza invece i ruoli IAM per le attività.

Per impedire alle attività in esecuzione in modalità bridge di accedere ai EC2 metadati di Amazon, esegui il comando seguente o aggiorna i dati utente dell'istanza. Per ulteriori istruzioni sull'aggiornamento dei dati utente di un'istanza, consulta il seguente articolo del Supporto AWS. Per ulteriori informazioni sulla modalità bridge per la definizione delle attività, consulta Modalità di rete per la definizione delle attività.

sudo yum install -y iptables-services; sudo iptables --insert FORWARD 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP

Affinché questa modifica persista dopo il riavvio, esegui il seguente comando specifico per la tua Amazon Machine Image (AMI):

  • Amazon Linux 2

    sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables
  • Amazon Linux

    sudo service iptables save

Per le attività che utilizzano la modalità di rete awsvpc, imposta la variabile di ambiente ECS_AWSVPC_BLOCK_IMDS su true nel file /etc/ecs/ecs.config.

È necessario impostare la ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST variabile su false nel ecs-agent config file per evitare che i contenitori in esecuzione all'interno della host rete accedano ai EC2 metadati di Amazon.

Usa la modalità awsvpc di rete

Utilizza la modalità di rete awsvpc per limitare il flusso di traffico tra diverse attività o tra le attività e altri servizi eseguiti all'interno di Amazon VPC. In questo modo si aggiunge un ulteriore livello di sicurezza. La modalità awsvpc di rete fornisce l'isolamento della rete a livello di attività per le attività eseguite su Amazon. EC2 È la modalità predefinita attiva AWS Fargate. È l'unica modalità di rete che puoi usare per assegnare un gruppo di sicurezza alle attività.

Utilizza le informazioni relative all'ultimo accesso per rifinire i ruoli

Consigliamo di rimuovere tutte le operazioni che non sono mai state utilizzate o che non sono state utilizzate per un certo periodo di tempo. Ciò impedisce che si verifichino accessi indesiderati. A tale scopo, esamina le ultime informazioni di accesso fornite da IAM, quindi rimuovi le azioni che non sono mai state utilizzate o che non sono state utilizzate di recente. Per farlo, completa la procedura seguente.

Utilizza il comando seguente per generare un report indicante le informazioni di accesso più recenti per la policy di riferimento:

aws iam generate-service-last-accessed-details --arn arn:aws:iam::123456789012:policy/ExamplePolicy1

utilizza il valore JobId presente nell'output per eseguire il comando seguente. Dopo aver eseguito questa operazione, puoi visualizzare i risultati del report.

aws iam get-service-last-accessed-details --job-id 98a765b4-3cde-2101-2345-example678f9

Per ulteriori informazioni, consulta Perfezionare le autorizzazioni AWS utilizzando le informazioni dell'ultimo accesso.

Monitora le attività AWS CloudTrail sospette

Puoi monitorare qualsiasi attività AWS CloudTrail sospetta. La maggior parte delle chiamate AWS API viene registrata AWS CloudTrail come eventi. Vengono analizzate da AWS CloudTrail Insights e l'utente viene avvisato di eventuali comportamenti sospetti associati write alle chiamate API. Ciò potrebbe includere un picco nel volume delle chiamate. Questi avvisi includono informazioni come l'ora in cui si è verificata l'attività insolita e l'ARN principale dell'identità che ha contribuito alla. APIs

Puoi identificare le operazioni eseguite dalle attività con un ruolo IAM in AWS CloudTrail esaminando la proprietà userIdentity dell'evento. Nell'esempio seguente, l'arn include il nome del ruolo assunto, s3-write-go-bucket-role, seguito dal nome dell'attività, 7e9894e088ad416eb5cab92afExample.

"userIdentity": { "type": "AssumedRole", "principalId": "AROA36C6WWEJ2YEXAMPLE:7e9894e088ad416eb5cab92afExample", "arn": "arn:aws:sts::123456789012:assumed-role/s3-write-go-bucket-role/7e9894e088ad416eb5cab92afExample", ... }
Nota

Quando attività che presuppongono un ruolo vengono eseguite su istanze di EC2 container Amazon, una richiesta viene registrata dall'agente container Amazon ECS nel registro di controllo dell'agente che si trova a un indirizzo nel formato. /var/log/ecs/audit.log.YYYY-MM-DD-HH Per ulteriori informazioni, consulta Log di ruoli IAM di attività e Registrazione di eventi di approfondimenti per i trail.