Gestione delle identità con OIDC nei cluster Anthos su Bare Metal

Puoi autenticarti con i cluster Anthos su cluster Bare Metal utilizzando OpenID Connect (OIDC). OIDC è un livello di autenticazione, basato su OAuth 2.0, che specifica un'API HTTP RESTful e utilizza JSON come formato dei dati.

OIDC consente di utilizzare il provider di identità esistente per gestire l'autenticazione di utenti e gruppi nei cluster Anthos su cluster Bare Metal. Con OIDC puoi gestire l'accesso a un cluster Anthos su cluster Bare Metal utilizzando le procedure standard nella tua organizzazione per creare, abilitare e disabilitare gli account. Puoi anche utilizzare i gruppi di sicurezza della tua organizzazione per configurare l'accesso a un cluster o a servizi specifici in un cluster. L'accesso gestito funziona su qualsiasi tipo di cluster Anthos su cluster Bare Metal: amministratore, utente, ibrido o autonomo.

I cluster Anthos su Bare Metal supportano i provider di identità sia on-premise che raggiungibili pubblicamente. Ad esempio, on-premise potresti utilizzare un componente Active Directory Federation Services. Puoi anche utilizzare i servizi di provider di identità raggiungibili pubblicamente di Google o Okta. Inoltre, i certificati di provider di identità possono essere emessi da un'autorità di certificazione pubblica (CA) nota o da una CA privata.

Sono disponibili due metodi di autenticazione OIDC per gli utenti:

  • Autenticazione OIDC tramite un'interfaccia a riga di comando (CLI) in cui gli utenti eseguono un comando gcloud e vengono autenticati tramite una pagina di accesso/consenso basata sul browser.

  • Autenticazione OIDC tramite l'interfaccia utente di Google Cloud Console in cui gli utenti accedono a un cluster direttamente dalla pagina dei cluster Kubernetes. Questo metodo richiede la registrazione del tuo cluster su Google Cloud. I cluster vengono registrati automaticamente durante l'installazione dei cluster Anthos su Bare Metal.

Tieni presente che OIDC non supporta i flussi di lavoro headless: OIDC richiede un'autenticazione basata su browser per reindirizzare gli utenti alla pagina web del provider di identità e richiedere agli utenti il consenso e l'accesso all'account/password.

Controllo dell'accesso OIDC e Kubernetes

L'autenticazione OIDC viene spesso combinata con il controllo dell'accesso basato sui ruoli di Kubernetes (RBAC). RBAC consente di creare criteri di autorizzazione granulari che definiscono quali utenti o gruppi possono eseguire operazioni specifiche su un determinato insieme di risorse del cluster.

Panoramica dell'autenticazione OIDC

Un'autenticazione OIDC tipica include i seguenti passaggi:

  1. Un utente accede a un provider OpenID presentando un nome utente e una password.
  2. Il provider OpenID emette un token ID per l'utente.

  3. Il token viene firmato dal provider e viene restituito tramite un URL di callback configurato in precedenza.

  4. Un'applicazione, che agisce per conto dell'utente, invia una richiesta HTTPS al server API Kubernetes. L'applicazione include il token ID dell'utente nell'intestazione della richiesta.

  5. Il server API di Kubernetes verifica il token ID utilizzando il certificato del provider e analizza il token per apprendere l'identità dell'utente e, se presenti, i gruppi dell'utente.

Di solito, nella configurazione e nell'autenticazione OIDC sono coinvolti tre utenti tipo:

  • L'amministratore dell'organizzazione, che sceglie un provider OpenID e registra le applicazioni client con il provider.

  • Un amministratore della piattaforma, che crea uno o più cluster e file di configurazione di autenticazione per gli utenti che utilizzano i cluster.

  • Un operatore o sviluppatore di app che esegue carichi di lavoro su uno o più cluster e utilizza OIDC per l'autenticazione.

Puoi utilizzare qualsiasi provider OpenID certificato (i provider sono certificati da OpenID Foundation). La procedura di registrazione specifica dipende dal fornitore, ma di solito include i seguenti passaggi:

  1. Scopri l'URI dell'emittente del fornitore. È qui che vengono inviate le richieste di autenticazione dall'interfaccia a riga di comando gcloud o Google Cloud Console.

  2. Fornisci al provider gli URL di reindirizzamento per l'interfaccia a riga di comando gcloud e Google Cloud Console.

  3. Definisci un ID client e un client secret. L'interfaccia a riga di comando gcloud e Google Cloud utilizzano entrambi questo ID client/secret per l'autenticazione nel provider OpenID.

  4. Definisci un ambito personalizzato e una rivendicazione per i gruppi di sicurezza. In generale, devi definire i criteri RBAC del cluster in base ai gruppi anziché agli utenti per rendere i criteri più stabili e controllabili. La maggior parte dei provider OIDC include le attestazioni di gruppo nei token ID se sono stati richiesti ambiti appropriati. Le rivendicazioni e gli ambiti specifici dei gruppi variano nei provider OIDC, per cui l'impostazione di questi ambiti e richieste specifici del fornitore richiede la personalizzazione.

Prima di installare un nuovo cluster Anthos su cluster Bare Metal, l'amministratore della piattaforma normalmente riceve la configurazione OIDC dall'amministratore dell'organizzazione e configura i campi OIDC pertinenti nella configurazione del cluster.

Una volta completata l'installazione del cluster, l'amministratore della piattaforma ottiene i file di configurazione dell'autenticazione e li condivide con gli utenti dell'interfaccia a riga di comando. In genere, l'amministratore della piattaforma condivide la configurazione di autenticazione ospitando i file su un host sicuro o utilizzando strumenti interni per eseguire il push dei file di configurazione sulla macchina di ciascun utente. Gli utenti dell'interfaccia a riga di comando quindi autenticano il nuovo cluster con i file di configurazione condivisi.

L'amministratore della piattaforma può anche archiviare i dettagli della configurazione di autenticazione per più cluster all'interno di un singolo file di configurazione di autenticazione.

Tieni presente che gli utenti di Google Cloud Console non hanno bisogno di questi file di configurazione. Quando gli utenti accedono a Google Cloud Console, possono selezionare Authenticate with the Identity Provider configurato per il cluster, quindi fare clic su Login.