Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
aws-iam-authenticator — Uno strumento per utilizzare le credenziali AWS IAM per autenticarsi a un cluster Kubernetes | Kitploit
Strumenti/GitHubGitHub/kubernetes-sigs/aws-iam-authenticator
Autenticazione e AutorizzazioneSicurezza dell'Infrastruttura CloudSicurezza CloudGestione Identità e Accessi (IAM)
GitHubkubernetes-sigs/aws-iam-authenticator

aws-iam-authenticator

Uno strumento per utilizzare le credenziali AWS IAM per autenticarsi a un cluster Kubernetes

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
2.3k450327 giorni faRevisionato da Kitploit

AWS IAM Authenticator for Kubernetes

Uno strumento per utilizzare le credenziali AWS IAM per autenticarsi su un cluster Kubernetes. Il lavoro iniziale su questo strumento è stato guidato da Heptio. Il progetto riceve contributi da diversi ingegneri della community ed è attualmente mantenuto da Heptio e dagli ingegneri OSS di Amazon EKS.

Table of Contents

  • Why do I want this?
  • How do I use it?
  • Kops Usage
  • How does it work?
  • What is a cluster ID?
  • Specifying Credentials & Using AWS Profiles
  • API Authorization from Outside a Cluster
  • Troubleshooting
  • Full Configuration Format
  • Development
  • Community, discussion, contribution, and support

Perché dovrei volerlo?

Se sei un amministratore che gestisce un cluster Kubernetes su AWS, devi già gestire le credenziali AWS IAM per il provisioning e l'aggiornamento del cluster. Utilizzando AWS IAM Authenticator for Kubernetes eviti di dover gestire una credenziale separata per l'accesso a Kubernetes. AWS IAM offre anche una serie di proprietà interessanti come una traccia di audit esterna (tramite CloudTrail) e l'applicazione di 2FA/MFA.

Se stai creando un installer Kubernetes su AWS, AWS IAM Authenticator for Kubernetes può semplificare il tuo processo di bootstrap. Non dovrai introdurre di nascosto la tua credenziale admin iniziale in modo sicuro dal cluster appena installato. Invece, puoi creare un ruolo dedicato KubernetesAdmin in fase di provisioning del cluster e configurare Authenticator per consentire gli accessi degli amministratori del cluster.

Come lo uso?

Supponendo che tu abbia un cluster in esecuzione su AWS e che tu voglia aggiungere il supporto per AWS IAM Authenticator for Kubernetes, devi:

  1. Creare un ruolo IAM che userai per identificare gli utenti.
  2. Eseguire il server Authenticator come DaemonSet.
  3. Configurare il tuo API server per comunicare con Authenticator.
  4. Configurare kubectl per utilizzare i token di Authenticator.

1. Creare un ruolo IAM

Per prima cosa, devi creare uno o più ruoli IAM che verranno mappati a utenti/gruppi all'interno del tuo cluster Kubernetes. Il modo più semplice per farlo è accedere alla console AWS:

  • Scegli l'opzione "Role for cross-account access" / "Provide access between AWS accounts you own".
  • Incolla il numero del tuo ID account AWS (disponibile in alto a destra nella console).
  • Il tuo ruolo non necessita di alcuna policy aggiuntiva collegata.

In questo modo verrà creato un ruolo IAM senza autorizzazioni che può essere assunto da utenti/ruoli autorizzati nel tuo account. Prendi nota dell'Amazon Resource Name (ARN) del tuo ruolo, che ti servirà in seguito.

Puoi anche farlo in un unico passaggio usando la AWS CLI invece della console AWS:```sh

get your account ID

ACCOUNT_ID=$(aws sts get-caller-identity --output text --query 'Account')

define a role trust policy that opens the role to users in your account (limited by IAM policy)

POLICY=$(echo -n '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::'; echo -n "$ACCOUNT_ID"; echo -n ':root"},"Action":"sts:AssumeRole","Condition":{}}]}')

create a role named KubernetesAdmin (will print the new role's ARN)

aws iam create-role
--role-name KubernetesAdmin
--description "Kubernetes administrator role (for AWS IAM Authenticator for Kubernetes)."
--assume-role-policy-document "$POLICY"
--output text
--query 'Role.Arn'

Puoi anche saltare questo passaggio e usare:
 - Un ruolo esistente (come un ruolo di accesso cross-account).
 - Un utente IAM (vedi `mapUsers` sotto).
 - Un'istanza EC2 o un ruolo federato (vedi `mapRoles` sotto).

### 2. Esegui il server
Il server è pensato per essere eseguito su ciascuno dei tuoi nodi master come DaemonSet con networking host, così da poter esporre una porta localhost.

Per una ConfigMap e una configurazione DaemonSet di esempio, vedi [`deploy/example.yaml`](https://github.com/kubernetes-sigs/aws-iam-authenticator/blob/master/deploy/example.yaml).
Prima di applicarla, aggiorna questi valori per il tuo cluster:
 - Sostituisci gli ARN IAM segnaposto (`arn:aws:iam::000000000000:...`) in `config.yaml`.
 - Imposta `clusterID` su un valore univoco per il tuo cluster.
 - Verifica che le regole di pianificazione del DaemonSet corrispondano alle etichette/taint dei tuoi nodi del control plane.

Poi distribuiscilo:```sh
kubectl apply -f deploy/example.yaml
kubectl -n kube-system rollout status daemonset/aws-iam-authenticator
kubectl -n kube-system get pods -l k8s-app=aws-iam-authenticator

Una volta che il pod è in esecuzione su un nodo del piano di controllo, aws-iam-authenticator server creerà il kubeconfig del webhook sull'host nel percorso /etc/kubernetes/aws-iam-authenticator/kubeconfig.yaml (o nel percorso configurato tramite --generate-kubeconfig).

(Facoltativo) Pre-generare un certificato, una chiave e il kubeconfig

Se stai creando un programma di installazione automatizzato, puoi anche pre-generare facilmente i file del certificato, della chiave e del kubeconfig del webhook usando aws-iam-authenticator init. Questo comando genererà i file e li collocherà nelle directory di output configurate.

Puoi eseguirlo su ogni nodo master prima di avviare il server API. Potresti anche generarli prima del provisioning dei nodi master e installarli nei percorsi host appropriati.

Se non pre-generi i file, aws-iam-authenticator server li genererà su richiesta. Questa soluzione funziona, ma richiede di riavviare il server API di Kubernetes dopo l'installazione.

3. Configura il tuo server API per comunicare con il server

L'API di Kubernetes si integra con AWS IAM Authenticator for Kubernetes utilizzando un webhook di autenticazione token. Quando esegui aws-iam-authenticator server, questo genererà un file di configurazione del webhook e lo salverà sul filesystem dell'host. Dovrai aggiungere un unico flag aggiuntivo alla configurazione del tuo server API:``` --authentication-token-webhook-config-file=/etc/kubernetes/aws-iam-authenticator/kubeconfig.yaml

Su molti cluster, il server API viene eseguito come pod statico.
Puoi aggiungere il flag a `/etc/kubernetes/manifests/kube-apiserver.yaml`.
Assicurati che la directory host `/etc/kubernetes/aws-iam-authenticator/` sia montata nel pod del server API.
Potrebbe anche essere necessario riavviare il demone kubelet sul nodo master per applicare la definizione aggiornata del pod statico:```
systemctl restart kubelet.service

4. Crea mappature ruolo/utente IAM verso utenti/gruppi Kubernetes

Il comportamento predefinito del server è quello di recuperare le mappature esclusivamente dai campi mapUsers e mapRoles del proprio file di configurazione. Vedi Formato Completo di Configurazione qui sotto per i dettagli.

Utilizzando il flag --backend-mode, puoi configurare il server per recuperare le mappature da due backend aggiuntivi: una ConfigMap in stile EKS (--backend-mode=EKSConfigMap) o risorse personalizzate IAMIdentityMapping (--backend-mode=CRD). Il backend predefinito, ovvero il file di configurazione del server montato dal pod del server, corrisponde a --backend-mode=MountedFile.

Scarica lo strumento