Kubernetes Role-Based Access Control(RBAC)
Controle de Acesso Baseado em Função (RBAC)
O Kubernetes possui um módulo de autorização chamado Controle de Acesso Baseado em Função (RBAC) que ajuda a definir permissões de utilização para o servidor de API.
O modelo de permissão do RBAC é composto por três partes individuais:
Assunto (Usuário, Grupo ou ServiceAccount) – O objeto que receberá as permissões.
RoleBinding/ClusterRoleBinding – A conexão entre Função/ClusterRole e o assunto.
A diferença entre "Funções" e "ClusterRoles" é apenas onde a função será aplicada - uma "Função" concederá acesso a apenas um namespace específico, enquanto um "ClusterRole" pode ser usado em todos os namespaces no cluster. Além disso, ClusterRoles também podem conceder acesso a:
recursos de escopo de cluster (como nós).
endpoints de não recurso (como /healthz).
recursos com namespace (como Pods), em todos os namespaces.
A partir do Kubernetes 1.6, as políticas RBAC são ativadas por padrão. Mas para habilitar o RBAC, você pode usar algo como:
Modelos
No modelo de uma Função ou um ClusterRole, você precisará indicar o nome da função, o namespace (em funções) e, em seguida, os apiGroups, recursos e verbos da função:
O apiGroups é uma matriz que contém os diferentes namespaces da API a que essa regra se aplica. Por exemplo, uma definição de Pod usa apiVersion: v1. Ele pode ter valores como rbac.authorization.k8s.io ou [*].
O recursos é uma matriz que define a quais recursos essa regra se aplica. Você pode encontrar todos os recursos com:
kubectl api-resources --namespaced=true
O verbos é uma matriz que contém os verbos permitidos. O verbo no Kubernetes define o tipo de ação que você precisa aplicar ao recurso. Por exemplo, o verbo list é usado em coleções enquanto "get" é usado em um único recurso.
Verbos de Regras
(Esta informação foi retirada daqui)
Verbo HTTP | verbo de solicitação |
---|---|
POST | create |
GET, HEAD | get (para recursos individuais), list (para coleções, incluindo o conteúdo completo do objeto), watch (para assistir a um recurso individual ou coleção de recursos) |
PUT | update |
PATCH | patch |
DELETE | delete (para recursos individuais), deletecollection (para coleções) |
O Kubernetes às vezes verifica a autorização para permissões adicionais usando verbos especializados. Por exemplo:
verbo
use
em recursospodsecuritypolicies
no grupo de APIpolicy
.
verbos
bind
eescalate
em recursosroles
eclusterroles
no grupo de APIrbac.authorization.k8s.io
.
verbo
impersonate
emusuários
,grupos
econtas de serviço
no grupo API principal e ouserextras
no grupo de APIauthentication.k8s.io
.
Você pode encontrar todos os verbos que cada recurso suporta executando kubectl api-resources --sort-by name -o wide
Exemplos
```yaml
Última actualización