A partir de abril de 2024, las nuevas instancias de Container Registry Enterprise Edition son compatibles con la especificación de imagen y distribución de Open Container Initiative (OCI) V1.1.0, lo que incluye la compatibilidad con Reference Types. La Referrers API crea un grafo estructurado que vincula SBOM, firmas y resultados de análisis de vulnerabilidades directamente con sus imágenes asociadas, y elimina la necesidad de usar convenciones de nombres de etiquetas para rastrear artefactos de la cadena de suministro. Puede almacenar, gestionar y distribuir estos artefactos de la misma manera que gestiona las imágenes de contenedor.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un cliente OCI Registry As Storage (ORAS) instalado en su máquina local. Para obtener más información, consulte Installation.
Docker instalado en su máquina local. Para obtener más información, consulte Install and use Docker and Docker Compose.
Una lista de control de acceso (ACL) de virtual private cloud (VPC) configurada o el acceso a Internet habilitado para la instancia de Container Registry Enterprise Edition. Este tema utiliza acceso a Internet. Para obtener más información, consulte Configure internet access control.
La contraseña de su instancia de Container Registry Enterprise Edition. Para restablecer una contraseña olvidada, configure las credenciales de acceso. Para obtener más información, consulte Configure access credentials.
Paso 1: Asociar una imagen de contenedor con sus artefactos derivados mediante la Referrers API
La Referrers API, introducida en OCI v1.1.0, vincula artefactos derivados (SBOM, firmas y resultados de análisis de vulnerabilidades) directamente a una imagen de contenedor. Todos los artefactos asociados se pueden descubrir mediante un único grafo de relaciones, lo que simplifica la seguridad de la cadena de suministro y las auditorías de cumplimiento en comparación con los enfoques basados en etiquetas.
Los siguientes pasos generan el SBOM para golang:1.20, lo adjuntan a la imagen mediante oras attach y verifican la asociación con oras discover.
Si docker sbom no está disponible en su entorno, instale primero el componente sbom-cli-plugin.
Este ejemplo utiliza la imagen alojada en <Name of the Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20.
-
Inicie sesión en la instancia de Container Registry Enterprise Edition.
Después de iniciar sesión correctamente, se muestra
Login Succeeded.docker login <Name of the Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com Username: ****@test.com Password: Login Succeeded -
Genere el SBOM para la imagen de contenedor.
docker sbom <Name of the Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 --format spdx-json -o sbom.jsomSalida esperada:

-
Adjunte el SBOM a la imagen de contenedor.
oras attach --distribution-spec v1.1-referrers-api <Name of the Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 sbom.jsom --artifact-type example/sbomSalida esperada:

-
Verifique la asociación entre la imagen de contenedor y el SBOM.
oras discover --distribution-spec v1.1-referrers-api <Name of the Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20Salida esperada:

Paso 2: Distribuir una imagen de contenedor y sus artefactos derivados entre instancias
Container Registry Enterprise Edition permite distribuir imágenes de contenedor y sus artefactos derivados asociados entre instancias mediante herramientas como el cliente ORAS. El indicador -r en el comando oras cp copia de forma recursiva todos los referrers adjuntos a la imagen, de modo que el SBOM y cualquier otro artefacto asociado se transfieren en una sola operación.
Este ejemplo copia golang:1.20 y su SBOM asociado desde una instancia de origen en la región China (Hangzhou) hacia una instancia de destino en la región China (Beijing).
-
Inicie sesión en la instancia de destino de Container Registry Enterprise Edition.
Después de iniciar sesión correctamente, se muestra
Login Succeeded.docker login <Name of the destination Container Registry Enterprise Edition instance>-registry.cn-beijing.cr.aliyuncs.com Username: ****@test.com Password: Login Succeeded -
Copie la imagen de contenedor y su SBOM asociado a la instancia de destino.
$ oras cp -r --from-distribution-spec v1.1-referrers-api --to-distribution-spec v1.1-referrers-api <Name of the source Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 <Name of the destination Container Registry Enterprise Edition instance>-registry.cn-beijing.cr.aliyuncs.com/library/golang:1.20Salida esperada:

-
Compruebe que el SBOM esté presente en la instancia de destino.
oras discover --distribution-spec v1.1-referrers-api <Name of the destination Container Registry Enterprise Edition instance>-registry.cn-beijing.cr.aliyuncs.com/library/golang:1.20Salida esperada:
