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:
La tua attività è ospitata su una AWS Fargate o più EC2 istanze Amazon e:
|
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. |
|
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
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 AmazonEC2ContainerServiceforEC2Role
può 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 clusterdefault
, 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 azioniSubmitAttachmentStateChanges
SubmitContainerStateChange
, eSubmitTaskStateChange
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'SubmitContainerStateChange
autorizzazione 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
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.