Esempi di policy basate su identità Amazon EKS - Amazon EKS

Esempi di policy basate su identità Amazon EKS

Per impostazione predefinita, gli utenti e i ruoli IAM non dispongono dell'autorizzazione per creare o modificare risorse Amazon EKS. Inoltre, non sono in grado di eseguire attività utilizzando la AWS Management Console, AWS CLI o un'API AWS. Un amministratore IAM deve creare policy IAM che concedono a utenti e ruoli l'autorizzazione per eseguire operazioni API specifiche sulle risorse specificate di cui hanno bisogno. L'amministratore deve quindi allegare queste policy a utenti o IAM che richiedono tali autorizzazioni.

Per informazioni su come creare una policy basata su identità IAM utilizzando questi documenti di policy JSON di esempio, consultare Creazione di policy nella scheda JSON nella Guida per l'utente di IAM.

Quando si crea un cluster Amazon EKS, il ruolo o l'utente dell'entità AWS Identity and Access Management (IAM), come ad esempio un utente federato che crea il cluster, riceve automaticamente le autorizzazioni system:masters nella configurazione del controllo degli accessi basato sul ruolo (RBAC) nel piano di controllo di Amazon EKS. Questa entità IAM non viene visualizzata in una configurazione visibile qualsiasi, quindi assicurarsi di tenere traccia di quale entità IAM ha originariamente creato il cluster. Per concedere a ulteriori utenti o ruoli AWS la capacità di interagire con il cluster, devi modificare aws-auth ConfigMap all'interno di Kubernetes e creare un rolebinding o clusterrolebinding Kubernetes con il nome di un group specificato in aws-auth ConfigMap.

Per ulteriori informazioni sull'utilizzo della ConfigMap, consultare Abilitazione dell'accesso a utenti e ruoli IAM al cluster.

Best practice per le policy

Le policy basate su identità sono molto potenti. Essi determinano se qualcuno può creare, accedere o eliminare risorse Amazon EKS nell'account. Queste operazioni possono comportare costi aggiuntivi per il proprio Account AWS. Quando crei o modifichi policy basate su identità, segui queste linee guida e suggerimenti:

  • Guida all'utilizzo di policy gestite AWS : – Per iniziare a utilizzare rapidamente Amazon EKS, utilizzare policy gestite da AWS per fornire ai dipendenti le autorizzazioni richieste. Queste policy sono già disponibili nell'account e sono gestite e aggiornate da AWS. Per ulteriori informazioni, consultare Nozioni di base sull'utilizzo delle autorizzazioni con policy gestite da AWS nella Guida per l'utente di IAM.

  • Assegnare il privilegio minimo – Quando crei policy personalizzate, concedi solo le autorizzazioni richieste per eseguire un'attività. Inizia con un set di autorizzazioni minimo e concedi autorizzazioni aggiuntive quando necessario. Questo è più sicuro che iniziare con autorizzazioni che siano troppo permissive e cercare di limitarle in un secondo momento. Per ulteriori informazioni, consultare Grant least privilege (Assegnare il privilegio minimo) nella Guida per l'utente di IAM.

  • Abilitare MFA per operazioni sensibili – Per una maggiore sicurezza, richiedi agli utenti IAM di utilizzare l'autenticazione a più fattori (MFA) per accedere a risorse sensibili o ad operazioni API. Per ulteriori informazioni, consultare Utilizzo dell'autenticazione a più fattori (MFA) in AWS nella Guida per l'utente di IAM.

  • Utilizza le condizioni della policy per ulteriore sicurezza – Per quanto possibile, definisci le condizioni per cui le policy basate su identità consentono l'accesso a una risorsa. Ad esempio, è possibile scrivere condizioni per specificare un intervallo di indirizzi IP consentiti dai quali deve provenire una richiesta. È anche possibile scrivere condizioni per consentire solo le richieste all'interno di un intervallo di date o ore specificato oppure per richiedere l'utilizzo di SSL o MFA. Per ulteriori informazioni, consultare Elementi delle policy JSON di IAM: Condizioni nella Guida per l'utente di IAM.

Utilizzo della console Amazon EKS

Per accedere alla console Amazon EKS, è necessario disporre di un set di autorizzazioni minimo. Queste autorizzazioni devono consentire di elencare e visualizzare i dettagli relativi alle risorse di Amazon EKS all'interno dell'account AWS. Se crei una policy basata su identità più restrittiva rispetto alle autorizzazioni minime richieste, la console non funzionerà nel modo previsto per le entità (utenti e ruoli IAM) associate a tale policy.

Importante

Se nella console viene visualizzato un errore Error loading Namespaces (Errore di caricamento degli spazi dei nomi) o non viene visualizzato nulla nelle schede Overview (Panoramica) o Workloads (Carichi di lavoro), consulta la sezione Impossibile visualizzare i carichi di lavoro o i nodi e ricevere un errore nella AWS Management Console per la risoluzione del problema. Se il problema non viene risolto, è comunque possibile visualizzare e gestire aspetti del cluster Amazon EKS nella scheda Configurazione.

Per garantire che le entità possano comunque utilizzare la console Amazon EKS, creare una policy con un nome univoco, ad esempio AmazonEKSAdminPolicy. Allega la policy alle entità. Per ulteriori informazioni, consultare Aggiunta di autorizzazioni a un utente nella Guida per l'utente di IAM.

Importante

La policy di esempio riportata di seguito consente di visualizzare le informazioni sulla scheda Configurazione della console. Per visualizzare le informazioni sui Nodi e sui Carichi di lavoro nella AWS Management Console, sono necessarie autorizzazioni IAM aggiuntive e autorizzazioni Kubernetes. Per ulteriori informazioni, consultare la policy di esempio É possibile visualizzare i nodi e i carichi di lavoro per tutti i cluster nella AWS Management Console.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "eks.amazonaws.com" } } } ] }

Non sono necessarie le autorizzazioni minime della console per gli utenti che effettuano chiamate solo alla AWS CLI o all'API AWS. Al contrario, è possibile accedere solo alle operazioni che soddisfano l'operazione API che si sta cercando di eseguire.

É possibile visualizzare i nodi e i carichi di lavoro per tutti i cluster nella AWS Management Console

Questo esempio illustra il modo in cui è possibile creare una policy che consenta a un utente di Visualizzazione dei nodi e Visualizzazione dei carichi di lavoro per tutti i cluster.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeNodegroup", "eks:ListNodegroups", "eks:DescribeCluster", "eks:ListClusters", "eks:AccessKubernetesApi", "ssm:GetParameter", "eks:ListUpdates", "eks:ListFargateProfiles" ], "Resource": "*" } ] }
Importante

La policy deve essere allegata a un utente o a un ruolo mappato a un utente o gruppo Kubernetes nel aws-auth ConfigMap. L'utente o il gruppo devono essere un subject in un rolebinding o clusterrolebinding che è legato a un role o clusterrole Kubernetes che dispone delle autorizzazioni necessarie per visualizzare le risorse Kubernetes. Per ulteriori informazioni sull'aggiunta degli utenti o dei ruoli IAM a aws-auth Configmap, consultare Abilitazione dell'accesso a utenti e ruoli IAM al cluster. Per creare ruoli e associazioni di ruoli, vedere Uso dell'autorizzazione RBAC nella documentazione Kubernetes. È possibile scaricare i seguenti manifesti di esempio che creano un clusterrole e clusterrolebinding o un role e rolebinding:

  • Visualizza le risorse Kubernetes in tutti gli spazi dei nomi – Il nome del gruppo nel file è eks-console-dashboard-full-access-group, che è il gruppo a cui l'utente o il ruolo IAM deve essere mappato nella configmap aws-auth. È possibile modificare il nome del gruppo prima di applicarlo al cluster, se lo si desidera, e quindi mappare l'utente o il ruolo IAM a tale gruppo nella configmap. Per eseguire il download del file, seleziona il collegamento appropriato per la Regione AWS in cui si trova il cluster.

  • Visualizzare le risorse Kubernetes in uno spazio dei nomi specifico – Lo spazio dei nomi in questo file è default, quindi se si desidera specificare uno spazio dei nomi diverso, modificare il file prima di applicarlo al cluster. Il nome del gruppo nel file è eks-console-dashboard-restricted-access-group, che è il gruppo a cui l'utente o il ruolo IAM deve essere mappato nel configmap aws-auth. Se lo si desidera, è possibile modificare il nome del gruppo prima di applicarlo al cluster, e quindi mappare l'utente o il ruolo IAM a tale gruppo nella configmap. Per eseguire il download del file, seleziona il collegamento appropriato per la Regione AWS in cui si trova il cluster.

Consentire agli utenti di visualizzare le loro autorizzazioni

Questo esempio mostra in che modo è possibile creare una policy che consente agli utenti IAM di visualizzare le policy inline e gestite che sono allegate alla relativa identità utente. Questa policy include le autorizzazioni per completare questa operazione sulla console o a livello di programmazione utilizzando la AWS CLI o l'API AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Aggiornare un cluster Kubernetes

Questo esempio illustra il modo in cui è possibile creare una policy che consente a un utente di aggiornare la versione di Kubernetes di un cluster dev per un account in qualsiasi regione.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "eks:UpdateClusterVersion", "Resource": "arn:aws:eks:*:<111122223333>:cluster/<dev>" } ] }

Elencare o descrivere tutti i cluster

Questo esempio illustra il modo in cui è possibile creare una policy che consenta a un utente di accedere in sola lettura per elencare o descrivere tutti i cluster. Un account deve essere in grado di elencare e descrivere i cluster per utilizzare il comando update-kubeconfig della AWS CLI.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListClusters" ], "Resource": "*" } ] }