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.