Configura la gestione dell'autenticazione a livello di parco risorse

Questo documento mostra agli amministratori dei cluster come configurare più cluster per l'autenticazione da provider di identità di terze parti utilizzando i parchi risorse. Google Cloud gestisce la configurazione dei cluster in un parco risorse, il che comporta un processo di configurazione più rapido e meno complesso rispetto alla configurazione dei singoli cluster. Per ulteriori informazioni sulla procedura di autenticazione del provider di terze parti, vedi Informazioni sull'autenticazione tramite identità di terze parti.

Prima di iniziare

  1. Installa e configura Google Cloud CLI:

    1. Install the Google Cloud CLI.

    2. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

    3. Per inizializzare gcloud CLI, esegui questo comando:

      gcloud init
    4. Dopo aver inizializzato gcloud CLI, aggiornala e installa i componenti richiesti:

      gcloud components update
      gcloud components install kubectl
    5. Nella gcloud CLI, seleziona il progetto host del parco risorse:
      gcloud config set project FLEET_HOST_PROJECT_ID
      Sostituisci FLEET_HOST_PROJECT_ID con l'ID progetto del tuo progetto host del parco veicoli.

  2. Abilita le API richieste:

    1. Nella console Google Cloud , vai alla pagina di selezione del progetto:

      Vai al selettore di progetti

    2. Seleziona il progetto host del parco risorse.

    3. Enable the GKE Hub and Kubernetes Engine APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

  3. Assicurati che l'amministratore della piattaforma ti abbia fornito tutte le informazioni sul fornitore necessarie per il protocollo selezionato. Per saperne di più, consulta i seguenti documenti:

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare i cluster a livello di parco risorse, chiedi all'amministratore di concederti il ruolo IAM Fleet Admin (roles/gkehub/admin) sul progetto host del parco risorse. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Abilita la funzionalità del servizio di identità a livello di parco risorse

La funzionalità del servizio di identità a livello di parco risorse utilizza un controller per gestire la configurazione in ciascuno dei cluster del parco risorse. Devi attivare la funzionalità a livello di parco risorse solo nel progetto host del parco risorse.

Per attivare la funzionalità a livello di flotta, seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud , vai alla pagina GKE Identity Service.

    Vai a Gestore funzionalità

  2. Fai clic su Abilita Identity Service.

gcloud

Attiva la funzionalità del servizio di identità a livello di parco risorse:

gcloud container fleet identity-service enable

Configura i cluster

Per configurare i cluster, devi specificare le seguenti informazioni:

  • Informazioni sul tuo provider di identità, ad esempio un ID client e un secret.
  • Informazioni sui token web JSON (JWT) utilizzati dal tuo identity provider per l'autenticazione.
  • Eventuali ambiti o parametri aggiuntivi univoci per il tuo provider di identità.

Per saperne di più sulle informazioni che devi richiedere all'amministratore della piattaforma o a chiunque gestisca l'identità nella tua organizzazione, consulta i seguenti documenti:

Se hai configurazioni a livello di cluster esistenti per i provider OIDC, l'applicazione di una configurazione a livello di parco risorse al cluster sovrascrive tutte le specifiche di autenticazione esistenti. Inoltre, se hai configurazioni a livello di cluster esistenti per provider non supportati per la configurazione a livello di parco risorse, questa configurazione non andrà a buon fine. Per applicare la configurazione a livello di parco risorse, devi rimuovere la configurazione del provider esistente.

Per configurare i cluster:

Console

  1. Seleziona i cluster da configurare:

    1. Nella console Google Cloud , vai alla pagina GKE Identity Service.

      Vai a Gestore funzionalità

    2. Seleziona una o più caselle di controllo per i cluster che vuoi configurare. Puoi scegliere singoli cluster o specificare che vuoi che tutti i cluster siano configurati con la stessa configurazione dell'identità. Se hai configurato i valori predefiniti a livello di parco risorse, la configurazione viene riconciliata con il valore predefinito.

    3. Fai clic su Aggiorna configurazione. Viene visualizzato il riquadro Modifica configurazione dei cluster di Identity Service.

    4. Nella sezione Identity Providers (Provider di identità), scegli come vuoi configurare i cluster. Puoi aggiornare una configurazione esistente, copiarne una da un altro cluster o crearne una nuova. Per creare una nuova configurazione, fai clic su Aggiungi un provider di identità. Viene visualizzata la sezione Nuovo provider di identità.

  2. Nella sezione Nuovo provider di identità, imposta i dettagli del provider:

    OIDC

    1. Seleziona Nuovo Open ID Connect per creare una nuova configurazione OIDC.
    2. Specifica il nome che vuoi utilizzare per identificare questa configurazione nel campo Nome provider, in genere il nome del provider di identità. Questo nome deve iniziare con una lettera seguita da un massimo di 39 lettere minuscole, numeri o trattini e non può terminare con un trattino. Non puoi modificare questo nome dopo aver creato una configurazione.
    3. Specifica l'ID client del provider di identità nel campo ID client.
    4. Specifica il client secret che deve essere condiviso tra l'applicazione client e il provider di identità nel campo Client Secret.
    5. Specifica l'URI in cui vengono effettuate le richieste di autorizzazione al tuo provider di identità nel campo URL emittente.
    6. Fai clic su Avanti per impostare gli attributi OIDC.

    Azure AD

    1. Seleziona Nuovo Azure Active Directory per creare una nuova configurazione di Azure AD.
    2. Specifica il nome che vuoi utilizzare per identificare questa configurazione nel campo Nome provider, in genere il nome del provider di identità. Questo nome deve iniziare con una lettera seguita da un massimo di 39 lettere minuscole, numeri o trattini e non può terminare con un trattino. Non puoi modificare questo nome dopo aver creato una configurazione.
    3. Specifica l'ID client del provider di identità nel campo ID client.
    4. Specifica il client secret che deve essere condiviso tra l'applicazione client e il provider di identità nel campo Client Secret.
    5. Specifica il tenant che è l'account Azure AD da autenticare in Tenant.
    6. Fai clic su Avanti per impostare gli attributi di Azure AD.

    LDAP

    1. Seleziona LDAP per creare una nuova configurazione LDAP.
    2. Specifica il nome che vuoi utilizzare per identificare questa configurazione nel campo Nome provider, in genere il nome del provider di identità. Questo nome deve iniziare con una lettera seguita da un massimo di 39 lettere minuscole, numeri o trattini e non può terminare con un trattino. Non puoi modificare questo nome dopo aver creato una configurazione.
    3. Fai clic su Avanti.
    4. Specifica il nome host (obbligatorio), il tipo di connessione LDAP e il certificato CA con codifica Base64 del server LDAP.
    5. Fai clic su Avanti per configurare il server.
    6. Specifica il nome distinto, il filtro, l'attributo di accesso e l'attributo identificatore dell'utente.
    7. Fai clic su Avanti per impostare i dettagli dell'utente.
    8. Se scegli di utilizzare i gruppi, specifica il nome distinto, il filtro e l'attributo identificatore del gruppo.
    9. Fai clic su Avanti per impostare i dettagli del gruppo.
    10. Specifica il nome utente e la password dell'account di servizio.
    11. Fai clic su Fine per impostare il nome dell'account di servizio.
  3. Fai clic su Avanti. Si apre la sezione Imposta attributi.

  4. Imposta gli attributi per il tuo provider di identità. Per visualizzare gli attributi per OIDC o Azure AD, seleziona una delle seguenti opzioni:

    OIDC

    • URI di reindirizzamento kubectl: l'URL di reindirizzamento e la porta utilizzati da gcloud CLI e specificati dall'amministratore della piattaforma al momento della registrazione, in genere nel formato http://localhost:PORT/callback.
    • Autorità di certificazione (facoltativo): se fornita dall'amministratore della piattaforma, una stringa di certificato con codifica PEM per il provider di identità.
    • Attestazione gruppo (facoltativo): l'attestazione JWT (nome del campo) che il tuo provider utilizza per restituire i gruppi di sicurezza di un account.
    • Prefisso gruppo (facoltativo): il prefisso da anteporre ai nomi dei gruppi di sicurezza per evitare conflitti con i nomi esistenti nelle regole di controllo dell'accesso se hai configurazioni per più provider di identità (in genere il nome del provider).
    • Proxy (facoltativo): indirizzo del server proxy da utilizzare per connettersi al provider di identità, se applicabile. Potresti dover impostare questa opzione se, ad esempio, il tuo cluster si trova in una rete privata e deve connettersi a un provider di identità pubblico. Ad esempio: http://user:password@10.10.10.10:8888.
    • Ambiti (facoltativo): eventuali ambiti aggiuntivi richiesti dal tuo provider di identità. Microsoft Azure e Okta richiedono l'ambito offline_access. Fai clic su Aggiungi ambito per aggiungere altri ambiti, se necessario.
    • (Facoltativo) Attestazione utente: l'attestazione JWT (nome del campo) che il tuo provider utilizza per identificare un account. Se non specifichi un valore qui, il cluster utilizza "sub", ovvero l'attestazione dell'ID utente utilizzata da molti provider. Puoi scegliere altre attestazioni, ad esempio "email" o "nome", a seconda del provider OpenID. Alle attestazioni diverse da "email" viene aggiunto come prefisso l'URL dell'emittente per evitare conflitti di denominazione.
    • Prefisso utente (facoltativo): il prefisso che vuoi anteporre alle attestazioni utente per evitare conflitti con i nomi esistenti, se non vuoi utilizzare il prefisso predefinito.
    • Parametri aggiuntivi (facoltativo): eventuali parametri aggiuntivi necessari per la configurazione, specificati come chiave e valore del parametro. Fai clic su Aggiungi parametro per aggiungere altri parametri, se necessario.
    • Attiva token di accesso (facoltativo): se attivato, consente il supporto dei gruppi per i provider OIDC come Okta.
    • Deploy Google Cloud console proxy (facoltativo): se abilitato, viene implementato un proxy che consente alla console Google Cloud di connettersi a un provider di identità on-premise non accessibile pubblicamente su internet.

    Azure AD

    • URI di reindirizzamento kubectl: l'URL di reindirizzamento e la porta utilizzati da gcloud CLI e specificati dall'amministratore della piattaforma al momento della registrazione, in genere nel formato http://localhost:PORT/callback.
    • (Facoltativo) Attestazione utente: l'attestazione JWT (nome del campo) che il tuo provider utilizza per identificare un account. Se non specifichi un valore qui, il cluster utilizza un valore nell'ordine "email", "preferred_username" o "sub" per recuperare i dettagli dell'utente.
    • Proxy (facoltativo): indirizzo del server proxy da utilizzare per connettersi al provider di identità, se applicabile. Potresti dover impostare questa opzione se, ad esempio, il tuo cluster si trova in una rete privata e deve connettersi a un provider di identità pubblico. Ad esempio: http://user:password@10.10.10.10:8888.
  5. Fai clic su Fine.

  6. (Facoltativo) Per aggiungere altri provider alla configurazione, fai clic su Aggiungi un provider di identità e ripeti i passaggi precedenti.

  7. Fai clic su Aggiorna configurazione.

In questo modo vengono installati i componenti necessari, se necessario, e viene applicata la configurazione del client sui cluster selezionati.

gcloud

Per utilizzare gcloud CLI per configurare il parco risorse, crea una risorsa personalizzata Kubernetes denominata ClientConfig con campi per tutte le informazioni necessarie al cluster per interagire con il provider di identità. Per creare e utilizzare un ClientConfig, segui questi passaggi:

  1. Crea una specifica ClientConfig in un file denominato auth-config.yaml. Per visualizzare configurazioni di esempio per OIDC, SAML o LDAP, seleziona una delle seguenti opzioni. Per altre configurazioni del provider di identità, vedi Configurazioni specifiche del provider.

    OIDC

    Il seguente esempio di ClientConfig mostra sia una configurazione oidc sia una configurazione azuread. Per saperne di più su quando utilizzare oidc o azuread, consulta Configurazioni specifiche del provider.

    apiVersion: authentication.gke.io/v2alpha1
    kind: ClientConfig
    metadata:
      name: default
      namespace: kube-public
    spec:
      authentication:
      - name: NAME
        proxy: PROXY_URL
        oidc:
          certificateAuthorityData: CERTIFICATE_STRING
          clientID: CLIENT_ID
          clientSecret: CLIENT_SECRET
          deployCloudConsoleProxy: PROXY_BOOLEAN
          extraParams: EXTRA_PARAMS
          groupsClaim: GROUPS_CLAIM
          groupPrefix: GROUP_PREFIX
          issuerURI: ISSUER_URI
          kubectlRedirectURI: http://localhost:PORT/callback
          scopes: SCOPES
          userClaim: USER_CLAIM
          userPrefix: USER_PREFIX
      - name: azure
        azureAD:
          clientID: CLIENT_ID
          clientSecret: CLIENT_SECRET
          tenant: TENANT_UUID
          kubectlRedirectURI: http://localhost:PORT/callback
          groupFormat: GROUP_FORMAT
          userClaim: USER_CLAIM
    

    Per maggiori informazioni sui campi dell'oggetto oidc, vedi Campi OIDC ClientConfig.

    SAML

    Il seguente esempio di ClientConfig mostra una configurazione saml:

        apiVersion: authentication.gke.io/v2alpha1
        kind: ClientConfig
        metadata:
          name: default
          namespace: kube-public
        spec:
          authentication:
          - name: NAME
            saml:
              idpEntityID: ENTITY_ID
              idpSingleSignOnURI: SIGN_ON_URI
              idpCertificateDataList: IDP_CA_CERT
              userAttribute: USER_ATTRIBUTE
              groupsAttribute: GROUPS_ATTRIBUTE
              userPrefix: USER_PREFIX
              groupPrefix: GROUP_PREFIX
              attributeMapping:
                ATTRIBUTE_KEY_1 : ATTRIBUTE_CEL_EXPRESSION_1
                ATTRIBUTE_KEY_2 : ATTRIBUTE_CEL_EXPRESSION_2
            certificateAuthorityData: CERTIFICATE_STRING
            preferredAuthentication: PREFERRED_AUTHENTICATION
            server: <>
    

    Per saperne di più su questi campi, vedi Campi SAML ClientConfig.

    LDAP

    Il seguente esempio di ClientConfig mostra una configurazione ldap:

    apiVersion: authentication.gke.io/v2alpha1
    kind: ClientConfig
    metadata:
      name: default
      namespace: kube-public
    spec:
      authentication:
      - name: ldap
        ldap:
          server:
            host: HOST_NAME
            connectionType: CONNECTION_TYPE
            certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
          user:
            baseDn: BASE_DN
            loginAttribute: LOGIN_ATTRIBUTE
            filter: FILTER
            identifierAttribute: IDENTIFIER_ATTRIBUTE
          group:
            baseDn: BASE_DN
            filter: FILTER
            identifierAttribute: IDENTIFIER_ATTRIBUTE
          serviceAccount:
            simpleBindCredentials:
              dn: DISTINGUISHED_NAME
              password: PASSWORD
    

    Per saperne di più su questi campi, consulta Campi LDAP ClientConfig.

    Puoi aggiungere più configurazioni del provider di identità allo stesso ClientConfig. Il cluster tenta di autenticarsi con ogni configurazione nell'ordine in cui sono definite e si arresta dopo la prima autenticazione riuscita.

  2. Applica ClientConfig a un cluster:

    gcloud container fleet identity-service apply \
        --membership=CLUSTER_NAME \
        --config=auth-config.yaml
    

    Sostituisci CLUSTER_NAME con il nome univoco del tuo cluster all'interno del parco risorse.

Il cluster installa tutti i componenti necessari e utilizza ClientConfig che hai creato. Il controller a livello di parco risorse gestisce la configurazione del cluster. Eventuali modifiche locali alla configurazione del cluster vengono riconciliate dal controller con la configurazione a livello di parco risorse.

Per alcune versioni del cluster, l'applicazione della configurazione a livello di parco risorse aggiunge per impostazione predefinita anche una configurazione authentication aggiuntiva ai cluster. In questo modo, il cluster può recuperare le informazioni di Google Gruppi per gli account utente che accedono con il proprio ID Google. Questa configurazione è applicabile ai cluster su Google Distributed Cloud (sia VMware che bare metal). Per saperne di più sulla funzionalità Google Gruppi, consulta Configurare il gateway di connessione con Google Gruppi.

Se non vuoi più che il controller a livello di parco risorse gestisca la tua configurazione, ad esempio se vuoi utilizzare una o più opzioni di autenticazione diverse, puoi disattivare questa funzionalità seguendo le istruzioni riportate in Disattivazione della gestione delle identità a livello di parco risorse.

Configurazioni specifiche del fornitore

Questa sezione fornisce indicazioni sulla configurazione per i provider OIDC (come Azure AD e Okta), incluso un esempio di configurazione che puoi copiare e modificare con i tuoi dettagli.

Azure AD

Questa è la configurazione predefinita per impostare l'autenticazione con Azure AD. L'utilizzo di questa configurazione consente al cluster di ottenere informazioni su utenti e gruppi da Azure AD e di configurare il controllo dell'accesso basato sui ruoli (RBAC) di Kubernetes in base ai gruppi. Tuttavia, l'utilizzo di questa configurazione ti consente di recuperare circa 200 gruppi per utente.

Se devi recuperare più di 200 gruppi per utente, consulta le istruzioni per Azure AD (avanzato).

...
spec:
  authentication:
  - name: oidc-azuread
    oidc:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc
      extraParams: prompt=consent, access_type=offline
      issuerURI: https://login.microsoftonline.com/TENANT_ID/v2.0
      kubectlRedirectURI: http://localhost:PORT/callback
      scopes: openid,email,offline_access
      userClaim: email

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

Azure AD (avanzato)

Questa configurazione facoltativa per Azure AD consente al cluster di recuperare le informazioni su utenti e gruppi senza limiti al numero di gruppi per utente, utilizzando l'API Microsoft Graph. Per informazioni sulle piattaforme che supportano questa configurazione, vedi Informazioni sulla configurazione del provider di identità.

Se devi recuperare meno di 200 gruppi per utente, ti consigliamo di utilizzare la configurazione predefinita con un ancoraggio oidc in ClientConfig. Per ulteriori informazioni, consulta le istruzioni per Azure AD.

Tutti i campi nella configurazione di esempio sono obbligatori.

...
spec:
  authentication:
  - name: azure
    azureAD:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      tenant: TENANT_UUID
      kubectlRedirectURI: http://localhost:PORT/callback
      groupFormat: GROUP_FORMAT
      userClaim: USER_CLAIM

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

Sostituisci GROUP_FORMAT con il formato in cui vuoi recuperare le informazioni sul gruppo. Questo campo può assumere valori corrispondenti a ID o NAME dei gruppi di utenti. Questa impostazione è disponibile solo per i cluster nei deployment di Google Distributed Cloud (on-premise).

Okta

Di seguito viene illustrato come configurare l'autenticazione utilizzando sia utenti che gruppi con Okta come provider di identità. Questa configurazione consente al cluster di recuperare le rivendicazioni di utenti e gruppi utilizzando un token di accesso e l'endpoint userinfo di Okta.

...
spec:
  authentication:
  - name: okta
    oidc:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc
      enableAccessToken: true
      extraParams: prompt=consent
      groupsClaim: groups
      issuerURI: https://OKTA_ISSUER_URI/
      kubectlRedirectURI: http://localhost:PORT/callback
      scopes: offline_access,email,profile,groups
      userClaim: email

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

Configura le impostazioni predefinite a livello di parco risorse

Puoi specificare una configurazione predefinita a livello di parco risorse per l'autenticazione. Con questa configurazione, ogni nuovo cluster che registri nel parco risorse utilizza automaticamente la configurazione di autenticazione specificata.

I cluster membri del parco risorse esistenti non vengono aggiornati automaticamente quando specifichi una configurazione predefinita a livello di parco risorse. Se vuoi, puoi applicare la configurazione predefinita a questi cluster. Per saperne di più sulla gestione della configurazione a livello di parco risorse, consulta Gestire le funzionalità a livello di parco risorse.

Dopo aver impostato un valore predefinito a livello di parco risorse, le modifiche locali alla configurazione dell'autenticazione dei singoli cluster vengono sovrascritte quando il controller del parco risorse riconcilia il cluster con la configurazione predefinita.

Per configurare una configurazione predefinita a livello di parco risorse:

  1. Crea un ClientConfig in un file denominato fleet-default.yaml. Per ulteriori informazioni su come creare il file, consulta i passaggi della gcloud CLI nella sezione Configurare i cluster.
  2. Per applicare la configurazione predefinita a livello di flotta, esegui uno dei seguenti comandi:

    • Se la funzionalità del servizio di identità a livello di parco risorse non è abilitata, abilita la funzionalità e specifica la configurazione predefinita a livello di parco risorse:

      gcloud container fleet identity-service enable --fleet-default-member-config=fleet-default.yaml
    • Se la funzionalità del servizio di identità a livello di parco risorse è abilitata, applica la nuova configurazione predefinita a livello di parco risorse:

      gcloud container fleet identity-service apply --fleet-default-member-config=default-config.yaml

    I nuovi cluster che registri nel parco risorse utilizzano questa configurazione per impostazione predefinita. I cluster membri del parco risorse esistenti non ereditano automaticamente la nuova configurazione predefinita.

  3. Per applicare la configurazione predefinita a un cluster membro del parco esistente, esegui il seguente comando:

    gcloud container fleet identity-service apply --origin=fleet --membership=CLUSTER_NAME

Rimuovi la configurazione predefinita a livello di parco risorse

Per rimuovere la configurazione predefinita, esegui questo comando:

gcloud container fleet identity-service delete --fleet-default-member-config

I nuovi cluster che registri nel parco risorse non utilizzano automaticamente una configurazione di autenticazione.

Verificare la configurazione del servizio di identità

Dopo aver completato la configurazione a livello di parco risorse, puoi verificare se i cluster del tuo parco risorse sono stati configurati correttamente con la configurazione del servizio di identità che hai specificato.

Console

  1. Nella console Google Cloud , vai alla pagina Feature Manager.

    Vai a Gestore funzionalità

    Tutte le funzionalità abilitate sono elencate come Abilitate nel relativo pannello.

  2. Fai clic su DETTAGLI nel riquadro Servizio di identità. Un riquadro dei dettagli mostra lo stato dei cluster registrati.

gcloud

Esegui questo comando:

gcloud container fleet identity-service describe

Passaggi successivi

Dopo aver configurato i cluster, continua a configurare l'accesso degli utenti.