Red Hat Training
A Red Hat training course is available for RHEL 8
2.8. Definindo a política de verificação de assinaturas de imagem
A Red Hat entrega assinaturas para as imagens no Red Hat Container Registry. Ao rodar como raiz, /etc/containers/policy.json
, e os arquivos YAML no diretório /etc/containers/registries.d/
definem a política de verificação de assinaturas. A política de confiança em /etc/containers/policy.json
descreve um escopo de registro (registro e/ou repositório) para a confiança.
Por padrão, a ferramenta de contêineres lê a política de $HOME/.config/containers/policy.json
, caso exista, caso contrário, de /etc/containers/policy.json
.
A confiança é definida usando três parâmetros:
- O nome registry ou registry/repository
- Uma ou mais chaves GPG públicas
- Um servidor de assinatura
A Red Hat serve assinaturas destas URIs:
https://access.redhat.com/webassets/docker/content/sigstore https://registry.redhat.io/containers/sigstore
Procedimento
Exibir o arquivo
/etc/containers/policy.json
:# cat /etc/containers/policy.json { "default": [ { "type": "insecureAcceptAnything" } ], "transports": { "docker-daemon": { "": [{"type":"insecureAcceptAnything"}] } } }
Para atualizar um escopo de confiança existente para os registros registry.access.redhat.com e registry.redhat.io, entre:
# podman image trust set -f /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release registry.access.redhat.com # podman image trust set -f /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release registry.redhat.io
Para verificar a configuração da política de confiança, exibir o arquivo
/etc/containers/policy.json
:"docker": { "registry.access.redhat.com": [ { "type": "signedBy", "keyType": "GPGKeys", "keyPath": "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release" } ], "registry.redhat.io": [ { "type": "signedBy", "keyType": "GPGKeys", "keyPath": "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release" } ] },
Você pode ver que as seções
"registry.access.redhat.com"
e"registry.redhat.io"
são adicionadas.Criar o arquivo
/etc/containers/registries.d/registry.access.redhat.com.yaml
para identificar a loja de assinaturas de imagens de contêineres do registro registry.access.redhat.com:docker: registry.access.redhat.com: sigstore: https://access.redhat.com/webassets/docker/content/sigstore
Crie o arquivo
etc/containers/registries.d/registry.redhat.io.yaml
com o seguinte conteúdo:docker: registry.redhat.io: sigstore: https://registry.redhat.io/containers/sigstore
Para exibir a configuração de confiança, entre:
# podman image trust show default accept registry.access.redhat.com signedBy security@redhat.com, security@redhat.com https://access.redhat.com/webassets/docker/content/sigstore registry.redhat.io signedBy security@redhat.com, security@redhat.com https://registry.redhat.io/containers/sigstore insecureAcceptAnything
Para rejeitar a política de confiança padrão, digite:
# podman image trust set -t rejeita o padrão
Para verificar a configuração da política de confiança, exibir o site
/etc/containers/policy.json
:# cat /etc/containers/policy.json { "default": [ { "type": "reject" } ... }
Você pode ver que a seção
"default"
mudou de"insecureAcceptAnything"
para"reject"
.Tente extrair a imagem mínima da Red Hat Universal Base Image 8 (
ubi8-minimal
) do registro registry.access.redhat.com:# podman --log-level=debug pull registry.access.redhat.com/ubi8-minimal .... DEBU[0000] Using registries.d directory /etc/containers/registries.d for sigstore configuration DEBU[0000] Using "docker" namespace registry.access.redhat.com DEBU[0000] Using https://access.redhat.com/webassets/docker/content/sigstore ...
Você vê que o endereço de armazenamento de assinaturas
access.redhat.com/webassets/docker/content/sigstore
corresponde ao endereço que você especificou no site/etc/containers/registries.d/registry.access.redhat.com.yaml
.Entrar no registro.redhat.io
# podman login registry.redhat.io Username: username Password: *********** Login Succeeded!
Tente tirar a imagem
support-tools
do registro.redhat.io# podman --log-level=debug pull registry.redhat.io/rhel8/support-tools ... DEBU[0000] Using registries.d directory /etc/containers/registries.d for sigstore configuration DEBU[0000] Using "docker" namespace registry.redhat.io DEBU[0000] Using https://registry.redhat.io/containers/sigstore ...
Você pode ver que o endereço de armazenamento de assinaturas
registry.redhat.io/containers/sigstore
corresponde ao endereço que você especificou no site/etc/containers/registries.d/registry.redhat.io.yaml
.Para listar todas as imagens puxadas para seu sistema local, entre:
# podman images REPOSITORY TAG IMAGE ID CREATED SIZE registry.redhat.io/rhel8/support-tools latest 5ef2aab09451 13 days ago 254 MB registry.access.redhat.com/ubi8-minimal latest 86c870596572 13 days ago 146 MB
Recursos adicionais
-
Para mais informações sobre o
podman image trust
, digiteman podman-image-trust
. - Para mais informações sobre a verificação de imagens de contêineres, veja o artigo Verificação de assinatura de imagem para o Red Hat Container Registry.