Configurare controllo dell'accesso basato sui ruoli (RBAC)
L'autenticazione viene spesso combinata con il controllo controllo dell'accesso basato sui ruoli (RBAC) di Kubernetes per fornire controllo dell'accesso ai cluster più granulare per gli utenti autenticati e gli account di servizio. Ti consigliamo di creare criteri RBAC che utilizzino i nomi dei gruppi anziché gli identificatori utente. Se colleghi esplicitamente i criteri RBAC ai gruppi, puoi gestire i privilegi di accesso degli utenti interamente con il tuo provider di identità, quindi il cluster non deve essere aggiornato ogni volta che cambiano i privilegi degli utenti. Tieni presente che per configurare controllo dell'accesso dell'accesso in base all'appartenenza ai gruppi di sicurezza con OIDC, devi assicurarti che il servizio GKE Identity sia configurato per supportare l'ottenimento delle informazioni sull'appartenenza al gruppo dal tuo provider di identità.
Esempio
Se vuoi che determinati utenti autenticati abbiano accesso ai pod del cluster, crea un ClusterRole
che conceda l'accesso a queste risorse, come nell'esempio seguente:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: pod-reader rules: - apiGroups: [""] # The resource type for which access is granted resources: ["pods"] # The permissions granted by the ClusterRole verbs: ["get", "watch", "list"]
Poi crei un ClusterRoleBinding
corrispondente per concedere le autorizzazioni nel ClusterRole
agli utenti pertinenti, in questo caso i membri del gruppo di sicurezza us-east1-cluster-admins
e l'utente con ID u98523-4509823
:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: read-pods-admins subjects: # Grants anyone in the "us-east1-cluster-admins" group # read access to Pods in any namespace within this cluster. - kind: Group name: gid-us-east1-cluster-admins # Name is case-sensitive apiGroup: rbac.authorization.k8s.io # Grants this specific user read access to Pods in any # namespace within this cluster - kind: User name: uid-u98523-4509823 apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.io
Nell'esempio seguente, questo ClusterRoleBinding
concede le autorizzazioni in ClusterRole
al gruppo pertinente con ID 12345678-BBBb-cCCCC-0000-123456789012
. Tieni presente che questa impostazione è pertinente solo per i provider Azure AD ed è disponibile per i cluster Google Distributed Cloud.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: pod-reader-binding subjects: # Retrieves group information for the group ID mentioned - kind: Group name: 12345678-BBBb-cCCCC-0000-123456789012 apiGroup: rbac.authorization.k8s.io
Per ulteriori informazioni sull'utilizzo di RBAC, consulta Configurare il controllo dell'accesso basato sui ruoli e Utilizzare l'autorizzazione RBAC.
Crea un ruolo RBAC per l'accesso alla console Google Cloud
Gli utenti autenticati utilizzando i provider OIDC possono accedere ai cluster dalla console e dalla riga di comando.
Gli utenti autenticati che vogliono accedere alle risorse di un cluster nella console Google Cloud devono disporre delle autorizzazioni Kubernetes pertinenti. Se non vuoi concedere a questi utenti autorizzazioni più ampie, ad esempio quelle di un amministratore del cluster, puoi creare un ruolo RBAC personalizzato che includa le autorizzazioni minime per visualizzare i nodi, i volumi permanenti, i pod e le classi di archiviazione del cluster. Puoi definire questo insieme di autorizzazioni creando una risorsa ClusterRole
RBAC,cloud-console-reader
nel cluster.
cloud-console-reader
concede ai propri utenti le autorizzazioni get
, list
e watch
per i nodi, i volumi permanenti, i pod e le classi di archiviazione del cluster, che consentono di visualizzare i dettagli di queste risorse.
kubectl
Per creare il cloud-console-reader
ClusterRole
e applicarlo al cluster, esegui il
comando seguente:
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
Puoi quindi concedere questo ClusterRole
agli utenti durante la configurazione dei criteri di autorizzazione, come descritto nella sezione precedente. Tieni presente che gli utenti devono disporre anche delle autorizzazioni IAM per visualizzare i cluster nella console Google Cloud .