Aiutaci a migliorare questa pagina
Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
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à.
Configurare un account Kubernetes di servizio per assumere un ruolo IAM
Questo argomento spiega come configurare un account Kubernetes di servizio per assumere un ruolo AWS Identity and Access Management (IAM). Qualsiasi Pods configurato per utilizzare l'account del servizio può quindi accedere a qualsiasi Servizio AWS per cui il ruolo dispone delle autorizzazioni di accesso.
Prerequisiti
-
Un cluster esistente. Se non se ne possiede già uno, crearlo seguendo una delle guide Guida introduttiva ad Amazon EKS.
-
Provider IAM OpenID Connect (OIDC) esistente per il cluster. Per sapere se disponi di un account o, per crearne uno, consulta Crea un OIDC provider IAM per il tuo cluster.
-
Versione
2.12.3
o successiva o versione1.27.160
o successiva di AWS Command Line Interface (AWS CLI) installato e configurato sul dispositivo o AWS CloudShell. Per verificare la versione attuale, usa
. I programmi di gestione dei pacchetti, comeaws --version | cut -d / -f2 | cut -d ' ' -f1
yum
,apt-get
o Homebrew per macOS, spesso sono aggiornati a versioni precedenti della AWS CLI. Per installare la versione più recente, consulta le sezioni Installazione, aggiornamento e disinstallazione della AWS CLI e Configurazione rapida con aws configure nella Guida per l'utente dell'AWS Command Line Interface . La AWS CLI versione installata in AWS CloudShell potrebbe anche contenere diverse versioni precedenti alla versione più recente. Per aggiornarla, consulta Installazione nella home directory nella Guida AWS CLI per l'AWS CloudShell utente. -
Lo strumento a riga di comando
kubectl
è installato sul dispositivo o AWS CloudShell. La versione può essere uguale oppure immediatamente precedente o successiva alla versione Kubernetes del cluster. Ad esempio, se la versione del cluster è1.29
, puoi usarekubectl
versione1.28
,1.29
o1.30
. Per installare o aggiornarekubectl
, consulta Installazione o aggiornamento di kubectl: -
Un file
kubectl
config
esistente che contiene la configurazione del cluster. Per creare un filekubectl
config
, consulta Creazione o aggiornamento di un file kubeconfig per un cluster Amazon EKS.
Per associare un ruolo IAM a un account del servizio Kubernetes.
-
Se desideri associare una policy IAM esistente al tuo ruolo IAM, passa al prossimo passaggio.
Creare una policy IAM È possibile creare una politica personalizzata o copiare una politica AWS gestita che già concede alcune delle autorizzazioni necessarie e personalizzarla in base alle proprie esigenze specifiche. Per ulteriori informazioni, consulta Creazione di policy IAM nella Guida per l'utente di IAM.
-
Crea un file che includa le autorizzazioni per il Servizi AWS quale desideri accederePods. Per un elenco di tutte le azioni per tutti Servizi AWS, consulta il Service Authorization Reference.
Puoi eseguire il comando seguente per creare un file policy di esempio che consenta l'accesso in sola lettura a un bucket Amazon S3. Puoi facoltativamente archiviare le informazioni di configurazione o uno script di bootstrap in questo bucket; i container nel Pod possono leggere il file dal bucket e caricarlo nell'applicazione. Se desideri creare questa policy di esempio, copia i seguenti contenuti sul dispositivo. Sostituisci
my-pod-secrets-bucket
con il nome del bucket ed esegui il comando.cat >
my-policy.json
<<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-pod-secrets-bucket
" } ] } EOF -
Creare la policy IAM.
aws iam create-policy --policy-name
my-policy
--policy-document file://my-policy.json
-
-
Crea un ruolo IAM e associalo a un account del servizio Kubernetes. In alternativa, è possibile utilizzare
eksctl
o la AWS CLI. -
Conferma che il ruolo e l'account del servizio siano configurati correttamente.
-
Conferma che la policy di attendibilità del ruolo IAM sia configurata correttamente.
aws iam get-role --role-name
my-role
--query Role.AssumeRolePolicyDocumentDi seguito viene riportato un output di esempio:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::
111122223333
:oidc-provider/oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:sub": "system:serviceaccount:default:my-service-account
", "oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:aud": "sts.amazonaws.com" } } } ] } -
Conferma che la policy che hai associato al tuo ruolo in un passaggio precedente sia associata al ruolo.
aws iam list-attached-role-policies --role-name
my-role
--query AttachedPolicies[].PolicyArn --output textDi seguito viene riportato un output di esempio:
arn:aws:iam::
111122223333
:policy/my-policy
-
Imposta una variabile per memorizzare il nome della risorsa Amazon (ARN) della policy che desideri utilizzare. Sostituisci
my-policy
con il nome della policy per la quale desideri confermare le autorizzazioni.export policy_arn=arn:aws:iam::
111122223333
:policy/my-policy
-
Visualizza la versione predefinita della policy.
aws iam get-policy --policy-arn $policy_arn
Di seguito viene riportato un output di esempio:
{ "Policy": { "PolicyName": "
my-policy
", "PolicyId": "EXAMPLEBIOWGLDEXAMPLE
", "Arn": "arn:aws:iam::111122223333
:policy/my-policy
", "Path": "/", "DefaultVersionId": "v1
", [...] } } -
Visualizza il contenuto della policy per assicurarti che la policy includa tutte le autorizzazioni di cui Pod ha bisogno. Se necessario, sostituisci
1
nel comando seguente con la versione restituita nell'output della fase precedente.aws iam get-policy-version --policy-arn $policy_arn --version-id v
1
Di seguito viene riportato un output di esempio:
{ "Version": "2012-10-17", "Statement": [
{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-pod-secrets-bucket" }
] }Se hai creato la policy di esempio in un passaggio precedente, il risultato è lo stesso. Se hai creato una policy diversa, allora il contenuto dell'
esempio
è diverso. -
Conferma che l'account del servizio Kubernetes sia annotato con il ruolo.
kubectl describe serviceaccount
my-service-account
-ndefault
Di seguito viene riportato un output di esempio:
Name:
my-service-account
Namespace:default
Annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333
:role/my-role
Image pull secrets: <none> Mountable secrets:my-service-account
-token-qqjfl
Tokens:my-service-account
-token-qqjfl
[...]
-
-
(Facoltativo)Configurare l' AWS Security Token Service endpoint per un account di servizio. AWS consiglia di utilizzare un AWS STS endpoint regionale anziché un endpoint globale. Ciò riduce la latenza, fornisce una ridondanza integrata e aumenta la validità del token di sessione.
Approfondimenti
PodsConfigurare l'utilizzo di un account Kubernetes di servizio