Questa guida è rivolta agli amministratori della piattaforma che devono configurare il gateway Connect in un progetto che contiene utenti che non hanno identità Google e non appartengono a Google Workspace. In questa guida, queste identità sono chiamate "identità di terze parti". Prima di leggere questa guida, devi avere familiarità con i concetti descritti nella Panoramica di Connect Gateway. Per autorizzare singoli Account Google, vedi Configurazione del gateway Connect. Per l'assistenza di Google Gruppi, consulta Configurare Connect Gateway con Google Gruppi.
La configurazione descritta in questa guida consente agli utenti di accedere ai cluster fleet utilizzando Google Cloud CLI, il gateway Connect e la console Google Cloud .
Tipi di cluster supportati
Puoi configurare il controllo dell'accesso con identità di terze parti tramite il gateway Connect per i seguenti tipi di cluster registrati:
- Cluster GKE (tutte le versioni supportate).
- Google Distributed Cloud su VMware e bare metal (versione 1.13 e successive).
- GKE su AWS e GKE su Azure (versione 1.25 e successive).
- Cluster collegati (versione 1.16 e successive).
Se devi eseguire l'upgrade dei cluster on-premise per utilizzare questa funzionalità, consulta Eseguire l'upgrade di un cluster per VMware e Eseguire l'upgrade dei cluster su bare metal.
Se hai un caso d'uso per ambienti di cluster GKE diversi da quelli elencati sopra, contatta l'assistenza clienti Google Cloud o il team del gateway Connect.
Come funziona
Come descritto nella panoramica, gli utenti potrebbero utilizzare provider di identità diversi da Google Workspace o Cloud Identity. Utilizzando la federazione delle identità della forza lavoro, gli utenti possono utilizzare i propri provider di identità di terze parti, come Okta o Azure Active Directory, per accedere ai propri cluster tramite Connect Gateway. A differenza degli Account Google, gli utenti di terze parti sono rappresentati da un'entità Identity and Access Management (IAM) che segue il formato:
principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE
WORKFORCE_POOL_ID
è il nome del pool di forza lavoro che contiene il provider di identità di terze parti pertinente.SUBJECT_VALUE
è la mappatura dell'identità di terze parti a un soggetto Google.
Per i gruppi di terze parti, l'entità IAM segue il formato:
principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_VALUE
Il seguente diagramma mostra un flusso tipico per un utente di terze parti che esegue l'autenticazione e i comandi su un cluster con questo servizio abilitato. Affinché questo flusso vada a buon fine, è necessario applicare un criterio di controllo dell'accesso dell'accesso basato sui ruoli (RBAC) al cluster per l'utente o un gruppo.
Per i singoli utenti, nel cluster deve esistere un criterio RBAC che utilizzi il nome dell'entità IAM completo dell'utente.
Se utilizzi la funzionalità di gruppo, nel cluster deve esistere un criterio RBAC che utilizzi il nome dell'entità IAM completo per un gruppo che:
Contiene l'utente
alice@example.com
come membro.È inclusa in una mappatura per un provider di identità all'interno di un pool di forza lavoro che si trova nell'organizzazione Google Cloud di Alice.
- L'utente
alice@example.com
accede a gcloud con la propria identità di terze parti, utilizzando l'accesso basato sul browser di terze parti. Per utilizzare il cluster dalla riga di comando, l'utente ottiene il gateway del clusterkubeconfig
come descritto in Utilizzo di Connect Gateway. - 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 . - La richiesta viene ricevuta dal gateway Connect, che gestisce l'autenticazione di terze parti utilizzando la federazione delle identità per la forza lavoro.
- Il gateway Connect esegue un controllo dell'autorizzazione con IAM.
- 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.
- L'agente Connect inoltra la richiesta al server API Kubernetes.
- Il server API Kubernetes inoltra la richiesta a GKE Identity Service, che la convalida.
- GKE Identity Service restituisce le informazioni su utenti e gruppi di terze parti 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:
- L'ultima versione 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 automaticamente.
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 il proprietario di un progetto, potresti aver bisogno di autorizzazioni aggiuntive per eseguire alcuni passaggi di configurazione.Per i cluster esterni a Google Cloud, GKE Identity Service deve chiamare le API di Google dal cluster per completare l'autenticazione. Controlla se la tua policy di rete richiede che il traffico in uscita passi attraverso un proxy.
Configurare le mappature degli attributi di identità di terze parti utilizzando l'identità della forza lavoro
Assicurati che per la tua organizzazione Google Cloud siano configurati un pool di forza lavoro e un provider di identità seguendo le istruzioni corrispondenti al tuo provider di identità:
Abilita API
Per aggiungere il gateway al tuo progetto, abilita l'API Connect Gateway e le relative API di dipendenza richieste. Se gli utenti vogliono autenticarsi ai cluster utilizzando la Google Cloud console, non è necessario abilitare connectgateway.googleapis.com
, ma è necessario abilitare le API rimanenti.
gcloud services enable --project=PROJECT_ID \
connectgateway.googleapis.com \
gkeconnect.googleapis.com \
gkehub.googleapis.com \
cloudresourcemanager.googleapis.com
Configura GKE Identity Service
La funzionalità di supporto dell'identità di terze parti di Connect Gateway utilizza GKE Identity Service per ottenere informazioni sull'appartenenza ai gruppi da Google. Per scoprire di più su GKE Identity Service, consulta l'articolo Presentazione di GKE Identity Service.
Se utilizzi cluster GKE con il gateway, non devi configurare GKE Identity Service per utilizzare il supporto delle identità di terze parti. Segui invece le istruzioni riportate in Configurare Google Gruppi per RBAC e continua con Concedere ruoli IAM per concedere l'accesso ai cluster tramite il gateway.
Se utilizzi i cluster GKE collegati con il gateway, GKE Identity Service non è necessario per il supporto delle identità di terze parti. Segui le istruzioni per il tipo di cluster scelto per configurare il supporto dell'identità di terze parti:
- Connettiti al cluster EKS collegato
- Connettiti al tuo cluster AKS collegato
- Connettiti ad altri tipi di cluster
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 dell'identità di terze parti richiede la versione 1.13 o successive). Puoi verificare che sia installato correttamente sul cluster eseguendo questo 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 delle identità di terze parti per i gruppi
Se il tuo cluster o la tua flotta è già configurato per il supporto di Google Gruppi, non sono necessari passaggi aggiuntivi e puoi passare a Concedere ruoli IAM a utenti e gruppi di terze parti.
Se utilizzi Google Distributed Cloud su VMware o bare metal, il modo in cui configuri GKE Identity Service determina come devi configurare la funzionalità dei gruppi di terze parti.
Se utilizzi GKE Identity Service per la prima volta, puoi scegliere se configurare il supporto dei gruppi di terze parti utilizzando le API Fleet (consigliato) o kubectl.
Se non utilizzi GKE Identity Service per la prima volta, tieni presente quanto segue:
- Se hai già configurato GKE Identity Service per un altro provider di identità a livello di parco risorse, la funzionalità dei gruppi di terze parti è abilitata per impostazione predefinita. Per ulteriori dettagli e per la configurazione aggiuntiva necessaria, consulta la sezione Flotta di seguito.
Se hai già configurato GKE Identity Service per un altro provider di identità in base al cluster, consulta la sezione Kubectl di seguito per istruzioni su come aggiornare la configurazione per la funzionalità dei gruppi di terze parti.
Parco risorse
Puoi utilizzare la console Google Cloud o la riga di comando per configurare l'accesso ai gruppi di terze parti utilizzando le API Fleet Feature.
Console
Se non hai ancora configurato GKE Identity Service per un parco progetti, segui le istruzioni riportate in Configurare i cluster per GKE Identity Service.
Seleziona i cluster e aggiorna la configurazione
Nella console Google Cloud , vai alla pagina Feature Manager.
Fai clic su Dettagli nel riquadro Servizio di identità. Vengono visualizzati i dettagli del cluster del progetto.
Fai clic su Aggiorna servizio di identità per aprire il riquadro di configurazione.
Seleziona i cluster che vuoi configurare. Puoi scegliere singoli cluster o specificare che tutti i cluster devono essere configurati con la stessa configurazione dell'identità.
Nella sezione Configura provider di identità, puoi scegliere di conservare, aggiungere, aggiornare o rimuovere un provider di identità.
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.
Seleziona Abilita 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.
Fai clic su Aggiorna configurazione. In questo modo, la configurazione dell'identità viene applicata ai cluster selezionati.
gcloud
Se non hai ancora configurato GKE Identity Service per un parco progetti,
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 ai gruppi di terze parti utilizzando un proxy
Se devi accedere al provider di identità tramite un proxy, utilizza un campo proxy
nel file auth-config.yaml
. Potresti dover impostare questo valore 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: authentication-method
google:
disable: false
proxy: PROXY_URL
dove
disable
(facoltativo) indica se vuoi attivare o disattivare la funzionalità dei gruppi di terze parti 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 a cui connettersi all'identità Google. Ad esempio:http://user:password@10.10.10.10:8888
Applica 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 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 GKE Identity Service vengono riconciliate dal controller alla configurazione specificata in questa configurazione.
kubectl
Per configurare il cluster in modo che utilizzi GKE Identity Service con la funzionalità dei gruppi di terze parti,
devi aggiornare ClientConfig
di GKE Identity Service del cluster.
Si tratta di un tipo di risorsa personalizzata (CRD) di Kubernetes utilizzato per la configurazione del cluster.
Ogni cluster 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 CLUSTER_KUBECONFIG -n kube-public edit clientconfig default
Se in kubeconfig sono presenti più contesti, viene utilizzato il contesto attuale. Prima di eseguire il comando, potrebbe essere necessario reimpostare il contesto corrente sul cluster corretto.
Ecco un esempio di come puoi aggiornare ClientConfig
con un nuovo
metodo di autenticazione con una configurazione di tipo google
per attivare la funzionalità dei gruppi di terze parti.
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 del cluster.
Puoi recuperare i dettagli dell'appartenenza del cluster utilizzando il comando:
kubectl --kubeconfig CLUSTER_KUBECONFIG get memberships membership -o yaml
dove
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 di 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
Concedere ruoli IAM a utenti e gruppi di terze parti
Le identità di terze parti richiedono i seguenti ruoli Google Cloud aggiuntivi per interagire con i cluster connessi tramite il gateway:
roles/gkehub.gatewayAdmin
. Questo ruolo consente agli utenti di accedere all'API gateway Connect.- Se gli utenti hanno bisogno solo dell'accesso in sola lettura ai cluster connessi, è possibile utilizzare
roles/gkehub.gatewayReader
. - Se gli utenti hanno bisogno dell'accesso in lettura/scrittura ai cluster connessi, è possibile utilizzare
roles/gkehub.gatewayEditor
.
- Se gli utenti hanno bisogno solo dell'accesso in sola lettura ai cluster connessi, è possibile utilizzare
roles/gkehub.viewer
. Questo ruolo consente agli utenti di visualizzare le appartenenze ai cluster registrate.
Di seguito viene illustrato come aggiungere i ruoli necessari a singole identità e gruppi mappati:
Singole identità
Per concedere i ruoli necessari a una singola identità
per il progetto
PROJECT_ID
, esegui questo comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=GATEWAY_ROLE \
--member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/gkehub.viewer \
--member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
dove
PROJECT_ID
: è l'ID del progetto.GATEWAY_ROLE
è uno traroles/gkehub.gatewayAdmin
,roles/gkehub.gatewayReader
ogkehub.gatewayEditor
.WORKFORCE_POOL_ID
: è l'ID del pool di identità della forza lavoro.SUBJECT_VALUE
: è l'identità dell'utente.
Gruppi
Per concedere i ruoli necessari a tutte le identità all'interno di un gruppo specifico per il progetto PROJECT_ID
, esegui questo comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=GATEWAY_ROLE \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/gkehub.viewer \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
dove
PROJECT_ID
: è l'ID del progetto.GATEWAY_ROLE
è uno traroles/gkehub.gatewayAdmin
,roles/gkehub.gatewayReader
ogkehub.gatewayEditor
.WORKFORCE_POOL_ID
: è l'ID del pool di forza lavoro.GROUP_ID
: è un gruppo nella rivendicazionegoogle.groups
mappata.
Per ulteriori personalizzazioni, ad esempio la specifica degli attributi del reparto, quando applichi il criterio RBAC, consulta la configurazione del tuo provider di identità elencata in Configurare le mappature di terze parti utilizzando Workforce Identity.
Puoi scoprire di più sulla concessione di ruoli e autorizzazioni IAM in Concessione, modifica e revoca dell'accesso alle risorse.
Configurare 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 dall'utente e dai gruppi di terze parti specificati. Per ogni cluster, devi aggiungere un criterio di autorizzazioni RBAC che specifichi le autorizzazioni che il soggetto ha sul cluster.
I soggetti nelle policy RBAC devono utilizzare lo stesso formato dei binding IAM, con gli utenti di terze parti che iniziano con principal://iam.googleapis.com/
e i gruppi di terze parti che iniziano con principalSet://iam.googleapis.com/
. Se GKE Identity Service non è configurato per il cluster, avrai bisogno di criteri di rappresentazione oltre a ruoli/clusterroles per un utente di terze parti. In questo caso, segui questi passaggi di configurazione del controllo dell'accesso basato sui ruoli (RBAC), aggiungendo l'entità di terze parti che inizia con principal://iam.googleapis.com/
come utente.
L'esempio seguente mostra come concedere ai membri di un gruppo di terze parti le autorizzazioni cluster-admin
su un cluster in cui è configurato GKE Identity Service. Puoi quindi salvare il file dei criteri come /tmp/admin-permission.yaml e applicarlo al cluster associato al contesto corrente.
cat <<EOF > /tmp/admin-permission.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: gateway-cluster-admin-group
subjects:
- kind: Group
name: "principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP"
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
Per saperne di più su come specificare le autorizzazioni RBAC, consulta Utilizzo dell'autorizzazione RBAC.
Passaggi successivi
- Scopri come utilizzare Connect Gateway per connetterti ai cluster dalla riga di comando.
- Consulta un esempio di come utilizzare il gateway Connect nell'ambito dell'automazione DevOps nel nostro tutorial Integrazione con Cloud Build.