Configurare le policy RBAC per le identità di terze parti

L'autenticazione viene spesso combinata con il controllo controllo dell'accesso basato sui ruoli (RBAC) di Kubernetes per fornire controllo dell'accesso più granulare ai cluster per utenti e service account autenticati. Ti consigliamo di creare policy RBAC che utilizzino i nomi dei gruppi anziché gli identificatori utente. Se colleghi esplicitamente le policy RBAC ai gruppi, puoi gestire i privilegi di accesso degli utenti interamente con il tuo provider di identità, in modo che il cluster non debba essere aggiornato ogni volta che cambiano i privilegi degli utenti. Tieni presente che per configurare il controllo dell'accesso in base all'iscrizione ai gruppi di sicurezza con OIDC, devi assicurarti che il cluster sia configurato per supportare l'ottenimento delle informazioni sull'iscrizione ai gruppi dal tuo provider di identità. Questo documento si applica solo ai cluster membri del parco risorse.

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 crea 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 nel 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 degli accessi basato sui ruoli e Utilizzo dell'autorizzazione RBAC.

Creare un ruolo RBAC per l'accesso alla console Google Cloud

Gli utenti autenticati tramite i provider OIDC possono accedere ai cluster dalla Google Cloud console e dalla riga di comando.

Gli utenti autenticati che vogliono accedere alle risorse di un cluster nella Google Cloud console devono disporre delle autorizzazioni Kubernetes pertinenti. Se non vuoi concedere a questi utenti autorizzazioni più estese, come 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 ClusterRole risorsa RBAC, cloud-console-reader, nel cluster.

cloud-console-reader concede ai suoi utenti le autorizzazioni get, list e watch sui nodi, sui volumi permanenti, sui pod e sulle classi di archiviazione del cluster, che consentono loro di visualizzare i dettagli di queste risorse.

kubectl

Per creare il ClusterRole cloud-console-reader 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 delle policy di autorizzazione, come descritto nella sezione precedente. Tieni presente che gli utenti hanno bisogno anche delle autorizzazioni IAM per visualizzare i cluster nella Google Cloud console.