Nesta página, explicamos como gerenciar usuários em um ambiente do Distributed Cloud Connected.
Ao criar um cluster conectado do Distributed Cloud, apenas a conta de usuário usada para criar o cluster recebe acesso a ele. Para conceder acesso ao cluster a mais usuários, faça o seguinte:
- Conceda as permissões necessárias usando o RBAC do Kubernetes
- Usar o gateway de conexão para acessar o cluster
Conceder as permissões necessárias usando o RBAC do Kubernetes
Nesta seção, descrevemos como conceder à conta de um usuário as permissões necessárias para as necessidades comerciais dele usando o controle de acesso baseado em papéis (RBAC) do Kubernetes. Essas permissões são encapsuladas por vários papéis. Depois de conceder a função apropriada a uma conta de usuário, adicione essa conta ao cluster conectado do Distributed Cloud de destino.
O Distributed Cloud Connected não é compatível com grupos do Identity and Access Management nem com provedores de identidade de terceiros para uso com o RBAC do Kubernetes em clusters do Distributed Cloud Connected.
Você precisa usar os seguintes recursos do Kubernetes para conceder papéis aos usuários:
ClusterRole: permite aplicar um conjunto de permissões a qualquer namespace no cluster e também concede acesso a recursos em todo o cluster.ClusterRoleBinding: vincula um recursoClusterRolea uma conta de usuário.Role: permite aplicar um conjunto de permissões a um namespace específico.RoleBinding: vincula um recursoRoleouClusterRolea uma conta de usuário em um namespace específico.
Conceder permissões para um administrador de cluster
Quando você cria um cluster conectado do Distributed Cloud, a conta de usuário
usada para isso se torna automaticamente o administrador do cluster. Para conceder permissões de administrador do cluster a outros usuários, vincule a conta de usuário de destino à função cluster-admin criando um recurso ClusterRoleBinding e aplique-o ao cluster:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: BINDING_NAME subjects: kind: User name: ACCOUNT_NAME roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
Substitua:
BINDING_NAME: um nome que identifica exclusivamente essa vinculação de função.ACCOUNT_NAME: o nome da conta de usuário de destino.
Também é possível usar o seguinte comando kubectl:
kubectl create clusterrolebinding "BINDING_NAME" \ --clusterrole cluster-admin --user "ACCOUNT_NAME"
Substitua:
BINDING_NAME: um nome que identifica exclusivamente essa vinculação de função.ACCOUNT_NAME: o nome da conta de usuário de destino.
Conceder permissões para um desenvolvedor de aplicativos
Para conceder a um desenvolvedor de aplicativos as permissões necessárias para implantar cargas de trabalho no cluster de destino, faça o seguinte:
Crie um recurso
Roleque conceda as permissões para criar e gerenciar pods, serviços e implantações no namespace de destino e aplique-o ao cluster:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ROLE_NAME rules: apiGroups: ["apps", ""] resources: ["pods", "deployments", "services"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
Substitua:
NAMESPACE: o nome do namespace de destino.ROLE_NAME: um nome que identifica exclusivamente essa função.
Crie um recurso
RoleBindingque vincule as contas de usuário de destino à função criada na etapa anterior e aplique ao cluster:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE name: BINDING_NAME subjects: kind: User name: ACCOUNT_NAME kind: User name: ACCOUNT_NAME roleRef: kind: Role name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
Substitua:
BINDING_NAME: um nome que identifica exclusivamente essa vinculação de função.NAMESPACE: o nome do namespace de destino.ACCOUNT_NAME: o nome da conta de usuário de destino.ROLE_NAME: o nome da função de destino.
Conceder permissões para um agente de serviço do Cloud Build
Para conceder a um agente de serviço do Cloud Build as permissões necessárias para implantar cargas de trabalho no cluster de destino, faça o seguinte:
Crie um recurso
Roleque conceda as permissões para criar e gerenciar pods, serviços e implantações no namespace de destino e aplique-o ao cluster:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ROLE_NAME rules: apiGroups: ["apps", ""] resources: ["pods", "deployments", "services"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
Substitua:
NAMESPACE: o nome do namespace de destino.ROLE_NAME: um nome que identifica exclusivamente essa função.
Crie um recurso
RoleBindingque vincule a conta de agente de serviço do Cloud Build de destino à função criada na etapa anterior e aplique ao cluster:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE name: BINDING_NAME subjects: kind: User name: PROJECT_ID@cloudbuild.gserviceaccount.com roleRef: kind: Role name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
Substitua:
BINDING_NAME: um nome que identifica exclusivamente essa vinculação de função.NAMESPACE: o nome do namespace de destino.PROJECT_ID: o ID do projeto Google Cloud de destino.ROLE_NAME: o nome da função de destino.
Se você precisar conceder permissões a um agente de serviço do Cloud Build para implantar
e gerenciar cargas de trabalho em todos os namespaces do cluster de destino, crie um recurso ClusterRole
e um ClusterRoleBinding em vez dos recursos Role e RoleBinding.
Conceder permissões para visualizar informações do cluster
Para conceder as permissões necessárias para ver informações detalhadas sobre o cluster no console do Google Cloud , faça o seguinte:
Crie um recurso
ClusterRoleque permita ao agente do Connect simular o usuário que precisa ver as informações do cluster no console Google Cloud :apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: ROLE_NAME rules: apiGroups: [""] resources: ["users"] verbs: ["impersonate"] resourceNames: ["ACCOUNT_NAME"]
Substitua:
ROLE_NAME: o nome da função de destino.ACCOUNT_NAME: o nome da conta de usuário de destino.
Crie um recurso
ClusterRoleBindingque vincule a conta do agente de serviço do agente do Connect ao papel criado na etapa anterior e aplique ao cluster:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: BINDING_NAME subjects: kind: ServiceAccount name: ACCOUNT_NAME roleRef: kind: ClusterRole name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
Substitua:
BINDING_NAME: um nome que identifica exclusivamente essa vinculação de função.ACCOUNT_NAME: o nome da conta de usuário de serviço de destino.ROLE_NAME: o nome da função de destino.
É necessário criar um par de recursos ClusterRole e ClusterRoleBinding separado para cada usuário afetado.
Também é possível usar a ferramenta de linha de comando kubectl para conceder as permissões necessárias para
visualizar informações do cluster da seguinte maneira:
Crie um recurso
ClusterRoleque permita ao agente do Connect simular o usuário que precisa ver as informações do cluster no console Google Cloud :kubectl create clusterrole "ROLE_NAME" --verb impersonate \ --resource users --resource-name "ACCOUNT_NAME"
Substitua:
ROLE_NAME: o nome da função de destino.ACCOUNT_NAME: o nome da conta de usuário de serviço de destino.
Crie um recurso
ClusterRoleBindingque vincule a conta do agente de serviço do agente do Connect ao papel criado na etapa anterior e aplique ao cluster:kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \ "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
Substitua:
BINDING_NAME: um nome que identifica exclusivamente essa vinculação de função.ACCOUNT_NAME: o nome da conta de usuário de serviço de destino.ROLE_NAME: o nome da função de destino.
Usar o gateway do Connect para acessar clusters conectados do Distributed Cloud
Você pode usar o gateway de conexão para acessar os clusters conectados do Distributed Cloud. Um usuário do gateway de conexão precisa de uma ou mais das seguintes funções, dependendo dos requisitos de negócios:
- Administrador do Connect Gateway (
roles/gkehub.gatewayAdmin): concede acesso à API Connect Gateway. Isso permite o uso da ferramenta de linha de comandokubectlpara gerenciar o cluster. - Editor do Gateway (
roles/gkehub.gatewayEditor): concede acesso de leitura e gravação ao cluster. - Leitor do Connect Gateway (
roles/gkehub.gatewayReader): concede acesso somente leitura ao cluster. - Leitor do GKE Hub (
roles/gkehub.viewer): permite recuperar arquivoskubeconfigdo cluster.
Para mais informações sobre como usar o gateway do Connect, consulte: