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.

Distribuindo políticas

As políticas SUSE Security Admission Controller são binários WebAssembly (Wasm) avaliados pelo servidor de políticas Admission Controller.

O servidor de políticas Admission Controller carrega políticas dessas fontes:

Admission Controller recomenda distribuir políticas Admission Controller por meio de um registro regular compatível com OCI. Registros de contêiner são um requisito obrigatório para qualquer cluster Kubernetes. Ter um único lugar para armazenar e proteger todos os artefatos necessários para um cluster é benéfico.

Enviando políticas para um registro compatível com OCI

A especificação do formato de imagem OCI image format permite armazenar qualquer blob binário dentro de um registro de contêiner compatível com OCI.

O registro compatível com OCI de destino deve suportar artefatos para enviar com sucesso uma Admission Controller política para ele.

Você pode usar o CLI kwctl para enviar uma Admission Controller política para um registro compatível com OCI.

Anotando a política

Você também anota uma política com kwctl. Anotar uma Admission Controllerpolítica é feito adicionando seções personalizadas Wasm ao binário da política. Isso significa que a política empacota seus próprios metadados.

O comando kwctl annotate requer duas entradas:

  • a Admission Controllerpolítica a ser anotada, um arquivo local no sistema de arquivos.

  • o arquivo de anotações, um arquivo contendo uma descrição YAML dos metadados da política. Este arquivo geralmente está localizado na pasta raiz do projeto da sua política.

Por exemplo, você pode salvar este arquivo como metadata.yml no diretório atual:

rules:
- apiGroups: ["*"]
  apiVersions: ["*"]
  resources: ["*"]
  operations: ["*"]
mutating: false
annotations:
  io.kubewarden.policy.title: palindromify
  io.kubewarden.policy.version: 0.1.0
  io.kubewarden.policy.description: Allows you to reject palindrome names in resources and namespace names, or to only accept palindrome names
  io.kubewarden.policy.author: Name Surname <name.surname@example.com>
  io.kubewarden.policy.url: https://github.com/<org>/palindromify
  io.kubewarden.policy.source: https://github.com/<org>/palindromify
  io.kubewarden.policy.license: Apache-2.0
  io.kubewarden.policy.usage: |
    This is markdown text and as such allows you to define a free form usage text.

    This policy allows you to reject requests if:
    - The name of the resource is a palindrome name.
    - The namespace name where this resource is created has a palindrome name.

    This policy accepts the following settings:

    - `+invert_behavior+`: bool that inverts the policy behavior. If enabled, only palindrome names will be accepted.

Agora, vamos anotar a política:

$ kwctl annotate policy.wasm \
    --metadata-path metadata.yml \
    --output-path annotated-policy.wasm

O processo de anotação realiza certas otimizações na política, então muitas vezes a política anotada é menor que a original. Isso depende consideravelmente da cadeia de ferramentas usada para produzir o objeto Wasm original.

Use kwctl inspect para verificar sua política
$ kwctl inspect annotated-policy.wasm
2023-08-24T12:06:27.986401Z  INFO sigstore::cosign::client_builder: Rekor public key not provided. Rekor integration disabled
2023-08-24T12:06:27.986449Z  INFO sigstore::cosign::client_builder: No Fulcio cert has been provided. Fulcio integration disabled
Details
title:                    palindromify
description:              Allows you to reject palindrome names in resources and namespace names, or to only accept palindrome names
author:                   Name Surname <name.surname@example.com>
url:                      https://github.com/<org>/palindromify
source:                   https://github.com/<org>/palindromify
license:                  Apache-2.0
mutating:                 false
background audit support: true
context aware:            false
execution mode:           kubewarden-wapc
protocol version:         1

Annotations
io.kubewarden.kwctl       1.7.0-rc2

Rules
────────────────────
- apiGroups:
  - '*'
  apiVersions:
  - '*'
  resources:
  - '*'
  operations:
  - '*'
────────────────────

Usage
This is markdown text and as such allows you to define a free form usage text.

This policy allows you to reject requests if:

• The name of the resource is a palindrome name.
• The namespace name where this resource is created has a palindrome name.

This policy accepts the following settings:

• invert_behavior: bool that inverts the policy behavior. If enabled, only palindrome names will be accepted.

Cannot determine if the policy has been signed. There was an error while attempting to fetch its signatures from the remote registry: invalid uri

Enviando a política

Você pode enviar uma política anotada assim:

$ kwctl push annotated-policy.wasm \
     <oci-registry>/kubewarden-policies/palindromify-policy:v0.0.1

É desaconselhável enviar políticas não anotadas. O servidor de políticas usa os metadados fornecidos pelas anotações para executar corretamente uma política. Por padrão, kwctl push se recusa a enviar tal política para um registro compatível com OCI. Se você precisar de uma política não anotada, use a flag -‍-‍force de kwctl push.

Você pode referenciar uma política a partir do Admission Controllerservidor de políticas ou de kwctl como registry://<oci-registry>/kubewarden-policies/palindromify-policy:v0.0.1.