En esta página, se explica cómo verificar la firma en los artefactos de Assured OSS.
Esta página solo se aplica al nivel gratuito. En el nivel Premium, consulta Accede a los metadatos de seguridad y verifica los paquetes.
Verificación de paquetes
Las firmas de paquetes se almacenan por separado del paquete en un bucket de Cloud Storage en formato zip.
Puedes verificar las firmas con la herramienta de verificación de OSS asegurado (aoss-verifier) o con una secuencia de comandos de verificación.
Cómo usar la herramienta aoss-verifier
Antes de usar esta herramienta, asegúrate de que Go esté instalado en tu sistema. Si Go no está instalado, instálalo desde el sitio web de Go.
Para verificar la autenticidad y la integridad de los paquetes de software de código abierto, instala la herramienta aoss-verifier.
Exporta
$(go env GOPATH)/biny ejecuta el comandoaoss-verifier verify-package.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATH \ [--disable_certificate_verification] \ [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \ [--disable_deletes]Reemplaza lo siguiente:
- LANGUAGE: Es el lenguaje del paquete de programación, ya sea
javaopython. El valor debe estar en minúsculas. - PACKAGE_ID: Para Java, es groupId:artifactId y, para Python, es packageName. El valor debe estar en minúsculas.
- VERSION: Es la versión del paquete.
- ARTIFACT_PATH: Es la ruta de acceso al archivo de datos en tu directorio local que deseas verificar. Usa las siguientes extensiones de nombre de archivo:
- Extensión de archivo
jarpara un paquete de Java - Extensión de archivo
whlpara un paquete de Python
- Extensión de archivo
--disable_certificate_verificationes una marca opcional que omite la coincidencia del certificado de hoja con el certificado raíz a través de la cadena de certificados, si se usa.--temp_downloads_pathes una marca opcional para establecer la ruta de acceso en la que deseas descargar los archivos. (reemplaza TEMP_DOWNLOADS_DIR_PATH). Si no se configura esta marca, los archivos se descargan en la carpetatmp_downloadsdel directorio actual.--disable_deleteses una marca opcional que conserva los archivos descargados. De forma predeterminada, la herramienta limpia todos los archivos descargados.- LANGUAGE: Es el lenguaje del paquete de programación, ya sea
Consulta el archivo README para obtener más información.
Cómo usar el script de verificación
En esta sección, se describe cómo usar una secuencia de comandos de verificación para verificar las firmas de los paquetes descargados.
Paso 1: Obtén la URL de firma
La URL del archivo ZIP está disponible en los metadatos de seguridad de cada paquete. El siguiente ejemplo es una muestra de los metadatos de Container Analysis.
Como se muestra en el siguiente ejemplo, puedes encontrar la URL del ZIP de la firma en el campo description: digestUrl.
package {
distribution {
cpe_uri: "cpe:2.3:a:JAVA::com.fasterxml.jackson.core:jackson-databind:2.13.3:*:*:*:*:*:*:*"
maintainer: "<nil>"
url: "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3.jar"
description: "{\n \"artifactMetadataList\": [\n {\n \"digestUrl\": \"gs://cloud-aoss/java/com.fasterxml.jackson.core:jackson-databind/2.13.3/jackson-databind-2.13.3_binary_2022-10-12T06:54:05Z.zip\"\n }\n ]\n}"
}
distribution {
cpe_uri: "cpe:2.3:a:JAVA::com.fasterxml.jackson.core:jackson-databind:2.13.3:*:*:*:*:*:*:*"
url: "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3-sources.jar"
description: "{\n \"digestUrl\": \"gs://cloud-aoss/java/com.fasterxml.jackson.core:jackson-databind/2.13.3/jackson-databind-2.13.3-sources_source_2022-10-12T06:54:05Z.zip\"\n}"
}
}
Ejemplo de metadatos de Cloud Storage (buildInfo.json file). Como se muestra en el siguiente ejemplo, puedes obtener la URL del ZIP de la firma desde el campo externalRefs : referenceLocator.
"packages": [
{
"SPDXID": "SPDXRef-Package-logback-core-1.2.11.jar",
"checksums": [
{
"algorithm": "SHA256",
"checksumValue": "c847e0e310acda8bc1347c9d9cc051e91210b9f943e131fceb5034c2f0c9a5d8"
}
],
"downloadLocation": "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/ch/qos/logback/logback-core/1.2.11/logback-core-1.2.11.jar",
"externalRefs": [
{
"referenceCategory": "SECURITY",
"referenceLocator": "cpe:2.3:a:*:JAVA\\:\\:ch\\.qos\\.logback\\:logback\\-core:1\\.2\\.11:*:*:*:*:*:*:*",
"referenceType": "cpe23Type"
},
{
"referenceCategory": "OTHER",
"referenceLocator": "gs://cloud-aoss/java/ch.qos.logback:logback-core/1.2.11/logback-core-1.2.11_binary_2022-10-12T14:19:11Z.zip",
"referenceType": "digestURL"
}
],
Puedes usar el archivo zip de firma local para la verificación manual o la URL de Cloud Storage directamente para usar la secuencia de comandos de verificación. Puedes descargar el archivo signature.zip con los siguientes pasos:
Configura la autenticación con las credenciales predeterminadas de la aplicación (ADC).
Descarga
signature.zipcon el siguiente comando:gcloud storage cp SIGNATURE_ZIP_URL PATH_TO_LOCAL_STORE --recursiveReemplaza lo siguiente:
- SIGNATURE_ZIP_URL: Es la URL del ZIP de la firma.
- PATH_TO_LOCAL_STORE: Es la ruta de acceso local en la que deseas descargar el archivo.
Paso 2: Obtén el certificado raíz
Para acceder al certificado raíz, usa la siguiente URL:
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
Puedes descargar el certificado de forma local o usar el vínculo del certificado directamente. Para descargar el certificado, ejecuta el siguiente comando:
curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
Reemplaza PATH_TO_LOCAL_STORE por la ruta de acceso local en la que deseas descargar el certificado.
Paso 3: Obtén la ubicación del archivo del paquete
El archivo que verificaremos es el archivo .jar para los paquetes de Java y el archivo .whl para los paquetes de Python. Ese archivo sería el PATH_TO_DATA_FILE para la verificación.
Paso 4: Verificación
Puedes verificar manualmente el ZIP de la firma siguiendo los pasos que se indican en Verificación manual de la firma o usar la secuencia de comandos de verificación.
Para verificar con la secuencia de comandos de verificación, ejecuta los siguientes comandos:
Descarga la secuencia de comandos de verificación y otorga permisos.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shEjecuta la secuencia de comandos de verificación y verifica. Puedes usar las URLs remotas o las rutas locales para el archivo ZIP de firma y el certificado raíz.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url SIGNATURE_ZIP_URL --root_cert_url ROOT_CERT_URLReemplaza lo siguiente:
- PATH_TO_DATA_FILE con la ruta de acceso al archivo del paquete identificado en el paso 3
- SIGNATURE_ZIP_URL con la URL del archivo zip de la firma que obtuviste en el paso 1.
- ROOT_CERT_URL con la URL del certificado raíz que obtuviste en el paso 2.
Verificación de metadatos
En esta sección, se explica cómo puedes verificar la firma en los metadatos de OSS asegurado a los que se accede con Cloud Storage.
Usa la herramienta aoss-verifier
Usa la herramienta de aoss-verifier para verificar los metadatos.
Antes de usar esta herramienta, instala Go.
Instala la herramienta aoss-verifier.
Exporta
$(go env GOPATH)/biny ejecuta el comandoaoss-verifier verify-metadata.aoss-verifier verify-metadata \ --metadata_type TYPE \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ [--disable_certificate_verification] \ [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \ [--disable_deletes]Reemplaza lo siguiente:
- TYPE: Los valores posibles son
buildinfo,vexinfoyhealthinfo. - LANGUAGE: Es el lenguaje del paquete de programación, ya sea
javaopython. El valor debe estar en minúsculas. - PACKAGE_ID: En Java, el formato es groupId:artifactId. En Python, el formato es packageName. El valor debe estar en minúsculas.
- VERSION: Es la versión del paquete.
--disable_certificate_verificationes una marca opcional que omite la coincidencia del certificado de hoja con el certificado raíz a través de la cadena de certificados, si se usa.--temp_downloads_pathes una marca opcional para establecer la ruta de acceso en la que deseas descargar los archivos (reemplaza TEMP_DOWNLOADS_DIR_PATH). Si no se establece esta marca, los archivos se descargan en la carpetatmp_downloadsdel directorio actual.--disable_deleteses una marca opcional que conserva los archivos descargados. De forma predeterminada, la herramienta limpia todos los archivos descargados.- TYPE: Los valores posibles son
Para obtener más información, consulta el archivo README.
Cómo usar el script de verificación
En esta sección, se describe cómo usar una secuencia de comandos de verificación para verificar el archivo de metadatos de seguridad.
Paso 1: Obtén el archivo ZIP de firma y el archivo de metadatos
Podemos acceder a los metadatos como se muestra en Access Metadata. El archivo de metadatos estará presente con el archivo signature.zip.
Ejemplo: Contenido de buildInfo.zip
buildInfo.json
signature.zip
buildInfo.json es el archivo de metadatos que se debe verificar y signature.zip es el ZIP de firma.
Paso 2: Obtén el certificado raíz
Usa el siguiente vínculo de URL para obtener el certificado raíz:
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
Puedes descargar el certificado de forma local o usar el vínculo del certificado directamente. Para descargar el certificado, ejecuta el siguiente comando:
curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
Reemplaza PATH_TO_LOCAL_STORE por la ruta de acceso local en la que deseas descargar el certificado.
Paso 3: Verificación
Puedes verificar el signature.zip con la verificación manual o con la secuencia de comandos de verificación.
Para verificar con la secuencia de comandos de verificación, ejecuta los siguientes comandos:
Descarga la secuencia de comandos de verificación y otorga permisos.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shEjecuta la secuencia de comandos de verificación y verifica. Debes usar la ruta local para el ZIP de la firma. Para el certificado raíz, puedes usar la URL o la ruta de acceso local. El archivo de datos sería el archivo de metadatos que estamos verificando:
buildInfo.json,vexInfo.jsonohealthInfo.json../signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_local_path SIGNATURE_LOCAL_PATH --root_cert_url ROOT_CERT_URLReemplaza lo siguiente:
PATH_TO_DATA_FILE con el archivo de metadatos que verificamos, como se obtuvo en el paso 1
SIGNATURE_LOCAL_PATH con la URL del archivo ZIP de la firma que obtuviste en el paso 1.
ROOT_CERT_URL con la URL del certificado raíz que obtuviste en el paso 2.
En caso de que quieras usar un certificado local que ya descargaste, usa esta opción:
--root_cert_local ROOT_CERT_LOCALReemplaza ROOT_CERT_LOCAL por la ruta de acceso al certificado local.
Verificación de la secuencia de comandos de utilidad
Assured OSS proporciona tres secuencias de comandos de utilidad. En esta sección, se describe cómo verificar la firma de estos secuencias de comandos.
Generador de Python Requirements.txt
Accede a la firma de este archivo en gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip. Puedes verificar el signature.zip manualmente o con la secuencia de comandos de verificación.
Para verificar rápidamente la firma con la secuencia de comandos de verificación, sigue estos pasos:
Si aún no descargaste el archivo de secuencia de comandos del generador de
requirements.txt, hazlo.gcloud storage cp "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh" . --recursiveRecupera el certificado raíz. El vínculo de la URL es
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt. Puedes descargar el certificado de forma local o usar el vínculo del certificado directamente. Para descargar el certificado, ejecuta el siguiente comando:curl -o PATH_TO_LOCAL_STORE/ca.crt "https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt"Reemplaza PATH_TO_LOCAL_STORE por la ruta de acceso local en la que deseas descargar el certificado.
Descarga la secuencia de comandos de verificación si aún no lo hiciste.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shEjecuta la secuencia de comandos de verificación y verifica.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip" --root_cert_url ROOT_CERT_URLReemplaza lo siguiente:
- PATH_TO_DATA_FILE con la ruta de acceso local de la secuencia de comandos
generator.shque queremos verificar, como se obtuvo en el paso 2. - ROOT_CERT_URL con la URL del certificado raíz. En caso de que quieras usar un certificado local que ya descargaste, ejecuta el siguiente comando:
–root_cert_local ROOT_CERT_LOCALReemplaza ROOT_CERT_LOCAL por la ruta de acceso local al certificado raíz.
- PATH_TO_DATA_FILE con la ruta de acceso local de la secuencia de comandos
Secuencia de comandos de verificación de firma
Accede a la firma de este archivo en gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip. Puedes verificar el signature.zip manualmente o con la secuencia de comandos de verificación.
Para verificar rápidamente la firma con la secuencia de comandos de verificación, sigue estos pasos:
Si aún no descargaste el archivo de secuencia de comandos de verificación de firma, descárgalo.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shRecupera el certificado raíz. El vínculo de la URL es
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt. Puedes descargar el certificado de forma local o usar el vínculo del certificado directamente. Comando para descargar el certificado:curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtReemplaza PATH_TO_LOCAL_STORE por la ruta de acceso local en la que deseas descargar el certificado.
Ejecuta la secuencia de comandos de verificación y verifica.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip" --root_cert_url ROOT_CERT_URLReemplaza lo siguiente:
PATH_TO_DATA_FILE con la ruta de acceso local de la secuencia de comandos de verificación que queremos verificar, como se obtuvo en el paso 2. ROOT_CERT_URL con la URL del certificado raíz. En caso de que quieras usar un certificado local que ya descargaste, usa esta opción:
–root_cert_local ROOT_CERT_LOCALReemplaza ROOT_CERT_LOCAL por la ruta de acceso local del certificado raíz.
Descarga la secuencia de comandos de metadatos
Accede a la firma de este archivo en gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip. Puedes verificar el signature.zip manualmente o con la secuencia de comandos de verificación.
Para verificar rápidamente la firma con la secuencia de comandos de verificación, sigue estos pasos:
Si aún no descargaste el archivo de secuencia de comandos
download_metadata.py, hazlo.gcloud storage cp "gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata.py" . --recursiveRecupera el certificado raíz. El vínculo de la URL es
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt. Puedes descargar el certificado de forma local o usar el vínculo del certificado directamente.Para descargar el certificado, ejecuta el siguiente comando:
curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtReemplaza PATH_TO_LOCAL_STORE por la ruta de acceso local en la que deseas descargar el certificado.
Descarga la secuencia de comandos de verificación.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shEjecuta la secuencia de comandos de verificación y verifica.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip --root_cert_url ROOT_CERT_URLReemplaza lo siguiente:
- PATH_TO_DATA_FILE con la ruta de acceso local de la secuencia de comandos
download_metadata.pyque queremos verificar, como se obtuvo en el paso 2. - ROOT_CERT_URL con la URL del certificado raíz. En caso de que quieras usar un certificado local que ya descargaste, ejecuta el siguiente comando:
–root_cert_local ROOT_CERT_LOCALReemplaza ROOT_CERT_LOCAL por la ruta de acceso local al certificado raíz.
- PATH_TO_DATA_FILE con la ruta de acceso local de la secuencia de comandos
¿Qué sigue?
- Verifica la procedencia de la compilación
- Más información para proteger tu cadena de suministro de software