Associare le policy di accesso alle voci di accesso - Amazon EKS

Contribuisci a migliorare questa pagina

Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.

Associare le policy di accesso alle voci di accesso

È possibile assegnare una o più policy di accesso alle voci di accesso di tipo STANDARD. Amazon EKS concede automaticamente agli altri tipi di voci di accesso le autorizzazioni necessarie per funzionare correttamente nel cluster. Le policy di accesso di Amazon EKS includono le autorizzazioni di Kubernetes, non le autorizzazioni IAM. Prima di associare una policy di accesso a una voce di accesso, assicurati di conoscere le autorizzazioni di Kubernetes incluse in ogni policy di accesso. Per ulteriori informazioni, consulta Rivedere le autorizzazioni della policy di accesso. Se nessuna delle policy di accesso soddisfa i requisiti, non associarne alcuna a una voce di accesso. Specificare invece uno o più nomi dei gruppi per la voce di accesso, e creare e gestire oggetti di controllo degli accessi basato sui ruoli di Kubernetes. Per ulteriori informazioni, consulta Creare voci di accesso.

  • Una voce di accesso esistente. Per crearne uno, consulta Creare voci di accesso.

  • Un ruolo o un utente AWS Identity and Access Management con le seguenti autorizzazioni: ListAccessEntries, DescribeAccessEntry, UpdateAccessEntry, ListAccessPolicies, AssociateAccessPolicy e DisassociateAccessPolicy. Per ulteriori informazioni, consulta Actions defined by Amazon Elastic Kubernetes Service in Service Authorization Reference.

Prima di associare policy di accesso a voci di accesso, considera i seguenti requisiti:

  • È possibile associare più policy di accesso a ciascuna voce di accesso, ma è possibile associare ogni policy a una voce di accesso solo una volta. Se associ più policy di accesso, il principale IAM della voce di accesso dispone di tutte le autorizzazioni incluse in tutte le policy di accesso associate.

  • Puoi applicare una policy di accesso a tutte le risorse di un cluster o specificando il nome di uno o più namespace di Kubernetes. Puoi utilizzare caratteri jolly per il nome di un namespace. Ad esempio, se desideri applicare una policy di accesso a tutti i namespace che iniziano con dev-, puoi specificare dev-* come nome del namespace. Assicurati che i namespace siano presenti sul cluster e che quanto digitato corrisponda esattamente al nome reale del namespace sul cluster. Amazon EKS, infatti, non conferma l’ortografia o l’esistenza dei namespace sul cluster.

  • È possibile modificare l’ambito di accesso per una policy di accesso dopo averla associata a una voce di accesso. Se hai limitato l’ambito della policy di accesso ai namespace di Kubernetes, puoi aggiungere e rimuovere i namespace per l’associazione, secondo necessità.

  • Se associ una policy di accesso a una voce di accesso in cui sono specificati anche i nomi dei gruppi, il principale IAM dispone di tutte le autorizzazioni in tutte le policy di accesso associate. Inoltre, dispone di tutte le autorizzazioni in qualsiasi oggetto Role o ClusterRole di Kubernetes specificato in qualsiasi oggetto Role e RoleBinding di Kubernetes che specifica i nomi dei gruppi.

  • Se esegui il comando kubectl auth can-i --list, non vedrai alcun permesso di Kubernetes assegnato dalle policy di accesso associate a una voce di accesso per il principale IAM che stai utilizzando quando viene eseguito il comando. Il comando mostra le autorizzazioni di Kubernetes solo se le hai concesse a oggetti Role o ClusterRole di Kubernetes associati ai nomi dei gruppi o al nome utente specificato per una voce di accesso.

  • Se impersoni un utente o un gruppo di Kubernetes durante l’interazione con oggetti di Kubernetes sul cluster, ad esempio utilizzando il comando kubectl con --as username o --as-group group-name , stai forzando l’uso dell’autorizzazione RBAC di Kubernetes. Di conseguenza, il principale IAM non dispone di autorizzazioni assegnate da alcuna policy di accesso associata alla voce di accesso. Le uniche autorizzazioni di Kubernetes di cui dispone l’utente o il gruppo che il principale IAM sta impersonando sono quelle di Kubernetes che hai concesso negli oggetti Role o ClusterRole di Kubernetes associati ai nomi dei gruppi o al nome utente. Per garantire che il principale IAM abbia le autorizzazioni nelle policy di accesso associate, evitare di impersonare un utente o un gruppo di Kubernetes. Il principale IAM avrà comunque anche tutte le autorizzazioni concesse negli oggetti Role o ClusterRole di Kubernetes associati ai nomi dei gruppi o al nome utente specificato per la voce di accesso. Per ulteriori informazioni, consulta User impersonation nella documentazione di Kubernetes.

Puoi associare una policy di accesso a una voce di accesso utilizzando Console di gestione AWS o AWS CLI.

Console di gestione AWS

  1. Aprire la Console Amazon EKS.

  2. Scegli il nome del cluster con una voce di accesso da associare a una policy di accesso.

  3. Scegliere la scheda Accesso.

  4. Se il tipo di voce di accesso è Standard, puoi associare o dissociare le policy di accesso di Amazon EKS. Se il tipo di voce di accesso è diverso da Standard, questa opzione non è disponibile.

  5. Scegliere Associa policy di accesso.

  6. Per Nome della policy, seleziona la policy con le autorizzazioni che desideri assegnare al principale IAM. Per visualizzare i permessi inclusi in ciascuna policy, consulta Rivedere le autorizzazioni della policy di accesso.

  7. Per Ambito di accesso, scegli un ambito di accesso. Se scegli Cluster, le autorizzazioni nella policy di accesso vengono concesse al principale IAM per le risorse in tutti i namespace di Kubernetes. Se scegli Namespace di Kubernetes, puoi scegliere Aggiungi nuovo namespace. Nel campo Namespace che appare, puoi inserire il nome di un namespace di Kubernetes sul cluster. Se desideri che il principale IAM disponga delle autorizzazioni su più namespace, puoi inserirne più di uno.

  8. Scegliere Aggiungi policy di accesso.

CLI AWS

  1. La versione 2.12.3 o successive oppure 1.27.160 o successive dell’interfaccia a riga di comando AWS (AWS CLI) installata e configurata sul dispositivo o in AWS CloudShell. Per verificare la versione attuale, usa aws --version | cut -d / -f2 | cut -d ' ' -f1. I programmi di gestione dei pacchetti, come yum, apt-get o Homebrew per macOS, spesso sono aggiornati a versioni precedenti di AWS CLI. Per installare la versione più recente, consulta Installing e Quick configuration with aws configure nella Guida per l’utente dell’interfaccia a riga di comando AWS. La versione della AWS CLI installata in AWS CloudShell potrebbe anche essere precedente di diverse versioni rispetto alla più recente. Per aggiornarla, consulta Installing AWS CLI to your home directory nella Guida per l’utente di AWS CloudShell.

  2. Visualizza le policy di accesso disponibili.

    aws eks list-access-policies --output table

    Di seguito viene riportato un output di esempio.

    --------------------------------------------------------------------------------------------------------- | ListAccessPolicies | +-------------------------------------------------------------------------------------------------------+ || accessPolicies || |+---------------------------------------------------------------------+-------------------------------+| || arn | name || |+---------------------------------------------------------------------+-------------------------------+| || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSAdminPolicy | AmazonEKSAdminPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy | AmazonEKSClusterAdminPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSEditPolicy | AmazonEKSEditPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSViewPolicy | AmazonEKSViewPolicy || |+---------------------------------------------------------------------+-------------------------------+|

    Per visualizzare i permessi inclusi in ciascuna policy, consulta Rivedere le autorizzazioni della policy di accesso.

  3. Visualizza le voci di accesso esistenti. Sostituisci my-cluster con il nome del cluster.

    aws eks list-access-entries --cluster-name my-cluster

    Di seguito viene riportato un output di esempio.

    { "accessEntries": [ "arn:aws:iam::111122223333:role/my-role", "arn:aws:iam::111122223333:user/my-user" ] }
  4. Associa una policy di accesso a una voce di accesso. L’esempio seguente associa la policy di accesso AmazonEKSViewPolicy a una voce di accesso. Ogni volta che il ruolo IAM my-role tenta di accedere agli oggetti di Kubernetes sul cluster, Amazon EKS autorizzerà il ruolo a utilizzare le autorizzazioni della policy per accedere agli oggetti di Kubernetes solo nei namespace my-namespace1 e my-namespace2 di Kubernetes. Sostituisci my-cluster con il nome del cluster, 111122223333 con l’ID dell’account AWS e my-role con il nome del ruolo IAM che desideri che Amazon EKS autorizzi ad accedere agli oggetti del cluster di Kubernetes.

    aws eks associate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role \ --access-scope type=namespace,namespaces=my-namespace1,my-namespace2 --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy

    Se desideri che il principale IAM disponga delle autorizzazioni a livello di cluster, sostituisci type=namespace,namespaces=my-namespace1,my-namespace2 con type=cluster. Se desideri associare più policy di accesso alla voce di accesso, esegui il comando più volte, ogni volta con una policy di accesso unica. Ogni policy di accesso associata ha il proprio ambito.

    Nota

    Se in seguito desideri modificare l’ambito di una policy di accesso associata, esegui nuovamente il comando precedente con il nuovo ambito. Ad esempio, se desideri rimuovere my-namespace2, eseguiresti nuovamente il comando utilizzando solo type=namespace,namespaces=my-namespace1 . Se desidera modificare l’ambito da namespace a cluster, esegui nuovamente il comando utilizzando type=cluster e rimuovendo type=namespace,namespaces=my-namespace1,my-namespace2 .

  5. Determina quali policy di accesso sono associate a una voce di accesso.

    aws eks list-associated-access-policies --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role

    Di seguito viene riportato un output di esempio.

    { "clusterName": "my-cluster", "principalArn": "arn:aws:iam::111122223333", "associatedAccessPolicies": [ { "policyArn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy", "accessScope": { "type": "cluster", "namespaces": [] }, "associatedAt": "2023-04-17T15:25:21.675000-04:00", "modifiedAt": "2023-04-17T15:25:21.675000-04:00" }, { "policyArn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy", "accessScope": { "type": "namespace", "namespaces": [ "my-namespace1", "my-namespace2" ] }, "associatedAt": "2023-04-17T15:02:06.511000-04:00", "modifiedAt": "2023-04-17T15:02:06.511000-04:00" } ] }

    Nell’esempio precedente, il principale IAM per questa voce di accesso ha permessi di visualizzazione in tutti i namespace del cluster e permessi di amministratore per due namespace di Kubernetes.

  6. Dissociazione di una policy di accesso da una voce di accesso. In questo esempio, la policy AmazonEKSAdminPolicy è dissociata da una voce di accesso. Tuttavia, il principale IAM mantiene le autorizzazioni nella policy di accesso di AmazonEKSViewPolicy per gli oggetti nei namespace my-namespace1 e my-namespace2, poiché tale policy di accesso non è dissociata dalla voce di accesso.

    aws eks disassociate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy

Per elencare le policy di accesso disponibili, consultare Rivedere le autorizzazioni della policy di accesso.