|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
|
Esta é uma documentação não divulgada para Admission Controller 1.34-dev. |
Tarefas comuns
Isso descreve tarefas comuns para depois que você instalar SUSE Security Admission Controller em seu cluster Kubernetes.
As tarefas separadas estão em uma ordem lógica.
Testar Políticas
Admission Controller usa duas ferramentas para ajudá-lo a encontrar políticas e testá-las localmente:
-
Hub de Artefatos, usando seu filtro de pacotes para políticas Admission Controller
-
kwctl, uma ferramenta CLI
Hub de Artefatos
O Hub de Artefatos hospeda políticas contribuídas pela comunidade. Por exemplo, você pode encontrar substitutos para as Políticas de Segurança de Pod Kubernetes descontinuadas, criadas pelos Admission Controller desenvolvedores.
Como mostrado na captura de tela abaixo, uma vez que você encontre uma política de interesse, selecione o botão Install e use kwctl para buscar a política para seu cluster.
|
Anteriormente, as políticas Admission Controller podiam ser encontradas no Admission Controller Hub de Políticas. Isso foi descontinuado. As políticas agora estão disponíveis no https://artifacthub.io. |
kwctl Ferramenta CLI
kwctl é a ferramenta CLI do Admission Controller para autores de políticas e administradores de cluster testarem políticas antes de aplicá-las a um cluster Kubernetes.
Esta ferramenta possui uma interface semelhante à ferramenta CLI do docker.
Casos de uso
Você pode usar kwctl para ajudar nestes cenários:
Como autor de políticas
-
Teste de ponta a ponta da sua política: Teste sua política contra requisições Kubernetes elaboradas e assegure-se de que sua política se comporta como você espera. Você pode até testar políticas contextuais que requerem acesso a um cluster em execução.
-
Incorporar metadados no seu módulo Wasm: O binário contém anotações das permissões que precisa para ser executado. Você pode inspecionar e modificar essas anotações com
kwctl. -
Publicar políticas em registros OCI: O binário é um objeto OCI totalmente compatível e pode ser armazenado em registros OCI.
Como administrador de cluster
-
Inspecionar políticas remotas: Dada uma política em um registro OCI ou em um servidor HTTP, mostre todas as informações estáticas sobre a política.
-
Execução simulada de uma política no seu cluster: Teste a política contra requisições Kubernetes elaboradas e assegure-se de que a política se comporta como você espera, com os dados de entrada que você fornece. Você também pode testar políticas contextuais que requerem acesso a um cluster em execução no modo de execução simulada.
-
Gere a estrutura inicial de
ClusterAdmissionPolicypara sua política: Gere um arquivoYAMLcom todas as configurações necessárias, que podem ser aplicadas ao seu cluster Kubernetes usandokubectl.
Instalação
kwctl binários para os lançamentos estáveis estão disponíveis no repositório do GitHub. Para construir kwctl do repositório do GitHub, você precisa de um ambiente de desenvolvimento Rust.
Uso
Você pode listar todas as opções e subcomandos kwctl executando o seguinte comando:
$ kwctl --help
kwctl 0.2.5
Admission Controller Developers <cncf-kubewarden-maintainers@lists.cncf.io>
Tool to manage Admission Controller policies
USAGE:
kwctl [OPTIONS] <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
-v Increase verbosity
-V, --version Print version information
SUBCOMMANDS:
annotate Add Admission Controller metadata to a WebAssembly module
completions Generate shell completions
digest Fetch the digest of its OCI manifest
help Print this message or the help of the given subcommand(s)
inspect Inspect Admission Controller policy
policies Lists all downloaded policies
pull Pulls a Admission Controller policy from a given URI
push Pushes a Admission Controller policy to an OCI registry
rm Removes a Admission Controller policy from the store
run Runs a Admission Controller policy from a given URI
scaffold Scaffold a Kubernetes resource or configuration file
verify Verify a Admission Controller policy from a given URI using Sigstore
Aqui estão alguns exemplos de uso de comandos:
-
Liste as políticas: lista todas as políticas armazenadas no registro local
kwctl-
Comando:
kwctl policies
-
-
Obtenha a política: baixe e armazene a política dentro do repositório local
kwctl-
Comando:
kwctl pull <policy URI>$ kwctl pull registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 $ kwctl policies +--------------------------------------------------------------+----------+---------------+--------------+----------+ | Policy | Mutating | Context aware | SHA-256 | Size | +--------------------------------------------------------------+----------+---------------+--------------+----------+ | registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 | no | no | 59e34f482b40 | 21.86 kB | +--------------------------------------------------------------+----------+---------------+--------------+----------+
-
-
Entenda como a política funciona: inspecione os metadados da política
-
Comando:
kwctl inspect <policy URI>$ kwctl inspect registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 Details title: pod-privileged description: Limit the ability to create privileged containers author: Flavio Castelli url: https://github.com/kubewarden/pod-privileged-policy source: https://github.com/kubewarden/pod-privileged-policy license: Apache-2.0 mutating: false context aware: false execution mode: kubewarden-wapc protocol version: 1 Annotations io.kubewarden.kwctl 0.1.9 Rules ──────────────────── --- - apiGroups: - "" apiVersions: - v1 resources: - pods operations: - CREATE ──────────────────── Usage This policy doesn't have a configuration. Once enforced, it will reject the creation of Pods that have at least a privileged container defined.
-
-
Avalie a política: Avalie a política e, se disponível, encontre os valores de configuração corretos para atender aos seus requisitos.
Você precisa ter alguma familiaridade com as APIs REST do Kubernetes.
-
Comando:
kwctl run -r <"Kubernetes Admission request" file path> -s <"JSON document" file path> <policy URI> -
Cenário 1:
-
Solicitação de avaliação: Crie um pod sem contêiner 'privilegiado'
$ kwctl run registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 -r unprivileged-pod-request.json {"uid":"C6E115F4-A789-49F8-B0C9-7F84C5961FDE","allowed":true,"status":{"message":""}} -
Comando equivalente com o binário da política baixado:
`$ kwctl run file://$PWD/pod-privileged-policy.wasm -r unprivileged-pod-request.json {"uid":"C6E115F4-A789-49F8-B0C9-7F84C5961FDE","allowed":true,"status":{"message":""}} -
Resultado: A política permite a solicitação
-
-
Cenário 2:
-
Solicitação de avaliação: Crie um pod com pelo menos um contêiner 'privilegiado'
-
Comando:
kwctl run registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 -r privileged-pod-request.json -
Comando equivalente com o binário da política baixado:
kwctl run file://$PWD/pod-privileged-policy.wasm -r privileged-pod-request.json -
Saída:
{ "uid": "8EE6AF8C-C8C8-45B0-9A86-CB52A70EC50D", "allowed": false, "status": { "message": "User 'kubernetes-admin' cannot schedule privileged containers" } } -
Resultado: A política nega a solicitação
-
Para exemplos mais complexos, veja o post do blog Introduzindo
kwctlpara Administradores do Kubernetes. -
Fazer cumprir Políticas
Você faz cumprir uma política definindo um ClusterAdmissionPolicy e, em seguida, implantando-a em seu cluster usando kubectl.
kwctl ajuda a gerar um ClusterAdmissionPolicy a partir da política que você deseja fazer cumprir.
Depois de gerar o ClusterAdmissionPolicy e aplicá-lo ao seu cluster, você pode seguir os passos descritos no Início rápido abaixo:
-
Gere o
ClusterAdmissionPolicya partir da políticamanifeste salve-o em um arquivo-
Comando:
kwctl scaffold manifest -t ClusterAdmissionPolicy <policy URI> > <"policy name".yaml>$ kwctl scaffold manifest -t ClusterAdmissionPolicy registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 --- apiVersion: policies.kubewarden.io/v1alpha2 kind: ClusterAdmissionPolicy metadata: name: privileged-pods spec: module: "registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9" settings: {} rules: - apiGroups: - "" apiVersions: - v1 resources: - pods operations: - CREATE mutating: false
Por padrão, o valor do
nameé definido comogenerated-policy. Você pode querer editá-lo antes de implantar oClusterAdmissionPolicy. O nome no exemplo anterior é definido comoprivileged-pods. -
-
Implante o
ClusterAdmissionPolicyem seu cluster Kubernetes-
Comando:
kubectl apply -f <"policy name".yaml>$ kubectl apply -f pod-privileged-policy.yaml clusteradmissionpolicy.policies.kubewarden.io/privileged-pods created
-
Após implantar o ClusterAdmissionPolicy, todas as solicitações enviadas ao seu cluster são avaliadas pela política se estiverem dentro do escopo da política.
Próximas etapas
-
Escrevendo Políticas explica como escrever políticas em diferentes linguagens e gerar binários WebAssembly, para que possam ser usados por Admission Controller.
-
Distribuindo Políticas explica como publicar políticas em registros OCI.