Configurazione di identità e sicurezza con OIDC

Questa pagina è dedicata agli operatori dell'infrastruttura.

In questa pagina viene spiegato come abilitare l'autenticazione in Anthos Management Center tramite il tuo provider OpenID Connect (provider OIDC). OIDC è un livello di autenticazione, basato su OAuth 2.0, che specifica un'API RESTful HTTP e utilizza JSON come formato dati.

OIDC ti consente di utilizzare il tuo provider di identità esistente per gestire l'autenticazione di utenti e gruppi. Con OIDC puoi gestire l'accesso a un cluster utilizzando le procedure standard nella tua organizzazione per creare, abilitare e disabilitare gli account.

Prima di iniziare

Prima di configurare l'OIDC, devi disporre di:

  1. Il nome di dominio utilizzato per accedere al Centro di gestione, fornito dall'operatore dell'infrastruttura, ad esempio anthos.example.com.
  2. Un provider OIDC come Microsoft Active Directory Federation Services (ADFS), SSO Google o Keycloak. Sia il cluster che il browser devono essere in grado di connettersi al provider OIDC. Il provider OIDC non deve connettersi di nuovo al cluster direttamente. Se non hai un provider OIDC, consulta la sezione Autenticarsi con Keycloak per installarne uno. Keycloak è solo a scopo dimostrativo e non è consigliato per un ambiente di produzione.

Crea profili di identità

I profili di identità contengono la configurazione necessaria per utilizzare un provider di identità per l'autenticazione. Per creare un profilo di identità:

  1. Nella console di gestione, apri il menu Identità e accesso.

  2. Nella scheda Identity, fai clic su Set Anthos Identity Service (OIDC).

  3. Assegna un nome semplice al profilo nel campo Nome del profilo. Si tratta del nome a cui fa riferimento il profilo.

  4. Inserisci l'URL del provider OIDC, il Client ID e il client secret del tuo provider OIDC.

  5. Imposta il campo Rivendicazione nome utente. La rivendicazione con nome utente è la rivendicazione nel token OIDC in cui è presente il nome utente. Ad esempio, se la dichiarazione del nome utente è email, gli utenti sono identificati dal campo relativo all'utente nel token OIDC.

    Quando imposti questa rivendicazione, assicurati che la rivendicazione esista negli ambiti richiesti.

  6. Imposta il campo Prefisso nome utente. Il prefisso del nome utente viene utilizzato per distinguere gli utenti da provider di identità diversi. Quando si assegnano le autorizzazioni RBAC agli utenti, è necessario includere anche il prefisso utente.

    Ad esempio, se la rivendicazione del nome utente è email e il prefisso utente è prefix-, gli utenti vengono identificati come prefix-sally@example.com. L'utente è sally@example.com e il prefisso prefix- ha come prefisso l'utente per distinguere i diversi provider di identità.

  7. Imposta il campo Rivendicazione di gruppo. In Anthos, in esecuzione in modalità disconnessa, il valore predefinito è groups. Per ulteriori informazioni sui gruppi di associazioni ai ruoli, consulta la sezione Associazioni di ruoli.

  8. Imposta il campo Prefisso del gruppo. Il prefisso del gruppo viene utilizzato per distinguere tra gruppi di provider di identità diversi. Quando assegni le autorizzazioni RBAC ai gruppi, devi includere anche il prefisso del gruppo.

    Ad esempio, se la rivendicazione di gruppo è groups e il prefisso del gruppo è groupprefix-, i gruppi saranno identificati come groupprefix-group. Il gruppo è group ed il prefisso groupprefix- è preceduto dal gruppo. Ti consigliamo di inserire un separatore alla fine del prefisso come descritto nell'impostazione del prefisso del nome utente nel passaggio 6.

  9. (Facoltativo) Imposta il campo Ambiti se gli ambiti non sono openid email profile.

    Gli ambiti sono gli identificatori utilizzati per specificare i privilegi di accesso da richiedere nel token ID:

    • Il campo openid è obbligatorio per OIDC.
    • profile include le rivendicazioni profile predefinite dell'utente.
    • email include generalmente le rivendicazioni email e email_verified.
  10. Se il provider OIDC (come Google SSO) richiede parametri aggiuntivi, imposta il campo Parametri aggiuntivi.

    Ad esempio, il campo Parametri aggiuntivi può essere impostato su prompt=consent,access_type=offline per visualizzare ogni volta una schermata di consenso prima di richiedere l'autorizzazione degli ambiti di accesso.

  11. Se la connessione HTTPS alla pagina /.well-known/openid-configuration o alla pagina JWKS del tuo provider OIDC è protetta da un certificato non attendibile (ad esempio un certificato autofirmato), devi compilare il campo Certificato OIDC con il certificato HTTPS utilizzato dal tuo provider OIDC.

    • Codifica il certificato PEM con codifica per il provider OIDC in base64. Per creare la stringa codifica il certificato, incluse le intestazioni, in base64. Includi la stringa risultante come una singola riga.

    • Esempio: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==

    • Per un esempio di impostazione di questo campo, consulta la sezione Autenticazione con Keycloak.

  12. Fai clic su Submit (Invia) e torna alla scheda Identity and Access.

  13. Registra l'URL di callback con il provider OIDC.

Crea altri profili di identità facendo clic su Add (Aggiungi) nella scheda Identity Profile (Profilo di identità).

Applica profili di identità al cluster di amministrazione

I profili di identità devono essere applicati ai cluster dopo la loro creazione.

  1. Nella scheda Identity Profile (Profilo di identità), fai clic su Apply to clusters (Applica ai cluster).

    Applica profilo al cluster di amministrazione

  2. Fai clic sulla scheda Cluster di amministrazione. Nell'elenco a discesa Profili, seleziona il nome del profilo creato in precedenza. Puoi selezionare più profili da applicare al cluster.

    Pagina del profilo OIDC

  3. Verifica il nome di dominio del profilo. Si tratta del nome di dominio mappato al profilo del provider di identità. Gli utenti non autenticati che tentano di accedere ai percorsi sul dominio vengono indirizzati per accedere con questo provider di identità. Questo nome di dominio è assegnato dall'operatore dell'infrastruttura.

    A ogni profilo deve essere assegnato un nome di dominio diverso se deve essere applicato più di un profilo alla volta.

    Per informazioni dettagliate sulla configurazione di un nome di dominio, vedi Configurare il nome di dominio per accedere al Centro di gestione.

  4. Inserisci un nome utente iniziale a cui vengono concessi i diritti di accesso per l'amministratore della piattaforma (ad es. alice@example.com,robi@example.com). Il nome utente deve avere come prefisso il prefisso utente impostato nel profilo. Ad esempio, se il prefisso è prefix-, il nome utente nel campo Initial Platform Admin (Amministratore piattaforma iniziale) dovrebbe essere prefix-alice@example.com. Per ulteriori informazioni sugli amministratori delle piattaforme e sull'autorizzazione, consulta i ruoli di autorizzazione.

  5. Applica le impostazioni e attendi alcuni minuti per l'applicazione delle configurazioni e il riavvio dei servizi.

Ora puoi accedere al Centro di gestione con il tuo nome di dominio. Se non hai eseguito l'accesso, il sistema ti reindirizzerà al tuo provider OIDC per eseguire l'accesso.

Configura OIDC tramite API

Invece di configurare OIDC tramite il Centro di gestione, puoi configurarlo anche tramite API. Per configurare l'autenticazione OIDC, devi configurare il CRD ClientConfig del cluster di amministrazione con i dettagli di autenticazione. A tale scopo, crea un file con i seguenti contenuti (ad esempio admin-cluster-oidc-config.yaml):

spec:
  authentication:
  - name: CONFIGURATION_NAME
    oidc:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      # The URI to redirect users going through the OAuth flow using cloud
      # console.
      # This is a required parameter not supported by Anthos private mode, so
      # a dummy value is required.
      cloudConsoleRedirectURI: http://cloud.console.not.enabled
      extraParams: EXTRA_PARAMS
      issuerURI: ISSUER_URI
      # The redirect URL that kubectl uses for authorization.
      kubectlRedirectURI: http://localhost:9879/callback
      scopes: SCOPES
      userClaim: USER_CLAIM
      groupsClaim: GROUPS_CLAIM
      certificateAuthorityData: CERT_AUTHORITY_DATA

Sostituisci quanto segue:

  • CONFIGURATION_NAME: il nome della configurazione OIDC da creare.
  • CLIENT_ID: ID dell'applicazione client che invia richieste di autenticazione al provider OpenID.
  • CLIENT_SECRET: secret per l'applicazione client.
  • EXTRA_PARAMS: parametri coppia chiave-valore aggiuntivi (separati da virgole) da inviare al provider OpenID.
  • ISSUER_URI: URL a cui vengono inviate le richieste di autorizzazione al tuo OpenID.
  • SCOPES: ambiti aggiuntivi (separati da virgole) da inviare al provider OpenID.
  • USER_CLAIM: dichiarazione JWT da utilizzare come nome utente. Puoi scegliere altre attestazioni, ad esempio email o nome, a seconda del provider OpenID. Tuttavia, alle attestazioni diverse dall'indirizzo email viene aggiunto come prefisso l'URL dell'emittente per evitare conflitti di denominazione.
  • GROUPS_CLAIM: nome della rivendicazione nel token ID OIDC in cui sono memorizzate le informazioni sul gruppo dell'utente.
  • CERT_AUTHORITY_DATA: un certificato facoltativo con codifica PEM base-64 per il provider OIDC. Rimuovili se non sono necessari. Per creare la stringa codifica il certificato, incluse le intestazioni, in formato base64. Includi la stringa risultante in CertificateAuthorityData come riga singola.

Dopo aver modificato il file con la configurazione desiderata, esegui il comando seguente:

kubectl patch --kubeconfig=ADMIN_KUBECONFIG clientconfig default -n kube-public \
  --type=merge --patch "$(cat OIDC_CONFIG)"

Sostituisci quanto segue:

  • ADMIN_KUBECONFIG: percorso al file Kubeconfig del cluster di amministrazione.
  • OIDC_CONFIG: percorso del file di configurazione creato.

Accedi con OIDC al server API Kubernetes del cluster di amministrazione

Gli utenti possono scaricare admin-actl-auth-login-config.yaml dalla pagina Identità e accesso dopo la configurazione di OIDC.

  1. Nella pagina Identità e accesso, fai clic sulla scheda Identità, quindi sulla scheda Cluster.

  2. Individua il cluster denominato admin e fai clic su Visualizza dettagli di configurazione.

  3. Fai clic su Download config (Scarica configurazione di accesso) per scaricare la configurazione utilizzata per accedere con identità al server API Kubernetes del cluster di amministrazione.

    Pulsante di download configurazione AIS

  4. Il file di output admin-actl-auth-login-config.yaml contiene la configurazione necessaria agli utenti per eseguire l'autenticazione con il cluster di amministrazione. Condividi admin-actl-auth-login-config.yaml con gli utenti attendibili che hanno bisogno di accedere al cluster.

  5. Dopo l'acquisizione di admin-actl-auth-login-config.yaml, gli utenti possono accedere utilizzando il comando actl auth login. Quando gli utenti accedono tramite browser, viene generato un file kubeconfig. Gli utenti possono utilizzare il nuovo file per accedere al cluster utilizzando le proprie credenziali federate:

    # Where to store the new kubeconfig
    export ADMIN_OIDC_KUBECONFIG=$(pwd)/admin-oidc-kubeconfig
    
    actl auth login --login-config=admin-actl-auth-login-config.yaml --cluster=admin \
      --kubeconfig=${ADMIN_OIDC_KUBECONFIG} \
      --preferred-auth="CONFIGURATION_NAME"
    

    Sostituisci CONFIGURATION_NAME con il nome del profilo identità con cui eseguire l'autenticazione.

  6. Gli utenti possono ora utilizzare ${ADMIN_OIDC_KUBECONFIG} per accedere alle risorse sul cluster di amministrazione, ad esempio:

    kubectl get pods -n anthos-management-center --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
    
  7. ${ADMIN_OIDC_KUBECONFIG} può essere utilizzato anche per autenticare i comandi dell'interfaccia a riga di comando di actl, ad esempio:

    actl platform management-center describe --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
    

Reimposta configurazione di autenticazione

Se un amministratore della piattaforma perde l'accesso al Centro di gestione a causa di un errore nelle impostazioni di autenticazione, esegui il comando seguente per reimpostare l'autenticazione OIDC sulla configurazione originale e recuperare il nuovo URL di accesso al Centro di gestione.

actl auth reset --kubeconfig=ADMIN_KUBECONFIG

# Get the new access URL to management center.
actl platform management-center describe --kubeconfig=ADMIN_KUBECONFIG

Passaggi successivi