Configura Connect Gateway con Google Gruppi

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

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

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

Tipi di cluster supportati

Se utilizzi i cluster GKE su Google Cloud con Connect Gateway, non devi seguire l'intera configurazione con il servizio GKE Identity per utilizzare Google Gruppi per l'autorizzazione. Segui invece le istruzioni riportate in Configurare Google Gruppi per RBAC, che consente inoltre agli utenti di accedere ai cluster GKE dalla console Google Cloud utilizzando Google Gruppi per controllo dell'accesso'accesso. Al termine, segui le istruzioni riportate di seguito in Concedere i ruoli IAM a Google Gruppi per consentire ai membri del gruppo di accedere ai cluster tramite il gateway Connect.

Puoi configurare il controllo dell'accesso con Google Gruppi tramite Connect Gateway per i seguenti tipi di cluster:

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

Come funziona

Come descritto nella panoramica, è spesso utile poter concedere agli utenti l'accesso ai cluster in base alla loro appartenenza a gruppi Google, ovvero i gruppi creati in Google Workspace. L'autorizzazione in base all'appartenenza al gruppo significa che non devi configurare un'autorizzazione separata per ogni account, il che semplifica la gestione e il controllo dei criteri. 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. Con una configurazione aggiuntiva utilizzando GKE Identity Service, puoi configurare Connect Gateway in modo da ottenere le informazioni sull'appartenenza ai gruppi Google per ogni utente che accede al cluster. Potrai quindi utilizzare queste informazioni sui gruppi nei tuoi criteri di controllo dell'accesso.

Di seguito è riportato il flusso tipico per un utente che esegue l'autenticazione e comandi su un cluster con questo servizio abilitato. Affinché questo flusso vada a buon fine, nel cluster deve esistere un criterio RBAC 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 utilizzando la propria identità Google e, se prevede di utilizzare il cluster dalla riga di comando, ottiene il gateway kubeconfig del cluster come descritto in Utilizzare il gateway Connect.
  2. L'utente invia una richiesta eseguendo un comando kubectl o aprendo le pagine Workloads o Browser degli oggetti di Google Kubernetes Engine nella console Google Cloud .
  3. La richiesta viene ricevuta dal servizio Connect, che esegue un controllo di 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 nel cluster.
  5. L'agente Connect inoltra la richiesta al server dell'API Kubernetes.
  6. Il server API Kubernetes inoltra la richiesta a GKE Identity Service, che la convalida.
  7. GKE Identity Service restituisce le informazioni sugli utenti e sui 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 avere 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 Kubernetes, kubectl, per interagire con i cluster.

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

  • Assicurati di aver inizializzato gcloud CLI per l'utilizzo con il tuo progetto.

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

  • Per i cluster esterni a Google Cloud, il servizio GKE Identity deve chiamare l'API Google Identity dal cluster. Controlla 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 in Google Workspace della tua organizzazione sia presente un gruppo con il formato gke-security-groups@YOUR-DOMAIN. Se non disponi di un gruppo di questo tipo, segui le istruzioni riportate 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 gruppo.

Abilita API

Per aggiungere il gateway al progetto, abilita l'API Connect Gateway e le API di dipendenza richieste. Se i tuoi utenti vogliono autenticarsi ai cluster solo utilizzando la console Google Cloud , non devi attivare connectgateway.googleapis.com, ma devi attivare 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à di assistenza di Google Gruppi di Connect Gateway utilizza GKE Identity Service per ottenere da Google informazioni sull'appartenenza al gruppo. Per scoprire di più su GKE Identity Service, consulta Introduzione a GKE Identity Service.

Se utilizzi i cluster GKE con il gateway, non devi configurare GKE Identity Service per utilizzare il supporto di Google Gruppi. Segui invece le istruzioni riportate in Configurare Google Gruppi per il controllo degli accessi basato sui ruoli (RBAC) e vai a Concedere i ruoli IAM per concedere l'accesso ai cluster tramite il gateway.

Se utilizzi cluster collegati a GKE con il gateway, GKE Identity Service non è necessario per il supporto di Google Gruppi. Segui le istruzioni per il tipo di cluster scelto per configurare il supporto di Google Gruppi:

Assicurati che GKE Identity Service sia installato

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

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

Sostituisci CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster.

Configurare il supporto di Google Gruppi

Se utilizzi GKE su AWS o GKE su Azure, il tuo cluster è configurato automaticamente per supportare Google Gruppi e puoi saltare a Concedere i ruoli IAM a Google Gruppi.

Se utilizzi Google Distributed Cloud su VMware o bare metal, il modo in cui configuri il servizio GKE Identity determina la modalità di configurazione della funzionalità Gruppi Google.

Se utilizzi GKE Identity Service per la prima volta, puoi scegliere tra la configurazione di Google Gruppi a livello di flotta (opzione consigliata) o la configurazione per cluster.

Se non è la prima volta che utilizzi il servizio GKE Identity, tieni presente una delle seguenti informazioni:

  • 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. Per ulteriori dettagli e per eventuali configurazioni aggiuntive, consulta la sezione Flotta di seguito.
  • Se hai già configurato GKE Identity Service per un altro provider di identità su base per 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 o la riga di comando di Google Cloud per configurare l'accesso ai gruppi Google a livello di parco.

Se hai già configurato il servizio GKE Identity a livello di parco con un altro provider di identità (ad esempio Microsoft AD FS o Okta), la funzionalità di gateway di connessione a Google Gruppi è già attiva per impostazione predefinita nei 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 riportate in Configurare i cluster per GKE Identity Service.

Seleziona i cluster e aggiorna la configurazione

  1. Nella console Google Cloud , vai alla pagina Gestione funzionalità.

Vai a Gestore funzionalità

  1. Fai clic su Dettagli nel riquadro Servizio di identità. Vengono visualizzati i dettagli del cluster del progetto.
  2. Fai clic su Aggiorna servizio di identità per aprire il riquadro di configurazione.
  3. Seleziona i cluster da configurare. Puoi scegliere singoli cluster o specificare che tutti i cluster devono essere configurati con la stessa configurazione dell'identità.
  4. Nella sezione Configura provider di identità, puoi scegliere di conservare, aggiungere, aggiornare o rimuovere un provider di identità.
  5. Fai clic su Continua per passare al passaggio di configurazione successivo. Se hai selezionato almeno un cluster idoneo per questa configurazione, viene visualizzata la sezione Autenticazione Google.
  6. Seleziona Attiva per attivare l'autenticazione Google per i cluster selezionati. Se devi accedere al provider di identità Google tramite un proxy, inserisci i dettagli del proxy.
  7. Fai clic su Aggiorna configurazione. La configurazione dell'identità viene applicata ai cluster selezionati.

gcloud

Se non hai ancora configurato GKE Identity Service per un parco risorse, segui le istruzioni riportate 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

Configurare l'accesso a Google Gruppi utilizzando un proxy

Se devi accedere al provider di identità Google tramite un proxy, utilizza un campo proxy nel file auth-config.yaml. Potresti dover impostare questo valore se, ad esempio, il tuo 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 Identity Service for GKE 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. Per impostazione predefinita, questo valore è impostato su false. 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

Applica la configurazione

Per applicare la configurazione a un cluster, esegui il seguente comando:

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

dove

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

Una volta applicata, questa configurazione viene gestita dal controller GKE Identity Service. Eventuali modifiche locali apportate alla configurazione del client di Identity Service for GKE vengono riconciliate dal controller con la configurazione specificata in questa configurazione.

Per cluster

Per configurare il cluster in modo che utilizzi GKE Identity Service con la funzionalità Gruppi Google, devi aggiornare GKE Identity Service ClientConfig del cluster. Si tratta di un tipo di risorsa personalizzata (CRD) di 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 di configurazione.

Per modificare la configurazione, utilizza il seguente comando.

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

doveUSER_CLUSTER_KUBECONFIG è il percorso del file kubeconfig del cluster.

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

Ecco un esempio di come aggiornare ClientConfig con un nuovo metodo di autenticazione con una configurazione di tipo google per attivare 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'abbonamento al cluster. Puoi recuperare i dettagli dell'abbonamento del tuo 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'abbonamento 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

Concedi ruoli IAM ai gruppi Google

I gruppi devono disporre dei seguenti ruoli aggiuntivi di Google Cloud per interagire con i cluster collegati 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 di accesso in sola lettura ai cluster collegati, è possibile utilizzare roles/gkehub.gatewayReader.
    • Se i membri del gruppo hanno bisogno di accesso in lettura/scrittura ai cluster collegati, è possibile utilizzare roles/gkehub.gatewayEditor.
  • roles/gkehub.viewer. Questo ruolo consente ai membri del gruppo di visualizzare le iscrizioni ai cluster registrate.

Assegna 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 di roles/gkehub.gatewayAdmin, roles/gkehub.gatewayReader o gkehub.gatewayEditor.
  • PROJECT_ID è il tuo progetto

Scopri di più sulla concessione di autorizzazioni e ruoli IAM in Concessione, modifica e revoca dell'accesso alle risorse.

Configura i criteri di controllo dell'accesso basato sui ruoli (RBAC)

Infine, il server API Kubernetes di ogni cluster deve essere in grado di autorizzare i comandi kubectl che arrivano tramite il gateway dai gruppi specificati. Per ogni cluster, devi aggiungere un criterio di autorizzazione RBAC che specifichi le autorizzazioni del gruppo sul cluster.

Nell'esempio seguente viene mostrato come concedere ai membri del gruppo cluster-admin-team le autorizzazioni cluster-admin sul cluster, salvare il file di criteri 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ù su come specificare le autorizzazioni RBAC in Utilizzo dell'autorizzazione RBAC.

Passaggi successivi