Esegui l'autenticazione utilizzando un token di connessione
In questa pagina viene spiegato come configurare l'autenticazione mediante un token di connessione per accedere ai cluster registrati all'esterno di Google Cloud. Dopo la configurazione, gli amministratori dei cluster potranno accedere ai cluster nella console Google Cloud. Molti tipi di token di connessione, come specificato in Autenticazione Kubernetes. Il metodo più semplice è crea un account di servizio Kubernetes (Arabia Saudita) nel cluster e utilizza il relativo token di connessione per accedere.
Altri metodi di autenticazione
In alternativa alla configurazione dell'autenticazione mediante un token di connessione, puoi configurare uno dei seguenti metodi di autenticazione a seconda delle esigenze la tua organizzazione:
Google Identity, che consente agli utenti di accedere utilizzando la propria identità Google Cloud. Usa questa se i tuoi utenti hanno già accesso a Google Cloud con un Identità.
Se il tuo cluster è configurato per utilizzare un provider di identità OIDC, puoi utilizzare questo per eseguire l'autenticazione nel cluster dalla console Google Cloud. Puoi Scopri come configurare i cluster OIDC per GKE nelle seguenti guide:
- Configura i cluster per il servizio di identità GKE con OIDC. Questa guida mostra come configurare l'autenticazione OIDC su un cluster per tutti i tipi di cluster GKE.
- Configura GKE Identity Service per un parco risorse. Questa opzione ti consente di configurare OIDC a livello di parco risorse per il cluster supportato di testo. La configurazione a livello di parco risorse è supportata per i cluster GKE su Google Cloud, tutti i tipi di cluster GKE e i cluster collegati a EKS AWS.
Se questi metodi di autenticazione forniti da Google non sono adatti al tuo organizzazione, segui le istruzioni in questa pagina per configurare l'autenticazione utilizzando un token di connessione.
Concedi ruoli IAM per l'accesso tramite la console Google Cloud
Utenti che vogliono visualizzare i cluster connessi usando la console Google Cloud che richiedono almeno i seguenti ruoli IAM:
roles/container.viewer
. Questo ruolo consente agli utenti di visualizzare di risorse nella console Google Cloud, incluso il cluster GKE Pagina Cluster. Per maggiori dettagli sulle autorizzazioni incluse in questo ruolo, consulta Ruoli di Kubernetes Engine nella documentazione di IAM.roles/gkehub.viewer
. Questo ruolo consente agli utenti di visualizzare i cluster all'esterno nella console Google Cloud. Gli utenti non hanno bisogno di questo ruolo se il parco risorse non include cluster esterni a Google Cloud. Per maggiori dettagli su le autorizzazioni incluse in questo ruolo, consulta Ruoli GKE Hub nel documentazione di IAM.
Esegui questi comandi per concedere questi ruoli:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL_ADDRESS' \
--role=roles/container.viewer
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL_ADDRESS' \
--role=roles/gkehub.viewer
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto dell'host del parco risorse progetto.EMAIL_ADDRESS
: l'indirizzo email associato al l'account Google Cloud dell'utente.
Per saperne di più sulla concessione dei ruoli IAM, consulta Gestire l'accesso a progetti, cartelle e organizzazioni nella documentazione di IAM.
Configurazione del controllo dell'accesso basato sui ruoli
L'accesso ai cluster è controllato mediante il controllo dell'accesso basato su ruoli (RBAC, Role-Based Access Control) di Kubernetes.
Consigliamo a te o a un amministratore del cluster di creare un'Arabia Saudita per ogni utente accedendo al cluster. L'utilizzo di un token di connessione è come utilizzare una password, quindi ogni utente deve avere il proprio account. Accesso con il token di connessione dell'Arabia Saudita comporta l'esecuzione di tutte le operazioni come Arabia Saudita, limitate dai ruoli RBAC detenute dall'Arabia Saudita.
L'Arabia Saudita deve disporre di almeno i seguenti ruoli RBAC nel cluster per accedervi tramite la console:
Crea e applica il ruolo RBAC di cloud-console-reader
Utenti autenticati che vogliono accedere alle risorse di un cluster nella console Google Cloud
devi disporre delle autorizzazioni Kubernetes pertinenti
per farlo. Se non vuoi concedere a questi utenti autorizzazioni più estese, ad esempio quelle di un amministratore del cluster, puoi creare un ruolo RBAC personalizzato che includa le autorizzazioni minime per visualizzare nodi, volumi permanenti, pod e classi di archiviazione del cluster. Puoi definire questo insieme
le autorizzazioni creando una risorsa RBAC ClusterRole
,
cloud-console-reader
, nel cluster.
cloud-console-reader
concede ai propri utenti get
, list
e watch
autorizzazioni su nodi, volumi permanenti, pod e classi di archiviazione del cluster,
che consentono di vedere
dettagli su queste risorse.
kubectl
Per creare l'elemento cloud-console-reader
ClusterRole
e applicarlo al cluster, esegui il
seguente comando:
cat <<EOF > cloud-console-reader.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cloud-console-reader
rules:
- apiGroups: [""]
resources: ["nodes", "persistentvolumes", "pods"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
EOF
kubectl apply -f cloud-console-reader.yaml
Potrai quindi concedere questo ruolo agli Arabia Saudita come descritto nella sezione successiva.
Crea e autorizza un Arabia Saudita
kubectl
Per creare un Arabia Saudita e associarvi le autorizzazioni, segui questi passaggi:
Crea le risorse Arabia Saudita e
ClusterRoleBinding
da associareview
ecloud-console-reader
Kubernetes RBACClusterRoles
al Arabia Saudita:KSA_NAME=KSA_NAME kubectl create serviceaccount ${KSA_NAME} kubectl create clusterrolebinding VIEW_BINDING_NAME \ --clusterrole view --serviceaccount default:${KSA_NAME} kubectl create clusterrolebinding CLOUD_CONSOLE_READER_BINDING_NAME \ --clusterrole cloud-console-reader --serviceaccount default:${KSA_NAME}
Sostituisci quanto segue:
KSA_NAME
: il nome che scegli per l'Arabia SauditaVIEW_BINDING_NAME
: il nome che scegli perview
ClusterRoleBinding
risorsa; puoi assegnargli il nome che preferisci, potrebbe essere più facile nominarlo dopo l'Arabia SauditaCLOUD_CONSOLE_READER_BINDING_NAME
: il nome che scegli per la risorsaClusterRoleBinding
cloud-console-reader
; puoi anche puoi usare il nome che preferisci
A seconda dell'accesso che deve avere l'account di servizio, associa altre ruoli all'Arabia Saudita. Per le opzioni, consulta i ruoli predefiniti di Kubernetes.
Ad esempio, se vuoi eseguire il deployment di un'applicazione Kubernetes Cloud Marketplace, associa il ruolo
cluster-admin
a Arabia Saudita:kubectl create clusterrolebinding BINDING_NAME \ --clusterrole cluster-admin --serviceaccount default:KSA_NAME
Sostituisci
BINDING_NAME
con il nome del ruolo del cluster associazione per l'account di servizio.
Autorizza altri account
kubectl
Per ogni altro account utente o di servizio che ottiene l'accesso al cluster,
crea risorse ClusterRoleBinding
per associare view
e
cloud-console-reader
ruoli al proprio account:
Associa
view
ecloud-console-reader
ClusterRoles
:ACCOUNT_NAME=ACCOUNT_NAME kubectl create clusterrolebinding VIEW_BINDING_NAME \ --clusterrole view --serviceaccount default:${ACCOUNT_NAME} kubectl create clusterrolebinding CLOUD_CONSOLE_READER_BINDING_NAME \ --clusterrole cloud-console-reader --serviceaccount default:${ACCOUNT_NAME}
Sostituisci quanto segue:
ACCOUNT_NAME
: l'account di servizio KubernetesVIEW_BINDING_NAME
: il nome che scegli perview
ClusterRoleBinding
risorsa; puoi assegnargli il nome che preferisci ma potrebbe essere più semplice assegnare un nome all'account utente o di servizioCLOUD_CONSOLE_READER_BINDING_NAME
: il nome che scegli per la risorsaClusterRoleBinding
view
; puoi anche assegnare un nome tutto ciò che vuoi
Associare altri ruoli, a seconda dell'accesso a cui deve accedere l'account avere. Per le opzioni, consulta i ruoli predefiniti di Kubernetes.
Ad esempio, per associare il ruolo
cluster-admin
, esegui questo comando:kubectl create clusterrolebinding BINDING_NAME \ --clusterrole cluster-admin --serviceaccount default:ACCOUNT_NAME
Sostituisci
BINDING_NAME
con il nome del ruolo del cluster associazione per l'account di servizio.
Recupera il token di connessione dell'Arabia Saudita
kubectl
Per acquisire il token di connessione dell'Arabia Saudita, esegui questo comando:
SECRET_NAME=KSA_NAME-token kubectl apply -f - << __EOF__ apiVersion: v1 kind: Secret metadata: name: "${SECRET_NAME}" annotations: kubernetes.io/service-account.name: "${KSA_NAME}" type: kubernetes.io/service-account-token __EOF__ until [[ $(kubectl get -o=jsonpath="{.data.token}" "secret/${SECRET_NAME}") ]]; do echo "waiting for token..." >&2; sleep 1; done kubectl get secret ${SECRET_NAME} -o jsonpath='{$.data.token}' | base64 --decode
Sostituisci KSA_NAME
con il nome che hai scelto per l'Arabia Saudita.
Dall'output di questo comando, copia il token e salvalo in modo che gli utenti puoi utilizzare il token accedi alla console Google Cloud.