Assured Open Source Software (Assured OSS) proporciona metadatos de seguridad para cada paquete y versión de paquete disponibles. Puedes acceder a estos metadatos en Artifact Analysis para revisar los detalles de la compilación, el estado de las vulnerabilidades, los resultados de las pruebas y la información de la licencia.
Este documento solo se aplica al nivel gratuito. Para obtener instrucciones sobre cómo acceder a los metadatos con Cloud Storage, consulta Accede a los metadatos con Cloud Storage.
Metadatos de seguridad
Artifact Analysis proporciona almacenamiento de metadatos según el modelo de código abierto Grafeas. Se proporciona la siguiente información para cada versión del paquete:
Una PackageNote para cada versión del paquete que Assured OSS lance. La nota del paquete contiene lo siguiente:
distributionen el que cadadistributioncorresponde a un artefacto que proporciona Assured OSS. Incluye la ubicación y el resumenurl(desde donde se pueden descargar la firma y el hash) para las fuentes binarias y reproducibles.relatedURLque contiene vínculos a metadatos, como la procedencia de la compilación, la certificación de pruebas y las vulnerabilidades.
Un BuildOccurrence. El vínculo a esta ocurrencia de compilación se proporciona en la sección
relatedURLde la nota del paquete junto a la etiquetaBUILD_OCCURRENCE. ElintotoStatementen el caso de compilación contiene la procedencia de SLSA v0.2.Un segundo BuildOccurrenance. El vínculo a esta ocurrencia de compilación se proporciona en la sección
relatedURLde la nota del paquete junto a la etiquetaORIGINAL_SOURCE_PROVENANCE. Este archivo contiene los detalles de la fuente original (GitHub) en forma de Fuente.Un AttestationOccurrence. El vínculo a esta ocurrencia de certificación se proporciona en la sección
relatedURLde la nota del paquete junto a la etiquetaTEST_OCCURRENCE. La carga útil serializada en la certificación contiene JSON que representa todas las pruebas de seguridad realizadas en la versión del paquete.Un segundo AttestationOccurrence. El vínculo a esta ocurrencia de certificación se proporciona en la sección
relatedURLde la nota del paquete junto a la etiquetaPACKAGE_ATTESTATION_OCCURRENCE. La carga útil serializada de JSON en la certificación es la carga útil de la nota del paquete y su firma. Esta certificación se usa para verificar la integridad del contenido de la nota del paquete.Una VulnerabilityNote y una VulnerabilityOccurrence para cada vulnerabilidad asociada con el paquete. La nota y el caso combinados proporcionan información sobre las vulnerabilidades, como el resumen o la descripción de la vulnerabilidad, la gravedad, la puntuación de CVSSV3, la información de la versión afectada y corregida, y la solución.
Accede a los metadatos de seguridad de Artifact Analysis
Puedes acceder a los metadatos de seguridad de Artifact Analysis con los clientes de la API de Artifact Analysis, que están disponibles en diferentes lenguajes. Para comenzar a usar las bibliotecas cliente de Cloud para la API de Artifact Analysis, consulta Instala las bibliotecas cliente de Artifact Analysis requeridas.
Para acceder a los metadatos de seguridad, sigue estos pasos:
Paso 1: Configura la autenticación
Configura la autenticación con las credenciales predeterminadas de la aplicación (ADC).
Paso 2: Recupera los metadatos de seguridad
Para recuperar metadatos de seguridad, crea un paquete note_name con la siguiente información:
- Project_ID: Es el identificador alfanumérico de tu proyecto de Google Cloud .
- Package Language: Java o Python. Debe estar en mayúsculas.
- Package_ID: para Java, es groupId_artifactId y para Python, es packageName. Este valor distingue mayúsculas de minúsculas. Las mayúsculas y minúsculas válidas para el nombre de la versión del paquete se pueden encontrar en Enumera todos los paquetes en Assured OSS.
- Version: Es la versión del paquete.
El note_name debe tener la siguiente estructura:
projects/<project_id>/notes/<language>-<package_id>-<version>.
Por ejemplo: projects/cloud-aoss/notes/JAVA-org.apache.commons_commons-compress-1.21.
Opción 1:
Si usas las bibliotecas cliente de Container Analysis, usa getNotes con note_name
para consultar PackageNote. La PackageNote tiene vínculos a otras notas y
repeticiones.
Opción 2:
Si usas el comando curl, usa el siguiente comando:
curl -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" $URL
- Para Java, usa la URL:
https://containeranalysis.googleapis.com/v1/projects/cloud-aoss/notes/JAVA-org.jsoup_jsoup-1.15.2 - Para Python, usa la URL:
https://containeranalysis.googleapis.com/v1/projects/cloud-aoss/notes/PYTHON-Flask-Cors-3.0.10
Metadatos de muestra
{
"name": "projects/cloud-aoss/notes/JAVA-org.jsoup_jsoup-1.15.2",
"kind": "PACKAGE",
"relatedUrl": [
{
"url": "projects/cloud-aoss/occurrences/621d7e7b-8e6c-4313-b24b-eae3a1d1b884",
"label": "ORIGINAL_SOURCE_PROVENANCE"
},
{
"url": "https://containeranalysis.googleapis.com/v1/projects/cloud-aoss/occurrences/a0967d97-634c-4066-b6da-0a723273a165",
"label": "BUILD_OCCURRENCE"
},
{
"url": "projects/cloud-aoss/occurrences/6005db73-7310-44f9-9a36-6ca0174732a1",
"label": "TEST_OCCURRENCE"
},
{
"url": "projects/cloud-aoss/notes/GHSA-gp7f-rwcx-9369",
"label": "VULNERABILITY_GHSA-gp7f-rwcx-9369"
}
],
"createTime": "2022-10-12T06:48:19.162016Z",
"updateTime": "2022-10-18T05:31:15.081736Z",
"package": {
"distribution": [
{
"cpeUri": "cpe:2.3:a:JAVA::org.jsoup:jsoup:1.15.2:*:*:*:*:*:*:*",
"url": "https://us-maven.pkg.dev/…/org/jsoup/jsoup/1.15.2/jsoup-1.15.2.jar",
"description": "..."
},
{
"cpeUri": "cpe:2.3:a:JAVA::org.jsoup:jsoup:1.15.2:*:*:*:*:*:*:*",
"url": "https://us-maven.pkg.dev/…/org/jsoup/jsoup/1.15.2/jsoup-1.15.2-sources.jar",
"description": "..."
}
]}}
Usa los nombres de notas y casos proporcionados en el mapa relatedURL para recuperar
datos adicionales relacionados con la fuente, la compilación, la prueba y la vulnerabilidad. Para ello,
usa las APIs de GetNote y GetOccurrence, o los comandos de curl.
Para BUILD_OCCURRENCE, quita el prefijo inicial de https://containeranalysis.googleapis.com/v1/ cuando uses la API. Para otras entidades, usa las URLs directamente como note_name o occurrence_name en el parámetro de la API.
Secuencia de comandos de Python de muestra
En la siguiente ubicación de Cloud Storage, se encuentra una secuencia de comandos de Python de ejemplo que imprime todos los metadatos descargados, junto con su archivo README:
gs://cloud-aoss/utils/python-download-metadata/v1.1
Sigue estos pasos para descargar la secuencia de comandos con Google Cloud CLI:
Configura la autenticación con las credenciales predeterminadas de la aplicación (ADC).
Instala la biblioteca cliente de container-analysis. En particular, este comando debería instalar lo siguiente:
pip install google-cloud-containeranalysisInstala los paquetes cloud-kms y cryptography con los siguientes comandos:
pip install --upgrade google-cloud-kms pip install --upgrade cryptographyDescarga el
download_metadata.pyen tu sistema con el siguiente comando:gcloud storage cp gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata.py PATH_TO_LOCAL_STORE --recursiveReemplaza PATH_TO_LOCAL_STORE por la ruta de acceso local en la que deseas guardar el archivo.
Descarga el archivo
README.mdque contiene las instrucciones para usar la secuencia de comandos con el siguiente comando:gcloud storage cp gs://cloud-aoss/utils/python-download-metadata/v1.1/README.md PATH_TO_LOCAL_STORE --recursiveReemplaza PATH_TO_LOCAL_STORE por la ruta de acceso local en la que deseas guardar el archivo.
Comando de muestra
python ./download_metadata.py -l 'JAVA' -p 'org.apache.logging.log4j:log4j-core' -v '2.17.1'
Para verificar las firmas en los metadatos de Container Analysis, agrega el siguiente comando a la secuencia de comandos:
python ./download_metadata.py -l 'JAVA' -p 'org.apache.logging.log4j:log4j-core' -v '2.17.1' -s`