← CKS: segurança Kubernetes em produção
09 / 11 · 60 MIN

Contratos RBAC e runtime em produção

Analisa o pedido real e as dependências do container antes de alargar permissões ou retirar isolamento.

Diagnosticar a operação que o cliente efetua

Um batch pode fazer GET de configuração no arranque e depois abrir LIST e WATCH para acompanhar alterações. O primeiro sucesso não prova os outros caminhos. Quando resourceNames limita o objeto, o cliente precisa do field selector de nome nos pedidos de list ou watch correspondentes. No exercício, settlement-config existe e a conta consegue fazer GET, mas o watcher envia um pedido sem selector. Confirma a operação e o pedido efetivo antes de remover a restrição. O teste de aceitação deve usar a identidade do batch e incluir um nome que continue recusado.

Rever criação e troca de delegação

Restringir o nome de um objeto existente não resolve toda a governação da sua criação. Para create de um recurso principal, não uses resourceNames como garantia de que só aquele nome será criado. Podes separar provisionamento e manutenção ou avaliar admissão apropriada. Noutra mudança, roleRef é imutável: trocar reader por operator exige substituir o binding, revendo todos os subjects. Planeia a transição para evitar perda de acesso operacional ou sobreposição desnecessária. Uma autorização de projeto deve dizer quem recebe cada operação e qual evidência confirma o novo limite.

Distinguir apresentação e autorização

Uma tabela que apresenta nomes de Secrets não significa que list só permite ler nomes. A resposta da API pode incluir conteúdo, por isso o grant tem de ser revisto como acesso sensível. Também distingue os dois namespaces numa RoleBinding: o namespace do subject identifica a ServiceAccount e o do binding delimita o acesso concedido. No exemplo, runner de ci recebe operações em funds-prod. Escreve estas duas dimensões no handover. Evita provar acesso apenas com uma conta administrativa, pois isso pode esconder uma delegação ao principal errado.

Confirmar os controlos efetivos do processo

Um UID não root é uma parte do desenho, mas não substitui a revisão das capabilities. Num container Linux Restricted v1.35, o add-back admitido pelo padrão após drop ALL é NET_BIND_SERVICE; a necessidade deve ser justificada. RuntimeDefault também não significa que todos os runtimes fornecem perfis seccomp iguais. Uma mudança de runtime pode alterar a syscall permitida. Compara runtime, perfil e operação que falhou antes de abrir privilégios. Documenta o teste funcional e o comportamento que deve continuar bloqueado após a correção, com responsável por manter o controlo.

Mapear superfícies graváveis e handlers

readOnlyRootFilesystem não transforma automaticamente os volumes montados em superfícies só de leitura. No caso /work, revê o mount, permissões, persistência e necessidade de escrita. Para isolamento adicional, uma RuntimeClass declara um handler, mas não o instala nos nodes. Se os novos nodes falham e os antigos funcionam, compara provisionamento e elegibilidade de scheduling. Uma mitigação pode usar capacidade já preparada quando isso estiver autorizado e for suficiente. A correção deve abranger o próximo node criado, para não repetir uma reparação manual em cada expansão de capacidade.

Entregar uma matriz de aceitação a RUN

Prepara uma matriz pequena com principal, operação, objeto, âmbito, resultado esperado e evidência. Inclui GET e watcher da configuração, leitura recusada de outro objeto, comportamento no pool novo e escrita limitada ao volume previsto. Cada teste responde a uma afirmação concreta; uma captura de sucesso isolada não prova todas as linhas. Regista como reverter a mudança e como confirmar que a conta de operação continua autónoma. Os exercícios desta aula são decisões e modelos sintéticos, não uma execução de cluster nem uma verificação das políticas de um banco real.

NA PRÁTICA

O GET do batch funciona, mas o watcher sem selector falha; a correção do pedido conserva a restrição e permite o fecho.

Armadilhas comuns

Confundir GET com LIST; delegar à conta de outro namespace; tratar UID como revisão completa; assumir que RuntimeClass instala o handler.

Tópicos relacionados: RBAC e ServiceAccounts · Seccomp e isolamento de workloads

Leva esta ideia contigo

O acesso mínimo e o isolamento devem ser demonstrados com o pedido, processo e node que executarão o trabalho.

Criar conta

Referência: RBAC authorization · Kubernetes v1.35; current six-domain CKS outline

Kubernetes® e CKS são marcas comerciais ou marcas registadas de The Linux Foundation. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por The Linux Foundation. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.