Red Hat Training

A Red Hat training course is available for RHEL 8

2.8. Definición de la política de verificación de la firma de la imagen

Red Hat entrega firmas para las imágenes en el Registro de Contenedores de Red Hat. Cuando se ejecuta como root, /etc/containers/policy.json, y los archivos YAML en el directorio /etc/containers/registries.d/ definen la política de verificación de firmas. La política de confianza en /etc/containers/policy.json describe un ámbito de registro (registro y o repositorio) para la confianza.

Por defecto, la herramienta del contenedor lee la política de $HOME/.config/containers/policy.json, si existe, de lo contrario de /etc/containers/policy.json.

La confianza se define mediante tres parámetros:

  1. El nombre registry o registry/repository
  2. Una o varias claves GPG públicas
  3. Un servidor de firmas

Red Hat sirve firmas desde estos URIs:

https://access.redhat.com/webassets/docker/content/sigstore
https://registry.redhat.io/containers/sigstore

Procedimiento

  1. Muestra el archivo /etc/containers/policy.json:

    # cat /etc/containers/policy.json
    {
        "default": [
            {
                "type": "insecureAcceptAnything"
            }
        ],
        "transports":
        {
            "docker-daemon":
            {
                "": [{"type":"insecureAcceptAnything"}]
            }
        }
    }
  2. Para actualizar un ámbito de confianza existente para los registros registry.access.redhat.com y registry.redhat.io, introduzca

    # 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 la configuración de la política de confianza, visualice el archivo /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"
                    }
                ]
            },

    Puede ver que se han añadido las secciones "registry.access.redhat.com" y "registry.redhat.io".

  4. Cree el archivo /etc/containers/registries.d/registry.access.redhat.com.yaml para identificar el almacén de firmas para las imágenes de contenedores desde el registro de registry.access.redhat.com:

    docker:
         registry.access.redhat.com:
             sigstore: https://access.redhat.com/webassets/docker/content/sigstore
  5. Cree el archivo etc/containers/registries.d/registry.redhat.io.yaml con el siguiente contenido:

    docker:
         registry.redhat.io:
             sigstore: https://registry.redhat.io/containers/sigstore
  6. Para mostrar la configuración de la confianza, introduzca:

    # 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 rechazar la política de confianza por defecto, escriba:

    # podman image trust set -t reject default
  8. Para verificar la configuración de la política de confianza, muestre la página /etc/containers/policy.json:

    # cat /etc/containers/policy.json
    {
        "default": [
        {
            "type": "reject"
        }
    ...
    }

    Puede ver que la sección "default" ha cambiado de "insecureAcceptAnything" a "reject".

  9. Intente extraer la imagen mínima de Red Hat Universal Base Image 8 (ubi8-minimal) del registro de 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
    ...

    Verá que la dirección de almacenamiento de la firma access.redhat.com/webassets/docker/content/sigstore coincide con la dirección especificada en /etc/containers/registries.d/registry.access.redhat.com.yaml.

  10. Inicie sesión en el registro de registry.redhat.io:

    # podman login registry.redhat.io
    Username: username
    Password: ***********
    Login Succeeded!
  11. Intente extraer la imagen support-tools del registro de registry.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
    ...

    Puede ver que la dirección de almacenamiento de la firma registry.redhat.io/containers/sigstore coincide con la dirección especificada en /etc/containers/registries.d/registry.redhat.io.yaml.

  12. Para listar todas las imágenes que se han extraído de su sistema local, introduzca:

    # 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 adicionales