Configura Connect Gateway con Google Gruppi

Questa guida è rivolta agli amministratori di piattaforma che devono configurare il gateway di Connect per l'utilizzo da parte degli account utente del loro progetto mediante Google Gruppi per l'autorizzazione. Prima di leggere questa guida, dovresti acquisire familiarità con i concetti della nostra panoramica. Per autorizzare i singoli account, consulta la configurazione predefinita.

Questa configurazione consente agli utenti di accedere ai cluster del parco risorse configurati utilizzando Google Cloud CLI, il gateway Connect e la console Google Cloud.

Questa funzionalità utilizza Google Gruppi associati a Google Workspace o a qualsiasi versione di Cloud Identity.

Tipi di cluster supportati

Se utilizzi cluster GKE con Connect Gateway, non è necessario seguire l'intera configurazione con GKE Identity Service per utilizzare Google Gruppi per l'autorizzazione. Segui invece le istruzioni riportate in Configurare Google Gruppi per RBAC, che consente anche agli utenti di accedere ai cluster GKE dalla console Google Cloud utilizzando Google Gruppi per controllo dell'accesso'accesso. Una volta eseguita questa operazione, segui le istruzioni riportate di seguito in Concedi ruoli IAM a gruppi Google per consentire ai membri del gruppo di accedere ai cluster tramite il gateway di Connect.

Puoi configurare il controllo dell'accesso con Google Gruppi tramite il gateway Connect per i cluster GKE registrati, GKE su VMware e Google Distributed Cloud Virtual for Bare Metal a partire da GKE Enterprise 1.13 e versioni successive e per GKE su AWS e GKE su Azure a partire da Kubernetes versione 1.25. Se devi eseguire l'upgrade dei cluster on-premise per utilizzare questa funzionalità, consulta Upgrade dei cluster GKE Enterprise per VMWare e Upgrade dei cluster GKE Enterprise on bare metal.

Per utilizzare questa funzionalità con i cluster collegati o gli ambienti dei cluster GKE diversi da quelli elencati sopra, contatta l'assistenza clienti Google Cloud o il team di Connect Gateway.

Come funziona

Come descritto nella panoramica, spesso è utile essere in grado di concedere agli utenti l'accesso ai cluster in base alla loro appartenenza ai Google Gruppi, ovvero ai gruppi creati in Google Workspace. L'autorizzazione in base all'appartenenza ai gruppi significa che non devi configurare autorizzazioni separate per ogni account e i criteri sono più semplici da gestire e più facili da controllare. Ad esempio, puoi condividere facilmente l'accesso ai cluster con un team, eliminando la necessità di aggiungere/rimuovere manualmente i singoli utenti dai cluster quando entrano a far parte del team o lo lasciano. Dopo alcune configurazioni aggiuntive che utilizzano GKE Identity Service, puoi configurare il gateway di Connect in modo che riceva le informazioni sull'iscrizione ai gruppi Google per ogni utente che accede al cluster. Puoi quindi utilizzare le informazioni dei gruppi nei criteri di controllo dell'accesso.

Di seguito è riportato il flusso tipico per un utente che esegue l'autenticazione e l'esecuzione dei comandi su un cluster con questo servizio abilitato. Affinché questo flusso abbia esito positivo, deve esistere un criterio RBAC nel cluster per un gruppo che:

  1. Contiene l'utente alice@example.com come membro.

  2. È un gruppo nidificato di gke-security-groups@example.com.

Diagramma che mostra il flusso di Google Gruppi del gateway

  1. L'utente alice@example.com accede con la sua identità Google e, se prevede di utilizzare il cluster dalla riga di comando, ottiene il gateway del cluster kubeconfig come descritto in Utilizzo del gateway di connessione.
  2. L'utente invia una richiesta eseguendo un comando kubectl o aprendo le pagine Carichi di lavoro o Browser oggetti di Google Kubernetes Engine nella console Google Cloud.
  3. La richiesta viene ricevuta dal servizio Connect, che esegue un controllo dell'autorizzazione con IAM.
  4. Il servizio Connect inoltra la richiesta all'agente Connect in esecuzione sul cluster. La richiesta è accompagnata dalle informazioni sulle credenziali dell'utente da utilizzare per l'autenticazione e l'autorizzazione sul cluster.
  5. L'agente Connect inoltra la richiesta al server API Kubernetes.
  6. Il server API Kubernetes inoltra la richiesta a GKE Identity Service, che la convalida.
  7. GKE Identity Service restituisce le informazioni relative a utenti e gruppi al server API Kubernetes. Il server API Kubernetes può quindi utilizzare queste informazioni per autorizzare la richiesta in base ai criteri RBAC configurati del cluster.

Prima di iniziare

  • Assicurati di aver installato i seguenti strumenti a riga di comando:

    • La versione più recente di Google Cloud CLI, lo strumento a riga di comando per interagire con Google Cloud.
    • Lo strumento a riga di comando di Kubernetes, kubectl, per interagire con i cluster.

    Se utilizzi Cloud Shell come ambiente shell per interagire con Google Cloud, questi strumenti sono installati automaticamente.

  • Assicurati di aver inizializzato gcloud CLI per utilizzarlo con il tuo progetto.

  • Questa guida presuppone che tu abbia roles/owner nel tuo progetto. Se non sei un proprietario del progetto, potresti avere bisogno di autorizzazioni aggiuntive per eseguire alcuni dei passaggi di configurazione.

  • Per i cluster esterni a Google Cloud, GKE Identity Service deve chiamare l'API Google Identity dal tuo cluster. Verifica se il criterio di rete richiede che il traffico in uscita passi attraverso un proxy.

Configura utenti e gruppi

Assicurati che i gruppi che vuoi utilizzare con questa funzionalità siano configurati come segue:

  1. Assicurati che nel Google Workspace della tua organizzazione esista un gruppo con il formato gke-security-groups@YOUR-DOMAIN. Se non hai un gruppo di questo tipo, segui le istruzioni in Creare un gruppo nella tua organizzazione per crearlo utilizzando la Console di amministrazione Google Workspace.
  2. Segui le istruzioni riportate in Aggiungere un gruppo a un altro gruppo per aggiungere i gruppi che vuoi utilizzare per controllo dell'accesso dell'accesso come gruppi nidificati di gke-security-groups. Non aggiungere singoli utenti come membri di gke-security-groups.

Gli account utente che vuoi utilizzare con questa funzionalità devono utilizzare lo stesso nome di dominio del loro gruppo.

Abilita le API

Per aggiungere il gateway al progetto, abilita l'API Connect Gateway e le API di dipendenza richieste. Se i tuoi utenti vogliono autenticarsi nei cluster utilizzando la console Google Cloud, non è necessario abilitare connectgateway.googleapis.com, ma devi abilitare le API rimanenti.

PROJECT_ID=example_project
gcloud services enable --project=${PROJECT_ID}  \
connectgateway.googleapis.com \
anthos.googleapis.com \
gkeconnect.googleapis.com \
gkehub.googleapis.com \
cloudresourcemanager.googleapis.com

Configura GKE Identity Service

La funzionalità Google Gruppi del gateway di Connect utilizza GKE Identity Service per ricevere da Google informazioni sulle iscrizioni ai gruppi. Per saperne di più su GKE Identity Service, consulta Introduzione a GKE Identity Service.

Se utilizzi i cluster GKE con il gateway, non è necessario configurare GKE Identity Service per utilizzare il controllo dell'accesso di Google Gruppi. Segui invece le istruzioni in Configurare Google Gruppi per RBAC e poi passa a Concedere ruoli IAM a Google Gruppi per consentire ai membri del gruppo di accedere ai cluster tramite il gateway Connect.

Assicurati che il servizio GKE Identity sia installato

GKE Identity Service è installato per impostazione predefinita sui cluster GKE a partire dalla versione 1.7 (anche se la funzionalità Google Gruppi richiede la versione 1.13 o successive). Puoi verificare che sia installato correttamente sul tuo cluster eseguendo questo comando:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get all -n anthos-identity-service

dove

USER_CLUSTER_KUBECONFIG è il percorso del file kubeconfig per il cluster.

Configura l'assistenza per Google Gruppi

Se utilizzi GKE su AWS o GKE su Azure, il cluster viene configurato automaticamente per supportare Google Gruppi e puoi passare a Concedere ruoli IAM a Google Gruppi.

Se utilizzi GKE su Bare Metal o GKE su VMware, il modo in cui configuri GKE Identity Service determina come devi configurare la funzionalità Google Gruppi.

Se è la prima volta che utilizzi GKE Identity Service, puoi scegliere tra configurare Google Gruppi a livello del parco risorse (consigliato) o per cluster.

Se non utilizzi GKE Identity Service per la prima volta, tieni presente una delle seguenti azioni:

  • Se hai già configurato GKE Identity Service per un altro provider di identità a livello di parco risorse, la funzionalità Google Gruppi è abilitata per impostazione predefinita. Consulta la sezione Il parco risorse di seguito per ulteriori dettagli ed eventuali configurazioni aggiuntive che potresti richiedere.
  • Se hai già configurato GKE Identity Service per un altro provider di identità in base al cluster, consulta la sezione Per cluster di seguito per istruzioni su come aggiornare la configurazione per la funzionalità Google Gruppi.

Parco risorse

Puoi utilizzare la console Google Cloud o la riga di comando per configurare l'accesso ai gruppi Google a livello di parco risorse.

Se hai già configurato GKE Identity Service a livello di parco risorse con un altro provider di identità (come Microsoft AD FS o Okta), la funzionalità Connetti a Google Gruppi per il gateway è già abilitata per impostazione predefinita sui cluster configurati, a condizione che il provider di identità Google sia raggiungibile senza dover utilizzare un proxy.

Console

Se non hai ancora configurato GKE Identity Service per un parco risorse, segui le istruzioni in Configurare i cluster per GKE Identity Service.

Seleziona i cluster e aggiorna la configurazione

  1. Nella console Google Cloud, vai alla pagina Funzionalità di GKE Enterprise.

    Vai alle funzionalità di GKE Enterprise

  2. Nella tabella Funzionalità, fai clic su Dettagli nella riga Servizio di identità. Vengono visualizzati i dettagli del cluster del progetto.

  3. Fai clic su Aggiorna servizio di identità per aprire il riquadro di configurazione.

  4. Seleziona i cluster che vuoi configurare. Puoi scegliere singoli cluster o specificare che tutti i cluster devono essere configurati con la stessa configurazione delle identità.

  5. Nella sezione Configura provider di identità, puoi scegliere di conservare, aggiungere, aggiornare o rimuovere un provider di identità.

  6. Fai clic su Continua per procedere con il passaggio di configurazione successivo. Se hai selezionato almeno un cluster idoneo per questa configurazione, viene visualizzata la sezione Autenticazione Google.

  7. Seleziona Abilita per abilitare l'autenticazione Google per i cluster selezionati. Se devi accedere al provider di identità Google tramite un proxy, inserisci i dettagli del campo Proxy.

  8. Fai clic su Aggiorna configurazione. Questa azione applica la configurazione delle identità ai cluster selezionati.

gcloud

Se non hai ancora configurato GKE Identity Service per un parco risorse, segui le istruzioni in Configurare i cluster per GKE Identity Service. Specifica solo la seguente configurazione nel file auth-config.yaml:

spec:
  authentication:
  - name: google-authentication-method
    google:
      disable: false

Configurazione dell'accesso a Google Gruppi tramite proxy

Se devi accedere al provider di identità Google tramite un proxy, utilizza un campo proxy nel file auth-config.yaml. Potrebbe essere necessario impostare questa opzione se, ad esempio, il cluster si trova in una rete privata e deve connettersi a un provider di identità pubblico. Devi aggiungere questa configurazione anche se hai già configurato GKE Identity Service per un altro provider.

Per configurare proxy, ecco come aggiornare la sezione authentication del file di configurazione esistente auth-config.yaml.

  spec:
    authentication:
    - name: google-authentication-method
      google:
        disable: false
      proxy: PROXY_URL

dove

  • disable (facoltativo) indica se vuoi attivare o disattivare la funzionalità Google Gruppi per i cluster. Questo valore è impostato su false per impostazione predefinita. Se vuoi disattivare questa funzionalità, puoi impostarla su true.

  • PROXY_URL (facoltativo) è l'indirizzo del server proxy per la connessione all'identità Google. Ad esempio: http://user:password@10.10.10.10:8888

Applicare la configurazione

Per applicare la configurazione a un cluster, esegui questo comando:

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

dove

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

Una volta applicata, questa configurazione viene gestita dal controller del servizio GKE Identity. Le modifiche locali apportate alla configurazione del client del servizio GKE Identity sono riconciliate dal controller con la configurazione specificata in questa configurazione.

Per cluster

Per configurare il cluster per l'utilizzo di GKE Identity Service con la funzionalità Google Gruppi, devi aggiornare GKE Identity Service ClientConfig del cluster. Questo è un tipo di risorsa personalizzata (CRD) Kubernetes utilizzata per la configurazione del cluster. Ogni cluster GKE Enterprise ha una risorsa ClientConfig denominata default nello spazio dei nomi kube-public che aggiorni con i dettagli della configurazione.

Per modificare la configurazione, utilizza il comando seguente.

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

dove USER_CLUSTER_KUBECONFIG è il percorso del file kubeconfig del tuo cluster.

Se in kubeconfig sono presenti più contesti, viene utilizzato quello corrente. Potrebbe essere necessario reimpostare il contesto attuale sul cluster corretto prima di eseguire il comando.

Ecco un esempio di come puoi aggiornare ClientConfig con un nuovo metodo di autenticazione con una configurazione di tipo google per abilitare la funzionalità Google Gruppi. Se il campo internalServer è vuoto, assicurati che sia impostato su https://kubernetes.default.svc, come mostrato di seguito.

spec:
  authentication:
  - google:
      audiences:
      - "CLUSTER_IDENTIFIER"
    name: google-authentication-method
    proxy: PROXY_URL
  internalServer: https://kubernetes.default.svc

dove

CLUSTER_IDENTIFIER (obbligatorio) indica i dettagli dell'appartenenza al cluster. Puoi recuperare i dettagli dell'appartenenza al cluster utilizzando il comando:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get memberships membership -o yaml

dove

USER_CLUSTER_KUBECONFIG è il percorso del file kubeconfig per il cluster. Nella risposta, fai riferimento al campo spec.owner.id per recuperare i dettagli dell'appartenenza del cluster.

Ecco un esempio di risposta che mostra i dettagli dell'appartenenza a un cluster:

id: //gkehub.googleapis.com/projects/123456789/locations/global/memberships/xy-ab12cd34ef

che corrisponde al seguente formato: //gkehub.googleapis.com/projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP

Concede ruoli IAM a Google Gruppi

I gruppi devono disporre dei seguenti ruoli Google Cloud aggiuntivi per interagire con i cluster connessi tramite il gateway:

  • roles/gkehub.gatewayAdmin. Questo ruolo consente ai membri del gruppo di accedere all'API Connect Gateway.
    • Se i membri del gruppo hanno bisogno solo dell'accesso di sola lettura ai cluster connessi, è possibile utilizzare roles/gkehub.gatewayReader.
    • Se i membri del gruppo hanno bisogno dell'accesso in lettura/scrittura ai cluster connessi, è possibile utilizzare roles/gkehub.gatewayEditor.
  • roles/gkehub.viewer. Questo ruolo consente ai membri del gruppo di visualizzare le iscrizioni registrate al cluster.

Puoi concedere questi ruoli utilizzando il comando gcloud projects add-iam-policy-binding, come segue:

gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=GATEWAY_ROLE PROJECT_ID
gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=roles/gkehub.viewer PROJECT_ID

dove

  • GROUP_NAME è il gruppo Google a cui vuoi concedere il ruolo
  • DOMAIN è il tuo dominio Google Workspace
  • GROUP_NAME@DOMAIN è un gruppo nidificato in gke-security-groups@DOMAIN
  • GATEWAY_ROLE è uno dei seguenti: roles/gkehub.gatewayAdmin, roles/gkehub.gatewayReader o gkehub.gatewayEditor.
  • PROJECT_ID è il tuo progetto

Per saperne di più sulla concessione delle autorizzazioni e dei ruoli IAM, consulta Concessione, modifica e revoca dell'accesso alle risorse.

Configurare criteri per controllo dell'accesso basato sui ruoli (RBAC)

Infine, il server API Kubernetes di ciascun cluster deve essere in grado di autorizzare i comandi kubectl provenienti dal gateway dei gruppi specificati. Per ogni cluster, devi aggiungere un criterio di autorizzazione RBAC che specifica le autorizzazioni di cui dispone il gruppo sul cluster.

Nell'esempio seguente, vedrai come concedere ai membri del gruppo cluster-admin-team le autorizzazioni cluster-admin nel cluster, salvare il file del criterio come /tmp/admin-permission.yaml e applicarlo al cluster associato al contesto corrente. Assicurati di includere anche il gruppo cluster-admin-team nel gruppo gke-security-groups.

cat <<EOF > /tmp/admin-permission.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gateway-cluster-admin-group
subjects:
- kind: Group
  name: cluster-admin-team@example.com
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
EOF
# Apply permission policy to the cluster.
kubectl apply --kubeconfig=KUBECONFIG_PATH -f /tmp/admin-permission.yaml

Scopri di più sulla specifica delle autorizzazioni RBAC in Utilizzo dell'autorizzazione RBAC.

Che cosa succede dopo?