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

Ti consigliamo di assegnare un ruolo da svolgere. Il suo ruolo può essere distinto dal ruolo dell'EC2istanza 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 assegni IAM ruoli per un'attività, devi utilizzare la seguente politica di fiducia in modo che ciascuna delle tue attività possa assumere un IAM ruolo diverso da quello utilizzato dall'EC2istanza. In questo modo, l'attività non eredita il ruolo dell'istanza. EC2

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

Quando aggiungi un ruolo di attività a una definizione di attività, l'agente Amazon ECS Container crea automaticamente un token con un ID di credenziale univoco (ad esempio12345678-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 contenitore con l'ID URI della credenziale (ad esempio,). /v2/credentials/12345678-90ab-cdef-1234-567890abcdef

Puoi recuperare manualmente le credenziali del ruolo temporaneo dall'interno di un contenitore aggiungendo la variabile di ambiente all'indirizzo IP dell'agente Amazon ECS Container ed eseguendo il curl comando 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 ambiente quando effettuano AWS_CONTAINER_CREDENTIALS_RELATIVE_URI chiamate. AWS API Per informazioni su come rinnovare le credenziali, vedere Rinnovo delle credenziali su. AWS rePost

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. Dopodiché, vengono ruotati automaticamente dall'agente Amazon ECS Container.

Ruolo di esecuzione di attività

Il ruolo di esecuzione delle attività viene utilizzato per concedere all'agente Amazon ECS Container l'autorizzazione a AWS API eseguire azioni specifiche per tuo conto. Ad esempio, quando si utilizza AWS Fargate, Fargate necessita di un IAM ruolo che gli consenta di estrarre immagini da Amazon ECR e scrivere log su Logs. CloudWatch Un IAM ruolo è 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 AmazonECR, ciò aiuta anche a ridurre i tempi di recupero della rete e a ridurre le modifiche al trasferimento dei dati quando il traffico esce dal tuoVPC.

Importante

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

Ruolo dell'istanza di container

La IAM politica AmazonEC2ContainerServiceforEC2Role gestita include 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'EC2istanza Amazon. Questa autorizzazione viene utilizzata dall'agente ECS container Amazon per supportare la propagazione dei tag di risorse. Per ulteriori informazioni, consulta Assegnazione di tag alle risorse.

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

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

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

  • ecs:Poll— (Obbligatorio) Consente all'agente ECS container di Amazon di comunicare con il piano di ECS controllo di Amazon 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 ECS container Amazon per registrare l'EC2istanza Amazon in un cluster e per supportare la propagazione dei tag di risorse.

  • ecs:StartTelemetrySession— (Facoltativo) Consente all'agente Amazon ECS Container di comunicare con il piano di ECS controllo di Amazon per riportare informazioni e parametri sanitari 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 ECS container Amazon 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 ECS container Amazon. Questa autorizzazione viene utilizzata dall'agente ECS container Amazon per il drenaggio delle istanze Spot.

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

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

  • ecr:BatchCheckLayerAvailability— (Facoltativo) Quando l'immagine di un contenitore viene inviata a un repository ECR privato Amazon, 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 ECR privato di Amazon, 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 ECR privato di Amazon, questa API viene chiamata una sola 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.

La seguente politica contiene le autorizzazioni richieste.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DiscoverPollEndpoint", "ecs:Poll", "ecs:RegisterContainerInstance", "ecs:UpdateContainerInstancesState", "ecs:Submit*" ], "Resource": "*" } ] }

Ruoli collegati ai servizi

Puoi utilizzare il ruolo collegato ai servizi di Amazon ECS per concedere al ECS servizio Amazon l'autorizzazione a chiamare altri servizi per tuo APIs conto. Amazon ECS necessita delle autorizzazioni per creare ed eliminare interfacce di rete, registrare e annullare la registrazione di destinazioni con un gruppo target. 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

Ti consigliamo di fare quanto segue quando configuri i IAM ruoli e le politiche delle tue 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 richiedere un' AWS APIazione, utilizza invece i IAM ruoli 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 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 impedire ai contenitori in esecuzione nella host rete di accedere ai EC2 metadati di Amazon.

Usa la modalità awsvpc di rete

Utilizza la modalità di awsvpc rete per limitare il flusso di traffico tra diverse attività o tra le tue attività e altri servizi eseguiti all'interno del tuo AmazonVPC. 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 daIAM, 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 AWS API chiamate viene registrata AWS CloudTrail come eventi. Vengono analizzate da AWS CloudTrail Insights e l'utente viene avvisato di eventuali comportamenti sospetti associati alle chiamate. write 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'identità principale ARN che ha contribuito alla. APIs

È possibile identificare le azioni eseguite dalle attività che hanno un IAM ruolo AWS CloudTrail esaminando la userIdentity proprietà 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 da Amazon ECS Container Agent nel registro di controllo dell'agente che si trova a un indirizzo nel /var/log/ecs/audit.log.YYYY-MM-DD-HH formato. Per ulteriori informazioni, consulta Task IAM Roles Log and Logging Insights Events for Trails.