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:

  1. O nome registry ou registry/repository
  2. Uma ou mais chaves GPG públicas
  3. 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

  1. Exibir o arquivo /etc/containers/policy.json:

    # cat /etc/containers/policy.json
    {
        "default": [
            {
                "type": "insecureAcceptAnything"
            }
        ],
        "transports":
        {
            "docker-daemon":
            {
                "": [{"type":"insecureAcceptAnything"}]
            }
        }
    }
  2. 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
  3. 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.

  4. 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
  5. 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
  6. 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
  7. Para rejeitar a política de confiança padrão, digite:

    # podman image trust set -t rejeita o padrão
  8. 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".

  9. 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.

  10. Entrar no registro.redhat.io

    # podman login registry.redhat.io
    Username: username
    Password: ***********
    Login Succeeded!
  11. 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.

  12. 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