Kubernetes: Autenticacao Autorizacao e Controle de Admissao
Como todo sistema de TI, precisamos controlar o acesso ao ambiente
- Autenticação: Login um usuário.
- Autorização: Autoriza as solicitações da API adicionadas pelo usuário conectado.
- Controle de admissão: Controla os requests com base em algumas verificações adicionais, como por exemplo, definir Cota para recursos.
Detalhes
Autenticação
Não existe um objeto Usuário no Kubernetes, mas mesmo assim existem os seguintes tipos de usuários:
- Usuário Normal: provido por um serviço de terceiro. Com uma arquivo de usernames/passwords, User/Client Certificates.
- Service Account: São usados para comunicação dentro do cluster através da API Server, afim de executar diferentes operações.
Para autenticar o K8s utiliza por exemplo: Client Certificates (--client-ca-file=SOMEFILE), Static Token File (--token-auth-file=SOMEFILE), Static Password File (--basic-auth-file=SOMEFILE), Service Account Tokens, OpenID Connect Token.
Autorização
Após uma autenticação bem-sucedida, os usuários podem enviar requests para a API afim de executar operações diferentes. Então, essas solicitações de API são autorizadas pelo Kubernetes usando vários módulos de autorização e políticas (polices).
Para autenticar o K8s utiliza por exemplo: Node Authorizer, Attribute-Based Access Control (ABAC) Authorizer, Webhook Authorizer, Role-Based Access Control (RBAC) Authorizer
Controle de Admissão
Admission Control é usado para especificar políticas de controle de acesso granular, que incluem a permissão de contêineres privilegiados, como a verificação da cota de recursos etc.
Para usar estes controle, é preciso iniciar Kubernetes API server com a opção admission-control, como abaixo:
--admission-control=NamespaceLifecycle,ResourceQuota,PodSecurityPolicy,DefaultStorageClass.