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
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
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 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'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 undefault
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ò includeSubmitAttachmentStateChanges
SubmitContainerStateChange
leSubmitTaskStateChange
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'SubmitContainerStateChange
autorizzazione 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
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.