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à.
IAMRuolo ECS dell'attività di Amazon
Alle tue ECS attività Amazon può essere associato un IAM ruolo. Le autorizzazioni concesse nel IAM ruolo vengono assunte dai contenitori in esecuzione nell'attività. Questo ruolo consente al codice dell'applicazione (sul contenitore) di utilizzare altri AWS servizi. Il ruolo dell'attività è necessario quando l'applicazione accede ad altri AWS servizi, come Amazon S3. Per le IAM autorizzazioni necessarie ad Amazon ECS per estrarre le immagini dei contenitori ed eseguire l'operazione, consultaIAMRuolo di esecuzione delle ECS attività di Amazon.
Di seguito sono riportati i vantaggi dell'utilizzo dei ruoli delle attività:
-
Isolamento delle credenziali: un contenitore può recuperare solo le credenziali per il IAM ruolo definito nella definizione dell'attività a cui appartiene; un contenitore non ha mai accesso alle credenziali destinate a un altro contenitore che appartiene a un'altra attività.
-
Autorizzazione: i contenitori non autorizzati non possono accedere alle credenziali di IAM ruolo definite per altre attività.
-
Controllo: la registrazione degli accessi e degli eventi è disponibile per garantire un controllo CloudTrail retrospettivo. Le credenziali dell'attività hanno un contesto
taskArn
che è allegato alla sessione, quindi CloudTrail i registri mostrano quale attività utilizza quale ruolo.
Nota
Quando specifichi un IAM ruolo per un'attività, l'utente AWS CLI o l'altro SDKs nei contenitori per quell'attività utilizza esclusivamente le AWS credenziali fornite dal ruolo dell'attività e non eredita più alcuna IAM autorizzazione da Amazon EC2 o dall'istanza esterna su cui è in esecuzione.
Creazione del ruolo dell'attività IAM
Quando si crea una IAM politica da utilizzare per le attività, la politica deve includere le autorizzazioni che si desidera vengano assegnate ai contenitori delle attività. Puoi utilizzare una politica AWS gestita esistente oppure creare una politica personalizzata da zero che soddisfi le tue esigenze specifiche. Per ulteriori informazioni, consulta Creazione IAM di politiche nella Guida IAM per l'utente.
Importante
Per le ECS attività di Amazon (per tutti i tipi di lancio), ti consigliamo di utilizzare la IAM politica e il ruolo per le tue attività. Queste credenziali consentono all'attività di effettuare AWS API richieste senza sts:AssumeRole
dover chiamare per assumere lo stesso ruolo già associato all'attività. Se l'attività richiede che un ruolo assuma se stesso, devi creare una policy di attendibilità che consenta esplicitamente a tale ruolo di assumere se stesso. Per ulteriori informazioni, vedere Modifica di una politica di attendibilità dei ruoli nella Guida per l'IAMutente.
Dopo aver creato la IAM policy, puoi creare un IAM ruolo che includa quella policy a cui fai riferimento nella definizione del tuo ECS task Amazon. Puoi creare il ruolo utilizzando lo use case Elastic Container Service Task nella IAM console. Quindi, puoi allegare la tua IAM politica specifica al ruolo che fornisce ai contenitori della tua attività le autorizzazioni desiderate. Di seguito viene descritto come procedere.
Se disponi di più definizioni o servizi di attività che richiedono IAM autorizzazioni, dovresti prendere in considerazione la creazione di un ruolo per ogni definizione o servizio di attività specifico con le autorizzazioni minime richieste per il funzionamento delle attività, in modo da ridurre al minimo l'accesso fornito per ciascuna attività.
Per informazioni sull'endpoint di servizio per la tua regione, consulta Service endpoints nella Guida.Riferimenti generali di Amazon Web Services
Il ruolo dell'IAMattività deve avere una politica di fiducia che specifichi il servizio. ecs-tasks.amazonaws.com
L'sts:AssumeRole
autorizzazione consente alle tue attività di assumere un IAM ruolo diverso da quello utilizzato dall'EC2istanza Amazon. In questo modo, la tua attività non eredita il ruolo associato all'EC2istanza Amazon. Di seguito è illustrato un esempio di policy di attendibilità. Sostituisci l'identificatore della regione e specifica il numero di AWS account che usi per avviare le attività.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "ecs-tasks.amazonaws.com" ] }, "Action":"sts:AssumeRole", "Condition":{ "ArnLike":{ "aws:SourceArn":"arn:aws:ecs:
us-west-2
:111122223333
:*" }, "StringEquals":{ "aws:SourceAccount":"111122223333
" } } } ] }
Importante
Quando si crea il IAM ruolo dell'attività, si consiglia di utilizzare le chiavi aws:SourceAccount
o aws:SourceArn
condition nella relazione di fiducia o nella IAM politica associata al ruolo per definire ulteriormente l'ambito delle autorizzazioni ed evitare la confusa questione di sicurezza secondaria. L'uso della chiave di condizioni aws:SourceArn
per specificare un cluster specifico non è correntemente supportato, è necessario utilizzare il carattere jolly per specificare tutti i cluster. Per ulteriori informazioni sul problema del vicedirettore confuso e su come proteggere il proprio AWS account, consulta Il problema del vicesceriffo confuso nella Guida per l'IAMutente.
Le seguenti procedure descrivono come creare una policy per recuperare oggetti da Amazon S3 con una policy di esempio. Sostituisci tutto user input
con i tuoi valori.
Le procedure seguenti descrivono come creare un IAM ruolo di attività allegando una IAM politica creata dall'utente.
Dopo aver creato il ruolo, aggiungi ulteriori autorizzazioni al ruolo per le seguenti funzionalità.
Funzionalità | Autorizzazioni aggiuntive |
---|---|
Usa Exec ECS |
|
Usa EC2 istanze (Windows e Linux) | |
Usa istanze esterne | |
Usa istanze Windows EC2 |
ECSAutorizzazioni Exec
La funzionalità ECSExec richiede un IAM ruolo di attività per concedere ai contenitori le autorizzazioni necessarie per la comunicazione tra l'SSMagente gestito (execute-command
agente) e il servizio. SSM È necessario aggiungere le seguenti autorizzazioni a un ruolo dell'attività e includere il IAM ruolo dell'attività nella IAM definizione dell'attività. Per ulteriori informazioni, consulta Aggiungere e rimuovere i IAM criteri nella Guida per l'IAMutente.
Utilizza la seguente politica per il tuo IAM ruolo di attività per aggiungere le SSM autorizzazioni richieste.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
Configurazione aggiuntiva EC2 delle istanze Amazon
Ti consigliamo di limitare le autorizzazioni nel tuo ruolo di istanza del contenitore all'elenco minimo di autorizzazioni utilizzate nella politica gestita. AmazonEC2ContainerServiceforEC2Role
IAM
Le tue EC2 istanze Amazon richiedono almeno la versione 1.11.0
dell'agente container per utilizzare il task role; tuttavia, ti consigliamo di utilizzare la versione più recente dell'agente container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta Aggiornamento dell'agente ECS container Amazon. Se utilizzi una versione ECS ottimizzata per AmazonAMI, la tua istanza necessita 1.11.0-1
di almeno una parte del ecs-init
pacchetto. Se le tue istanze utilizzano la versione più recente ECS ottimizzata per AmazonAMI, contengono le versioni richieste dell'agente contenitore e. ecs-init
Per ulteriori informazioni, consulta Linux ECS ottimizzato per Amazon AMIs.
Se non utilizzi Amazon ECS -optimized AMI per le tue istanze di container, aggiungi l'--net=host
opzione al docker run comando che avvia l'agente e le seguenti variabili di configurazione dell'agente per la configurazione desiderata (per ulteriori informazioni, consultaConfigurazione di Amazon ECS Container Agent):
ECS_ENABLE_TASK_IAM_ROLE=true
-
Utilizza IAM i ruoli per le attività dei contenitori con le modalità
bridge
didefault
rete. ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true
-
Utilizza IAM i ruoli per le attività per i contenitori con la modalità
host
di rete. Questa variabile è supportata sull'agente solo a partire dalla versione 1.12.0.
Per un esempio di comando di esecuzione, vedi Aggiornamento manuale dell'agente ECS container Amazon (per prodotti non ottimizzati per AmazonECS) AMIs. Dovrai inoltre impostare i seguenti comandi di rete sull'istanza del contenitore in modo che i contenitori delle tue attività possano recuperare le proprie AWS credenziali:
sudo sysctl -w net.ipv4.conf.all.route_localnet=1
sudo iptables -t nat -A PREROUTING -p tcp -d 169.254.170.2 --dport 80 -j DNAT --to-destination 127.0.0.1:51679
sudo iptables -t nat -A OUTPUT -d 169.254.170.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 51679
Per fare in modo che le regole iptables vengano conservate dopo un riavvio, devi salvarle sull'istanza di container. Puoi salvare e ripristinare le regole iptables all'avvio tramite i comandi iptables-save e iptables-restore. Per ulteriori informazioni, consulta la documentazione specifica per il tuo sistema operativo.
Per impedire ai contenitori eseguiti da attività che utilizzano la modalità di awsvpc
rete di accedere alle informazioni sulle credenziali fornite al profilo dell'EC2istanza Amazon, pur consentendo le autorizzazioni fornite dal ruolo dell'attività, imposta la variabile di configurazione dell'ECS_AWSVPC_BLOCK_IMDS
agente su true
nel file di configurazione dell'agente e riavvia l'agente. Per ulteriori informazioni, consulta Configurazione di Amazon ECS Container Agent.
Per impedire ai contenitori eseguiti da attività che utilizzano la modalità di bridge
rete di accedere alle informazioni sulle credenziali fornite al profilo dell'EC2istanza Amazon, pur consentendo le autorizzazioni fornite dal ruolo dell'attività, esegui il seguente iptables comando sulle tue istanze AmazonEC2. Questo comando non influisce sui container nelle attività che usano la modalità di rete host
o awsvpc
. Per ulteriori informazioni, consulta Modalità di rete.
-
sudo yum install -y iptables-services; sudo iptables --insert DOCKER-USER 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP
Devi salvare questa iptables regola sulla tua EC2 istanza Amazon affinché sopravviva al riavvio. Quando usi Amazon ECS -optimizedAMI, puoi usare il seguente comando. Per gli altri sistemi operativi, consulta la relativa documentazione specifica.
sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables
Configurazione aggiuntiva dell'istanza esterna
Le istanze esterne richiedono almeno la versione 1.11.0
dell'agente contenitore per utilizzare i IAM ruoli delle attività; tuttavia, consigliamo di utilizzare la versione più recente dell'agente contenitore. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta Aggiornamento dell'agente ECS container Amazon. Se utilizzi una versione ECS ottimizzata per AmazonAMI, la tua istanza richiede almeno una 1.11.0-1
parte del ecs-init
pacchetto. Se le tue istanze utilizzano la versione più recente ECS ottimizzata per AmazonAMI, contengono le versioni richieste dell'agente contenitore e. ecs-init
Per ulteriori informazioni, consulta Linux ECS ottimizzato per Amazon AMIs.
Se non utilizzi Amazon ECS -optimized AMI per le tue istanze di container, aggiungi l'--net=host
opzione al docker run comando che avvia l'agente e le seguenti variabili di configurazione dell'agente per la configurazione desiderata (per ulteriori informazioni, consultaConfigurazione di Amazon ECS Container Agent):
ECS_ENABLE_TASK_IAM_ROLE=true
-
Utilizza IAM i ruoli per le attività dei contenitori con le modalità
bridge
didefault
rete. ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true
-
Utilizza IAM i ruoli per le attività per i contenitori con la modalità
host
di rete. Questa variabile è supportata sull'agente solo a partire dalla versione 1.12.0.
Per un esempio di comando di esecuzione, vedi Aggiornamento manuale dell'agente ECS container Amazon (per prodotti non ottimizzati per AmazonECS) AMIs. Dovrai inoltre impostare i seguenti comandi di rete sull'istanza del contenitore in modo che i contenitori delle tue attività possano recuperare le proprie AWS credenziali:
sudo sysctl -w net.ipv4.conf.all.route_localnet=1
sudo iptables -t nat -A PREROUTING -p tcp -d 169.254.170.2 --dport 80 -j DNAT --to-destination 127.0.0.1:51679
sudo iptables -t nat -A OUTPUT -d 169.254.170.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 51679
Per fare in modo che le regole iptables vengano conservate dopo un riavvio, devi salvarle sull'istanza di container. Puoi salvare e ripristinare le regole iptables all'avvio tramite i comandi iptables-save e iptables-restore. Per ulteriori informazioni, consulta la documentazione specifica per il tuo sistema operativo.
Configurazione aggiuntiva dell'istanza Amazon EC2 Windows
Importante
Questo vale solo per i contenitori Windows EC2 che utilizzano ruoli di attività.
Il ruolo di attività con funzionalità di Windows richiede una configurazione aggiuntivaEC2.
-
Quando avvii le istanze di container, devi configurare l'opzione
-EnableTaskIAMRole
nello script di dati utente dell'istanza di container.EnableTaskIAMRole
Attiva la funzionalità IAM Ruoli delle attività per le attività. Per esempio:<powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster '
windows
' -EnableTaskIAMRole </powershell> -
Devi eseguire il bootstrap del container con i comandi di rete forniti in Script di bootstrap per ECS contenitori Amazon.
-
È necessario creare un IAM ruolo e una politica per le proprie attività. Per ulteriori informazioni, consulta Creazione del ruolo dell'attività IAM.
-
I IAM ruoli del provider di credenziali per le attività utilizzano la porta 80 sull'istanza del contenitore. Pertanto, se IAM configuri i ruoli per le attività sull'istanza del contenitore, i contenitori non possono utilizzare la porta 80 per la porta host in nessuna mappatura delle porte. Per esporre i container sulla porta 80, consigliamo di configurare un servizio che utilizzi il bilanciamento del carico. Puoi utilizzare la porta 80 sul load balancer. In questo modo, il traffico può essere instradato a un'altra porta host nelle istanze di container. Per ulteriori informazioni, consulta Usa il bilanciamento del carico per distribuire il traffico dei ECS servizi Amazon.
-
Se l'istanza Windows viene riavviata, è necessario eliminare l'interfaccia proxy e inizializzare nuovamente l'agente Amazon ECS Container per ripristinare il proxy delle credenziali.
Script di bootstrap per ECS contenitori Amazon
Prima che i container possano accedere al proxy di credenziali nell'istanza di container per ottenere le credenziali, devi eseguire il bootstrap del container con i comandi di rete richiesti. Il seguente script di esempio di codice deve essere eseguito nei container quando si avviano.
Nota
Non è necessario eseguire questo script quando si utilizza la modalità di rete awsvpc
su Windows.
Se esegui container Windows che includono Powershell, utilizza lo script seguente:
# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You may # not use this file except in compliance with the License. A copy of the # License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is distributed # on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either # express or implied. See the License for the specific language governing # permissions and limitations under the License. $gateway = (Get-NetRoute | Where { $_.DestinationPrefix -eq '0.0.0.0/0' } | Sort-Object RouteMetric | Select NextHop).NextHop $ifIndex = (Get-NetAdapter -InterfaceDescription "Hyper-V Virtual Ethernet*" | Sort-Object | Select ifIndex).ifIndex New-NetRoute -DestinationPrefix 169.254.170.2/32 -InterfaceIndex $ifIndex -NextHop $gateway -PolicyStore ActiveStore # credentials API New-NetRoute -DestinationPrefix 169.254.169.254/32 -InterfaceIndex $ifIndex -NextHop $gateway -PolicyStore ActiveStore # metadata API
Se esegui container Windows con solo Command shell, utilizza lo script seguente:
# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You may # not use this file except in compliance with the License. A copy of the # License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is distributed # on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either # express or implied. See the License for the specific language governing # permissions and limitations under the License. for /f "tokens=1" %i in ('netsh interface ipv4 show interfaces ^| findstr /x /r ".*vEthernet.*"') do set interface=%i for /f "tokens=3" %i in ('netsh interface ipv4 show addresses %interface% ^| findstr /x /r ".*Default.Gateway.*"') do set gateway=%i netsh interface ipv4 add route prefix=169.254.170.2/32 interface="%interface%" nexthop="%gateway%" store=active # credentials API netsh interface ipv4 add route prefix=169.254.169.254/32 interface="%interface%" nexthop="%gateway%" store=active # metadata API