Cómo usar el comando docker trust signer remove para eliminar firmantes

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 el comando docker trust signer remove. Comenzaremos inspeccionando los firmantes actuales de un repositorio para comprender las relaciones de confianza existentes.

Después de la inspección, practicarás la eliminación de un firmante de un solo repositorio y luego verificarás que la eliminación se haya realizado con éxito. Finalmente, aprenderás cómo eliminar un firmante de múltiples repositorios simultáneamente y confirmar los cambios. Este laboratorio te proporcionará experiencia práctica en la gestión de la confianza del contenido en Docker.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") subgraph Lab Skills docker/inspect -.-> lab-555257{{"Cómo usar el comando docker trust signer remove para eliminar firmantes"}} docker/pull -.-> lab-555257{{"Cómo usar el comando docker trust signer remove para eliminar firmantes"}} docker/tag -.-> lab-555257{{"Cómo usar el comando docker trust signer remove para eliminar firmantes"}} 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 del contenido de Docker) te permite verificar la integridad y el publicador de todas las imágenes que utilizas. Cuando la confianza del contenido está habilitada, Docker se asegura de que las imágenes que descargas estén firmadas.

Primero, habilitemos Docker Content Trust. Puedes hacer esto estableciendo la variable de entorno DOCKER_CONTENT_TRUST en 1.

export DOCKER_CONTENT_TRUST=1

Ahora que la confianza del contenido está habilitada, cuando interactúes con las imágenes, Docker verificará las firmas. Para inspeccionar los firmantes de un repositorio, puedes usar el comando docker trust inspect seguido del nombre del repositorio.

Inspeccionemos los firmantes del repositorio ubuntu.

docker trust inspect ubuntu

Deberías ver una salida similar a esta, que muestra los firmantes y sus claves:

No signatures for ubuntu

Esta salida indica que actualmente no hay firmas para el repositorio ubuntu. Esto es lo esperado para muchas imágenes oficiales a menos que hayan habilitado explícitamente la confianza del contenido y la firma.

Intentemos inspeccionar un repositorio que se sabe que tiene firmas, como docker/trusttest. Primero debemos descargar la imagen para asegurarnos de tener los metadatos necesarios.

docker pull docker/trusttest

Ahora, inspeccionemos los firmantes de docker/trusttest.

docker trust inspect docker/trusttest

Deberías ver una salida que enumere los firmantes y sus claves, lo que indica que este repositorio ha sido firmado. La salida mostrará información sobre los firmantes de Targets y Releases.

Signers of docker/trusttest:

ROLE         KEYS
----         ----
Releases     0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest

Signatures for docker/trusttest:

SIGNER     KEYS
------     ----
Releases   0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest

Esta salida confirma que el repositorio docker/trusttest ha sido firmado y enumera las claves asociadas a los firmantes.

Eliminar un firmante de un solo repositorio

En este paso, aprenderemos cómo eliminar un firmante de un solo repositorio de Docker utilizando Docker Content Trust (Confianza del contenido de Docker). Esto es útil cuando la clave de un firmante se ve comprometida o cuando un usuario ya no está autorizado para firmar imágenes de un repositorio específico.

Para eliminar un firmante, utilizamos el comando docker trust signer remove. Este comando requiere el nombre del firmante a eliminar y el repositorio del que se lo eliminará.

Eliminemos el firmante Releases del repositorio docker/trusttest. Recuerde del paso anterior que docker/trusttest tiene un firmante Releases.

docker trust signer remove Releases docker/trusttest

Cuando ejecute este comando, se le pedirá que confirme la eliminación. Escriba y y presione Enter para continuar.

Removing signer "Releases" from docker/trusttest. Are you sure you want to continue? (y/n): y

Después de confirmar, el firmante se eliminará del repositorio especificado. Debería ver una salida que indique la eliminación exitosa.

Successfully removed signer "Releases" from docker/trusttest

Este comando elimina la asociación de la clave pública del firmante Releases con el repositorio docker/trusttest en los datos de confianza almacenados en el servidor notary. No elimina la clave del firmante en sí, solo su autorización para firmar para este repositorio específico.

Verificar la eliminación del firmante

En este paso, verificaremos que el firmante se haya eliminado correctamente del repositorio. Podemos hacer esto utilizando nuevamente el comando docker trust inspect, tal como hicimos en el primer paso.

Es de esperar que después de eliminar el firmante Releases de docker/trusttest en el paso anterior, al ejecutar docker trust inspect docker/trusttest ya no se muestre Releases como firmante.

Inspeccionemos nuevamente los firmantes de docker/trusttest.

docker trust inspect docker/trusttest

Observe detenidamente la salida. Ahora debería ver que el firmante Releases ya no está listado en la sección Signers de docker/trusttest.

Signers of docker/trusttest:

ROLE         KEYS
----         ----
Targets      0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest

Signatures for docker/trusttest:

SIGNER     KEYS
------     ----
Releases   0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest

Note que aunque el firmante Releases se ha eliminado de la lista de Signers autorizados, la sección Signatures aún puede mostrar firmas realizadas por Releases. Esto se debe a que el comando remove elimina la autorización del firmante para firmar imágenes futuras, pero no necesariamente elimina inmediatamente las firmas existentes del servidor notary. Sin embargo, para el propósito de verificar la eliminación del rol del firmante para el repositorio, es suficiente verificar la lista de Signers.

La ausencia de Releases en la sección Signers of docker/trusttest confirma que el firmante se ha eliminado correctamente de este repositorio específico.

Eliminar un firmante de múltiples repositorios

En este paso, aprenderemos cómo eliminar un firmante de múltiples repositorios de Docker simultáneamente utilizando Docker Content Trust (Confianza del contenido de Docker). Esto es eficiente cuando se necesita desautorizar a un firmante en varios repositorios.

El comando docker trust signer remove te permite especificar múltiples repositorios después del nombre del firmante.

Supongamos que tenemos otro repositorio, digamos docker/another - trusttest, que también tiene el firmante Releases. Para eliminar el firmante Releases tanto de docker/trusttest como de docker/another - trusttest con un solo comando, se deben listar ambos nombres de repositorio.

Primero, descarguemos la imagen hello - world para usarla como un segundo repositorio con fines demostrativos. Luego la etiquetaremos para simular otro repositorio.

docker pull hello-world
docker tag hello-world docker/another-trusttest

Ahora, eliminemos el firmante Releases tanto de docker/trusttest como de docker/another - trusttest. Tenga en cuenta que en un escenario real, docker/another - trusttest puede que no tenga el firmante Releases, pero este comando demuestra la sintaxis para eliminar un firmante de múltiples repositorios.

docker trust signer remove Releases docker/trusttest docker/another-trusttest

Se le pedirá que confirme la eliminación para cada repositorio. Escriba y y presione Enter para cada confirmación.

Removing signer "Releases" from docker/trusttest. Are you sure you want to continue? (y/n): y
Successfully removed signer "Releases" from docker/trusttest
Removing signer "Releases" from docker/another-trusttest. Are you sure you want to continue? (y/n): y
Successfully removed signer "Releases" from docker/another-trusttest

La salida confirma que el firmante Releases se ha eliminado de ambos repositorios especificados. Este comando es una forma conveniente de gestionar las autorizaciones de firmantes en múltiples repositorios con una sola acción.

Verificar la eliminación del firmante de múltiples repositorios

En este paso, verificaremos que el firmante se haya eliminado correctamente de ambos repositorios especificados en el paso anterior. Volveremos a utilizar el comando docker trust inspect para cada repositorio.

Primero, inspeccionemos los firmantes de docker/trusttest. Esperamos que el firmante Releases siga estando ausente de la lista de Signers, ya que lo eliminamos en un paso anterior y confirmamos su eliminación.

docker trust inspect docker/trusttest

La salida debe mostrar que Releases no está listado en Signers of docker/trusttest.

Signers of docker/trusttest:

ROLE         KEYS
----         ----
Targets      0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest

Signatures for docker/trusttest:

SIGNER     KEYS
------     ----
Releases   0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest

Ahora, inspeccionemos los firmantes de docker/another-trusttest. Dado que intentamos eliminar el firmante Releases de este repositorio también, esperamos que también esté ausente de la lista de Signers de este repositorio.

docker trust inspect docker/another-trusttest

La salida para docker/another-trusttest debe indicar que no hay firmantes, ya que hello-world (que etiquetamos como docker/another-trusttest) no está firmado por defecto, y intentamos eliminar el firmante Releases (que no estaba allí inicialmente para esta etiqueta específica).

No signatures for docker/another-trusttest

Esto confirma que el comando docker trust signer remove, cuando se utiliza con múltiples nombres de repositorio, intenta eliminar el firmante especificado de cada repositorio listado. La verificación para docker/trusttest muestra la eliminación exitosa de un repositorio que previamente tenía el firmante, y la verificación para docker/another-trusttest muestra el estado de un repositorio que no tenía el firmante (y, por lo tanto, el intento de eliminación no lo agregó).

Resumen

En este laboratorio, aprendimos cómo gestionar firmantes para repositorios de Docker utilizando el comando docker trust. Comenzamos habilitando Docker Content Trust (Confianza del contenido de Docker) e inspeccionando los firmantes actuales de un repositorio utilizando docker trust inspect. Esto nos permitió ver qué claves estaban asociadas con la firma de imágenes en un repositorio dado.

Posteriormente, practicamos la eliminación de un firmante de un solo repositorio y verificamos la eliminación utilizando docker trust inspect nuevamente. Finalmente, extendimos este conocimiento para eliminar un firmante de múltiples repositorios simultáneamente y confirmamos la eliminación exitosa en todos los repositorios especificados. Esta experiencia práctica demostró la aplicación práctica del comando docker trust signer remove para gestionar la confianza del contenido en un entorno de Docker.