Esta página é destinada a operadores de infraestrutura.
Nesta página, descrevemos os papéis de autorização, as vinculações de papéis e os direitos de acesso a recursos para o Anthos em execução no modo desconectado.
Papéis de autorização
O Anthos em execução no modo desconectado tem quatro papéis de autorização predefinidos:
Nome da função | Nome do ClusterRole no Kubernetes
(no cluster de administração)
|
Permissões |
Operador de infraestrutura | anthos-infrastructure-operator | Acesso completo de leitura/gravação a todos os recursos. |
Operador de infraestrutura (somente leitura) | anthos-infrastructure-operator-read-only | Acesso somente leitura à maioria dos itens no Centro de gerenciamento do Anthos, ClusterRole/Role, vinculações ClusterRole/Role, definições de recursos personalizados e acesso limitado de leitura a secrets. Os usuários têm acesso de gravação ao Grafana para editar painéis. |
Administrador da plataforma | Administrador da plataforma de Anthos |
|
Administrador da plataforma (somente leitura) | Administrador da plataforma de Anthos (somente leitura) | Acesso para ler a tudo que um administrador da plataforma pode ver.
Os usuários têm acesso de gravação ao Grafana para editar painéis. |
Qualquer pessoa com acesso a ADMIN_KUBECONFIG
é autenticada como membro no
grupo system:master
do Kubernetes, o que permite qualquer ação ao servidor da
API Kubernetes. Por exemplo, eles podem listar todos os secrets executando o:
kubectl get secrets --all-namespaces --kubeconfig=${ADMIN_KUBECONFIG}
${ADMIN_KUBECONFIG}
é o caminho do arquivo kubeconfig do
cluster de administrador.
O acesso usando ADMIN_KUBECONFIG
é autenticado como o
nome de usuário genérico admin
, o que dificulta o rastreamento da pessoa que executa o
comando. Consequentemente, é importante manter
ADMIN_KUBECONFIG
em um local seguro
e usá-lo somente quando necessário (por exemplo, ao configurar vinculações de papel do operador
da plataforma inicial ou ao recuperar falhas do OIDC).
Acesso ao Centro de gerenciamento e às métricas
O Anthos em execução no modo desconectado sincroniza automaticamente todos os usuários vinculados a esses quatro papéis na lista de permissões do acesso ao Centro de gerenciamento e às métricas (Grafana).
Os papéis com direitos de acesso somente leitura são negados ao tentar executar uma ação de gravação no Centro de gerenciamento.
Vinculações de papéis
Ao configurar o OIDC no console do Centro de gerenciamento, é possível definir um usuário inicial vinculado ao papel de administrador da plataforma. Com um kubeconfig conectado para o usuário administrador da plataforma inicial, há duas abordagens para vincular outro usuário ao papel de administrador da plataforma:
- Recomendado: configure a assinatura de grupo no provedor OIDC e criar vinculações de papéis com base no grupo
- Criar vinculações de papéis com base no usuário
Recomendado: configure a assinatura de grupo no provedor OIDC e criar vinculações de papéis com base no grupo
Essa abordagem vincula um dos seus grupos a um papel predefinido para conceder a todos os membros do grupo os mesmos direitos de acesso do papel predefinido.
Antes de começar
Antes de começar, verifique o seguinte:
- Determine o provedor OIDC do grupo.
- O campo Reivindicação de grupos na guia Perfil OIDC deve ser igual ao nome da
declaração que contém informações de associação a grupos no lado do
provedor OIDC. O Anthos executado no modo desconectado fornece a este campo o valor padrão de
groups
. No entanto, se o provedor OIDC tiver um valor diferente, configure-o na guia Perfil OIDC. - Anote o Prefixo do grupo na guia OIDC perfil. É necessário
incluir o prefixo do grupo antes de todos os nomes de grupo. Por exemplo, se você
tiver
gid-
como o prefixo do grupo e um grupo "admin-group" no provedor OIDC, usegid-admin-group
. Observe que o separador-
é a parte do prefixo do grupo e o sistema não adiciona nenhum separador para você.
Gerenciar vinculações usando o console do Centro de gerenciamento
Use a guia Acesso no console do Centro de gerenciamento para gerenciar suas vinculações de papéis com base nos grupos.
Não é possível adicionar ou atualizar uma vinculação a um papel com mais privilégios do que os da conta usada atualmente para fazer login. Por exemplo, se você tiver feito login como administrador da plataforma, não poderá vincular um grupo a um papel de operador de infraestrutura.
Gerenciar vinculações usando kubectl
Como alternativa, execute o seguinte comando para criar uma vinculação de papel com base no
grupo. O valor passado para group=
precisa ser o mesmo que o nome do grupo no provedor
OIDC prefixado com o prefixo do grupo:
kubectl create clusterrolebinding anthos-platform-admin-group-binding \
--kubeconfig=ADMIN_OIDC_KUBECONFIG --clusterrole=anthos-platform-admin \
--group=gid-anthos-platform-admin-group
Qualquer usuário que você adicionou a anthos-platform-admin-group
no provedor OIDC
agora tem todas as permissões de administrador da plataforma.
Da mesma forma, você pode usar o seguinte comando para vincular um grupo ao papel de administrador de plataforma (somente leitura):
kubectl create clusterrolebinding anthos-platform-admin-read-only-group-binding \
--kubeconfig=ADMIN_OIDC_KUBECONFIG --clusterrole=anthos-platform-admin-read-only \
--group=gid-anthos-platform-admin-read-only-group
Para evitar o escalonamento de privilégios, um administrador de plataforma não pode vincular um grupo a um
papel de operador de infraestrutura ou de operador de infraestrutura (somente leitura). Para inicializar o
primeiro grupo de operadores de infraestrutura, você precisa de ADMIN_KUBECONFIG
:
kubectl create clusterrolebinding anthos-platform-operator-group-binding \
--kubeconfig=${ADMIN_KUBECONFIG} --clusterrole=anthos-infrastructure-operator --group=gid-anthos-platform-operator-group
Depois disso, é possível usar um KUBECONFIG
com uma
conta de operador de infraestrutura conectada
para vincular outros grupos a quaisquer papéis:
# Bind a group to infrastructure operator (read-only):
kubectl create clusterrolebinding anthos-platform-operator-read-only-binding \
--clusterrole=anthos-infrastructure-operator-read-only --group=gid-anthos-platform-operator-read-only-group --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
Criar vinculações de papéis com base no usuário
Também é possível criar vinculações de papel com base no papel do usuário. Os comandos para criar vinculações de papel são semelhantes ao uso de "Group". Substitua --group
por --user
.
Você também precisa anexar o prefixo de usuário do seu perfil OIDC a todos os nomes de usuário.
Por exemplo, se o provedor OIDC estiver definido para ter um prefixo de usuário uid-
e você
quiser vincular joedoe@example.com
a um papel, use uid-joedoe@example.com
.
Também é possível usar a guia Acesso no console do Centro de gerenciamento para gerenciar vinculações de papéis aos usuários.
Veja um comando de amostra para criar uma vinculação de papel para charlie@example.com
e
conceder a ela permissões de administrador de plataforma:
kubectl create clusterrolebinding charlie-platform-admin-binding \
--clusterrole=anthos-platform-admin --user=uid-charlie@example.com --kubeconfig=ADMIN_OIDC_KUBECONFIG
Para excluir uma vinculação de papel e remover os direitos de acesso de um usuário, atualize as
vinculações existentes em vez de excluí-las. Por exemplo, revogue o direito de administrador da plataforma de
charlie@example.com
:
kubectl patch clusterrolebinding charlie-platform-admin-binding \
-p '{"subjects":[]}' --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
Também é possível solicitar que o operador da infraestrutura exclua o ClusterRoleBinding
.
Observações
- Veja mais informações sobre autorização em Como usar a autorização RBAC.
- Nenhum papel de autorização predefinido está definido nos clusters de usuário. O acesso ao servidor da API Kubernetes em cada acesso ao cluster de usuários é aberto para qualquer um que tenha o kubeconfig.
- Os administradores da plataforma não têm permissão para excluir uma vinculação de papel para impedir que eles excluam vinculações de usuários com privilégios maiores. Para revogar o acesso de um usuário, atualize a vinculação de papel que o vincula a uma lista de assunto vazia. A ação de exclusão na página Identidade e acesso do console do Centro de gerenciamento também atualiza as vinculações de papel para uma lista de assunto vazia, em vez de excluir as vinculações pelo mesmo motivo.
- O nome do recurso
ClusterRoleBinding
precisa ser exclusivo. Somente a vinculação mais recente aplicada ou criada entra em vigor quando há várias vinculações de papel do cluster com o mesmo nome.
Direitos de acesso a recursos do Kubernetes para cada papel predefinido
Nesta seção, fornecemos detalhes sobre todos os direitos de acesso a recursos do Kubernetes para cada papel predefinido.
Operador de infraestrutura
O papel do operador de infraestrutura corresponde ao papel anthos-infrastructure-operator
do Kubernetes, que pode executar qualquer verbo em qualquer recurso.
Operador de infraestrutura (somente leitura)
O papel de operador de infraestrutura (somente leitura) corresponde ao papel de anthos-infrastructure-operator-read-only
do
Kubernetes, que pode ler todos os recursos nos
ApiGroups listados aqui com acesso de leitura limitado a Secret
.
O acesso de leitura para Secret
é limitado apenas ao token de acesso do cluster de administrador, ao kubeconfig do cluster de usuário
e aos secrets com um rótulo logmon
no kube-system
para
geração de registros e monitoramento.
ApiGroups | Recurso | Verbos |
---|---|---|
"" | configmaps | get, list, watch |
"" | endpoint | get, list, watch |
"" | persistentvolumeclaims | get, list, watch |
"" | persistentvolumeclaims/status | get, list, watch |
"" | pods | get, list, watch |
"" | replicationcontrollers | get, list, watch |
"" | replicationcontrollers/scale | get, list, watch |
"" | serviceaccounts | get, list, watch |
"" | serviços | get, list, watch |
"" | services/status | get, list, watch |
"" | vinculações | get, list, watch |
"" | events | get, list, watch |
"" | limitranges | get, list, watch |
"" | namespaces/status | get, list, watch |
"" | pods/log | get, list, watch |
"" | pods/status | get, list, watch |
"" | replicationcontrollers/status | get, list, watch |
"" | resourcequotas | get, list, watch |
"" | resourcequotas/status | get, list, watch |
"" | namespaces | get, list, watch |
apiextensions.k8s.io | customresourcedefinitions | get, list, watch |
apps | * | get, list, watch |
escalonamento automático | * | get, list, watch |
batch | * | get, list, watch |
cert-manager.io | * | get, list, watch |
extensions | * | get, list, watch |
metrics.k8s.io | * | get, list, watch |
networking.k8s.io | * | get, list, watch |
policy | * | get, list, watch |
rbac.authorization.k8s.io | * | get, list, watch |
addons.gke.io | * | get, list, watch |
authentication.gke.io | * | get, list, watch |
baremetal.cluster.gke.io | * | get, list, watch |
cluster.x-k8s.io | * | get, list, watch |
managementcenter.anthos.cloud.google.com | * | get, list, watch |
Administrador da plataforma
O papel de administrador da plataforma tem os seguintes direitos de acesso:
Recurso | Verbos |
---|---|
namespaces | get, list, watch, create, update |
pods | get, list, watch |
serviços | get, list, watch |
events | get, list, watch |
configmaps | get, list, watch |
deployments | get, list, watch |
daemonsets | get, list, watch |
replicasets | get, list, watch |
statefulsets | get, list, watch |
jobs | get, list, watch |
cronjobs | get, list, watch |
memberships.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
onpremuserclusters.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
clusters.baremetal.cluster.gke.io | get, list, watch, create |
nodepools.baremetal.cluster.gke.io | get, list, watch, create |
clusters.cluster.x-k8s.io | get, list, watch |
machines.baremetal.cluster.gke.io | get, list, watch |
inventorymachines.baremetal.cluster.gke.io | get, list, watch |
addresspools.managementcenter.anthos.cloud.google.com | get, list, watch |
bootstrapservicebindings.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
bootstrapservices.managementcenter.anthos.cloud.google.com | get, list, watch |
bootstrapservicebindingitems.managementcenter.anthos.cloud.google.com | get, list, watch |
adminoperators.managementcenter.anthos.cloud.google.com | get, list, watch |
clientconfigs.authentication.gke.io | get, list, watch, create, update, delete |
configmanagementbindings.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
configmanagementfeaturespecs.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
configmanagementbindingitems.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
servicemeshbindings.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
servicemeshfeaturespecs.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
servicemeshbindingitems.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
identityservicebindings.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
identityservicefeaturespecs.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
identityservicebindingitems.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
updatablecomponents.managementcenter.anthos.cloud.google.com | get, list, watch |
domainconfigs.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
logmons.addons.gke.io | get, list, watch, create, update, delete |
clusterrolebindings.rbac.authorization.k8s.io | get, list, watch, create, update |
customresourcedefinitions.apiextensions.k8s.io | get, list, watch |
Os administradores da plataforma têm acesso de leitura a secrets
para permitir que eles tenham um
kubeconfig
autenticado como um papel cluster-admin
em um cluster de usuário.
Os administradores da plataforma podem ler e gravar secrets
e configmaps
com um rótulo logmon
no kube-system
para configurar o Logmon.
Administrador da plataforma (somente leitura)
O papel de administrador da plataforma (somente leitura) tem os mesmos direitos de acesso que um administrador da plataforma, exceto:
- Todos os verbos relacionados a gravação (criar, atualizar e excluir) não são concedidos.
- Para acessar um cluster de usuário, o administrador de plataforma (somente leitura) pode ler um
kubeconfig que seja autenticado como um papel
view
no cluster de usuário.
A seguir
- Configure a identidade e a segurança nos clusters de usuário.
- Saiba mais sobre a autenticação com o Keycloak ou o SSO do Google.