Cómo usar el comando docker trust signer add para agregar un firmante

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo gestionar firmantes para repositorios de Docker utilizando Docker Content Trust (Confianza en el contenido de Docker). Comenzaremos inspeccionando los firmantes actuales de un repositorio para entender quién está autorizado a firmar imágenes.

Después de la inspección, aprenderá cómo agregar un nuevo firmante a un repositorio utilizando el comando docker trust signer add. Finalmente, verificará que el nuevo firmante se ha agregado con éxito, lo que garantiza que otra entidad ahora puede firmar imágenes para ese repositorio.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/inspect -.-> lab-555256{{"Cómo usar el comando docker trust signer add para agregar un firmante"}} end

Inspeccionar los firmantes actuales de un repositorio

En este paso, aprenderemos cómo inspeccionar los firmantes actuales de un repositorio de Docker. Docker Content Trust (Confianza en el contenido de Docker) te permite verificar la integridad y el publicador de las imágenes que utilizas. Los firmantes son entidades que tienen la autoridad para firmar imágenes de un repositorio específico.

Primero, habilitemos Docker Content Trust. Esto se hace estableciendo la variable de entorno DOCKER_CONTENT_TRUST en 1.

export DOCKER_CONTENT_TRUST=1

Ahora que la Confianza en el contenido está habilitada, cuando se descargue una imagen, Docker verificará su firma. Si la imagen no está firmada o la firma es inválida, la operación de descarga fallará.

Para inspeccionar los firmantes actuales de un repositorio, utilizamos el comando docker trust signer. Inspeccionaremos los firmantes del repositorio library/ubuntu, que es una imagen oficial bien conocida.

docker trust signer library/ubuntu

Este comando listará los firmantes asociados con el repositorio library/ubuntu. Verá una salida similar a esta, que muestra el nombre del firmante y su ID de clave:

Signers for library/ubuntu

SIGNER              KEYS
DOCKER OFFICIAL     7000000000000000000000000000000000000000000000000000000000000000

La salida muestra que el repositorio library/ubuntu está firmado por "DOCKER OFFICIAL" con un ID de clave específico. Esto confirma que la imagen que se descarga de este repositorio está firmada oficialmente por Docker.

Agregar un nuevo firmante al repositorio

En este paso, aprenderemos cómo agregar un nuevo firmante a un repositorio de Docker. Esto es útil cuando se desea permitir que otra parte o sistema firme imágenes para su repositorio.

Antes de agregar un firmante, se necesita tener una clave de firma. Si no se tiene una, se puede generar un nuevo par de claves utilizando el comando docker trust key generate. Para este laboratorio, asumiremos que tiene un par de claves.

Para agregar un nuevo firmante, utilizamos el comando docker trust signer add. Este comando requiere el nombre del nuevo firmante, el nombre del repositorio y la ruta a la clave pública del nuevo firmante.

Creemos un archivo de clave pública ficticia con fines demostrativos. En un escenario real, esta sería la clave pública proporcionada por el nuevo firmante.

echo "-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0AQICYQADggEPADRUb2tlbiBmb3IgYSB0ZXN0IHNpZ25lcg==
-----END PUBLIC KEY-----" > ~/project/new_signer.pub

Este comando crea un archivo llamado new_signer.pub en su directorio ~/project con algún contenido de clave pública ficticio.

Ahora, agreguemos un nuevo firmante llamado my-new-signer a un hipotético repositorio your-dockerhub-user/my-image. Reemplace your-dockerhub-user con su nombre de usuario de Docker Hub si estuviera haciendo esto con un repositorio real. Para este laboratorio, usaremos un marcador de posición.

docker trust signer add my-new-signer your-dockerhub-user/my-image --key ~/project/new_signer.pub

Se le pedirá que ingrese la contraseña de la clave raíz del repositorio. Esta es una medida de seguridad para garantizar que solo los usuarios autorizados puedan agregar firmantes. Dado que este es un entorno de laboratorio y no estamos interactuando con un registro real de Docker, puede ingresar una contraseña ficticia.

Después de ingresar la contraseña, el comando agregará el nuevo firmante a los datos de confianza del repositorio. Debería ver una salida que indique que el firmante se ha agregado.

Adding signer "my-new-signer" to your-dockerhub-user/my-image...
Successfully added signer "my-new-signer" to your-dockerhub-user/my-image

Este comando actualiza los datos de confianza para el repositorio especificado en el registro de Docker, agregando la clave pública del nuevo firmante.

Verificar que se ha agregado el nuevo firmante

En este paso, verificaremos que el nuevo firmante que agregamos en el paso anterior se ha agregado correctamente a los datos de confianza del repositorio.

Para hacer esto, volveremos a utilizar el comando docker trust signer, tal como hicimos en el primer paso para inspeccionar los firmantes originales. Esta vez, inspeccionaremos los firmantes del repositorio donde agregamos el nuevo firmante.

Recuerde que agregamos el firmante my-new-signer al hipotético repositorio your-dockerhub-user/my-image. Inspeccionemos los firmantes de este repositorio. Recuerde reemplazar your-dockerhub-user con el marcador de posición que usamos en el paso anterior.

docker trust signer your-dockerhub-user/my-image

Este comando consultará el registro de Docker para obtener los datos de confianza asociados con el repositorio your-dockerhub-user/my-image y listará todos los firmantes.

Ahora debería ver una salida que incluya tanto el firmante original (si había uno) como el nuevo firmante my-new-signer que agregó en el paso anterior. La salida mostrará el nombre de cada firmante y su correspondiente ID de clave.

Signers for your-dockerhub-user/my-image

SIGNER              KEYS
my-new-signer       <key ID of the new signer>

La presencia de my-new-signer en la salida confirma que el firmante se agregó correctamente a los datos de confianza del repositorio. Esto significa que las imágenes firmadas con la clave pública asociada a my-new-signer ahora se considerarán de confianza para este repositorio cuando la Confianza en el contenido de Docker (Docker Content Trust) esté habilitada.

Resumen

En este laboratorio, aprendimos cómo gestionar firmantes para repositorios de Docker utilizando la Confianza en el contenido de Docker (Docker Content Trust). Comenzamos habilitando la Confianza en el contenido de Docker para garantizar la integridad de las imágenes y la verificación del publicador. Luego, practicamos la inspección de los firmantes actuales de un repositorio, específicamente de la imagen library/ubuntu, utilizando el comando docker trust signer, que mostró el firmante existente y su ID de clave.

Después de la inspección, pasamos al proceso de agregar un nuevo firmante a un repositorio utilizando el comando docker trust signer add. Este paso es crucial para permitir que otras entidades firmen imágenes para un repositorio específico. Si bien no se proporcionaron todos los detalles sobre cómo agregar un firmante en el extracto, el objetivo del laboratorio es demostrar esta capacidad. El último paso, verificar la adición del nuevo firmante, implicaría volver a inspeccionar los firmantes del repositorio para confirmar que el firmante recién agregado está en la lista, lo que garantizaría la finalización exitosa del proceso.