Autenticazione in GKE su AWS con identità esterne

La federazione delle identità della forza lavoro concede alle identità non Google l'accesso ai Google Cloud servizi. Nel contesto di GKE su AWS, significa che puoi utilizzare identità esterne preesistenti per creare o accedere a un cluster GKE senza fare affidamento sulle credenziali di Google.

I vantaggi dell'utilizzo della federazione delle identità per la forza lavoro sono i seguenti:

  • Non è più necessario creare account duplicati su piattaforme o fornitori diversi.
  • Imposti le autorizzazioni una sola volta, evitando la necessità di configurazioni su più piattaforme.
  • Semplifichi l'accesso degli utenti, perché sono necessari meno accessi e password.

Prima di iniziare

Prima di poter consentire a utenti o gruppi esterni di accedere ai cluster GKE, devi eseguire i seguenti passaggi:

  1. Affinché gli utenti o i gruppi esterni possano utilizzare l'API GKE on AWS, configura la federazione delle identità per la forza lavoro:

  2. Assegna agli utenti o ai gruppi esterni il ruolo gkemulticloud.viewer in modo che possano accedere ai cluster. Assegna il ruolo container.clusterViewer per visualizzare i cluster nella console Google Cloud .

    Tieni presente che i ruoli sono raccolte di autorizzazioni. Quando assegni un ruolo a un'entità (utente, gruppo o account di servizio), le fornisci tutte le autorizzazioni incluse nel ruolo.

    Utenti

    Per i singoli utenti, devi assegnare il ruolo gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • WORKFORCE_POOL_ID: l'ID che identifica in modo univoco il tuo pool di identità della forza lavoro in Google Cloud. Quando formatti l'ID, assicurati di seguire le linee guida consigliate riportate nella documentazione IAM in Parametri di query.
    • SUBJECT_VALUE: l'ID che identifica in modo univoco un utente esterno. Ad esempio, l'ID può essere un indirizzo email come alex@cymbalgroup.com.

    Gruppi

    Per i gruppi, devi assegnare il ruolo gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • WORKFORCE_POOL_ID: l'ID che identifica in modo univoco il tuo pool di identità della forza lavoro in Google Cloud. Quando formatti l'ID, assicurati di seguire le linee guida consigliate riportate nella documentazione IAM nella sezione Parametri di query.
    • GROUP_ID: un ID che identifica in modo univoco un gruppo esterno.
  3. (Facoltativo) Assegna ai tuoi utenti o gruppi esterni i ruoli IAM (Identity and Access Management) appropriati. Questo passaggio è necessario solo se vuoi concedere a utenti o gruppi la possibilità di creare o aggiornare cluster. Non è obbligatorio per accedere a un cluster.

    Utenti

    Per i singoli utenti, devi assegnare il ruolo gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • WORKFORCE_POOL_ID: l'ID che identifica in modo univoco il tuo pool di identità della forza lavoro in Google Cloud. Quando formatti l'ID, assicurati di seguire le linee guida consigliate riportate nella documentazione IAM in Parametri di query.
    • SUBJECT_VALUE: l'ID che identifica in modo univoco un utente esterno. Ad esempio, l'ID può essere un indirizzo email come alex@cymbalgroup.com.

    Gruppi

    Per i gruppi, devi assegnare il ruolo gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • WORKFORCE_POOL_ID: l'ID che identifica in modo univoco il tuo pool di identità della forza lavoro in Google Cloud. Quando formatti l'ID, assicurati di seguire le linee guida consigliate riportate nella documentazione IAM nella sezione Parametri di query.
    • GROUP_ID: un ID che identifica in modo univoco un gruppo esterno.

Per saperne di più sui ruoli e sulle autorizzazioni API richiesti per GKE su AWS, consulta Ruoli e autorizzazioni API.

Concedi l'accesso esterno ai cluster GKE

Esistono due metodi per configurare la federazione delle identità della forza lavoro in modo che gli utenti o i gruppi esterni possano accedere ai tuoi cluster GKE.

Il metodo 1 richiede di definire un file RBAC e di applicarlo al cluster. Questo metodo offre un controllo accurato delle autorizzazioni, ad esempio consente agli utenti di accedere alle risorse in sola lettura senza concedere loro un accesso più ampio.

Il metodo 2 richiede di specificare l'accesso per le identità esterne durante la creazione o l'aggiornamento di un cluster. Questo metodo concede privilegi amministrativi completi agli utenti o ai gruppi specificati.

Scegli il metodo più adatto al livello di controllo dell'accesso dell'accesso che preferisci: metodo 1 per autorizzazioni più granulari o metodo 2 per concedere diritti amministrativi completi del cluster.

Metodo 1: utilizza un file RBAC

Il primo metodo per concedere l'accesso esterno ai cluster GKE prevede l'uso di un file RBAC. Segui questi passaggi:

  1. Definisci un file YAML RBAC che includa i soggetti (utenti o gruppi) e le autorizzazioni che vuoi concedere all'interno del cluster GKE. Di seguito sono riportati alcuni esempi di configurazioni YAML RBAC per singoli utenti e gruppi:

    Utenti

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-user
    subjects:
    - kind: User
      name: principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    Sostituisci quanto segue:

    • WORKFORCE_POOL_ID: l'ID che identifica in modo univoco il tuo pool di identità della forza lavoro in Google Cloud. Quando formatti l'ID, assicurati di seguire le linee guida consigliate riportate nella documentazione IAM nella sezione Parametri di query.
    • SUBJECT_VALUE: l'ID che identifica in modo univoco un utente esterno. Ad esempio, l'ID può essere un indirizzo email come alex@cymbalgroup.com.

    Gruppi

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-group
    subjects:
    - kind: Group
      name: principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    Sostituisci quanto segue:

    • WORKFORCE_POOL_ID: l'ID che identifica in modo univoco il tuo pool di identità della forza lavoro in Google Cloud. Quando formatti l'ID, assicurati di seguire le linee guida consigliate riportate nella documentazione IAM nella sezione Parametri di query.
    • GROUP_ID: un ID che identifica in modo univoco un gruppo esterno.
  2. Identifica il cluster GKE che vuoi configurare e impostalo come contesto attivo utilizzando il seguente comando:

      kubectl config use-context CLUSTER_CONTEXT
    

    Sostituisci CLUSTER_CONTEXT con il nome del contesto appropriato per il tuo cluster.

  3. Con il cluster GKE desiderato impostato come contesto attivo, applica la configurazione RBAC al cluster utilizzando il seguente comando:

    kubectl apply -f RBAC_PATH
    

    Sostituisci RBAC_PATH con il percorso del file RBAC che hai creato o modificato.

    Quando esegui questo comando, gli utenti o i gruppi specificati nella configurazione RBAC ora dispongono delle autorizzazioni per accedere e gestire il cluster GKE di destinazione, come definito nelle regole RBAC.

  4. Se devi apportare modifiche successive alle autorizzazioni, modifica il file RBAC e riapplicalo al cluster ripetendo i passaggi precedenti.

Metodo 2: concedi l'accesso alle identità esterne durante la creazione o l'aggiornamento del cluster

Il metodo 2 concede l'accesso alle identità esterne durante il processo di creazione o di aggiornamento del cluster.

Per creare un cluster, segui i passaggi descritti in Creare un cluster. Per aggiornare un cluster, segui la procedura descritta in Aggiornare un cluster.

Quando esegui il comando gcloud per creare o aggiornare un cluster, specifica i parametri admin-users e/o admin-groups come segue:

gcloud container aws clusters [create|update] CLUSTER_NAME \
    --location=LOCATION
    --admin-users=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE \
    --admin-groups=principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del tuo cluster.
  • LOCATION: la Google Cloud regione in cui è gestito il tuo cluster.
  • WORKFORCE_POOL_ID: l'ID che identifica in modo univoco il tuo pool di identità della forza lavoro in Google Cloud. Quando formatti l'ID, assicurati di seguire le linee guida consigliate riportate nella documentazione IAM nella sezione Parametri di query.
  • SUBJECT_VALUE: l'ID che identifica in modo univoco un utente esterno. Ad esempio, l'ID può essere un indirizzo email come alex@cymbalgroup.com.
  • GROUP_ID: un ID che identifica in modo univoco un gruppo esterno.

Riepilogo della concessione dell'accesso ai cluster GKE agli ID esterni

Dopo aver eseguito il metodo 1 o il metodo 2, gli utenti o i gruppi esterni specificati possono utilizzare la console Google Cloud per connettersi e visualizzare i dettagli del cluster. In alternativa, possono utilizzare kubectl con l'identità dall'interfaccia a riga di comando gcloud per gestire, manipolare e comunicare con il cluster.

Per eseguire comandi kubectl sui cluster GKE, consulta come generare una voce kubeconfig.