Configure o controlo de acesso baseado em funções (CABF)

A autenticação é frequentemente combinada com o controlo de acesso baseado em funções (RBAC) do Kubernetes para fornecer um controlo de acesso mais detalhado aos clusters para utilizadores autenticados e contas de serviço. Recomendamos que crie políticas de RBAC que usem nomes de grupos em vez de identificadores de utilizadores. Ao associar as suas políticas de RBAC explicitamente a grupos, pode gerir os privilégios de acesso dos utilizadores totalmente com o seu fornecedor de identidade, pelo que não é necessário atualizar o cluster sempre que os privilégios dos utilizadores mudam. Tenha em atenção que, para configurar o controlo de acesso com base na associação de grupos de segurança com o OIDC, tem de garantir que o GKE Identity Service está configurado para suportar a obtenção de informações de associação a grupos do seu fornecedor de identidade.

Exemplo

Se quiser que determinados utilizadores autenticados tenham acesso aos Pods do cluster, crie um ClusterRole que conceda acesso a estes recursos, como no exemplo seguinte:

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"]

Em seguida, cria um ClusterRoleBinding correspondente para conceder as autorizações no ClusterRole aos utilizadores relevantes. Neste caso, os membros do grupo de segurança us-east1-cluster-admins e o utilizador com o 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

No exemplo seguinte, este ClusterRoleBinding concede autorizações no ClusterRole ao grupo relevante com o ID 12345678-BBBb-cCCCC-0000-123456789012. Tenha em atenção que esta definição só é relevante para fornecedores do Azure AD e está disponível para clusters do 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

Para mais informações sobre a utilização do RBAC, consulte os artigos Configure o controlo de acesso baseado em funções e Usar a autorização RBAC.

Crie uma função CABF para o Google Cloud acesso à consola

Os utilizadores autenticados através de fornecedores OIDC podem iniciar sessão em clusters a partir da Google Cloud consola, bem como da linha de comandos.

Os utilizadores autenticados que queiram aceder aos recursos de um cluster na Google Cloud consola têm de ter as autorizações do Kubernetes relevantes para o fazer. Se não quiser conceder a esses utilizadores autorizações mais extensas, como as de um administrador do cluster, pode criar uma função RBAC personalizada que inclua as autorizações mínimas para ver os nós, os volumes persistentes, os pods e as classes de armazenamento do cluster. Pode definir este conjunto de autorizações criando um recurso ClusterRole RBAC, cloud-console-reader, no cluster.

cloud-console-reader concede aos respetivos utilizadores as autorizações get, list e watch nos nós, volumes persistentes, pods e classes de armazenamento do cluster, que lhes permitem ver detalhes sobre estes recursos.

kubectl

Para criar o cloud-console-reader ClusterRole e aplicá-lo ao cluster, execute o seguinte 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

Em seguida, pode conceder esta ClusterRole aos utilizadores quando configurar as suas políticas de autorização, conforme descrito na secção anterior. Tenha em atenção que os utilizadores também precisam de autorizações de IAM para ver clusters na Google Cloud consola.