Verifica las firmas en el nivel gratuito de Assured OSS

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.

  1. Para verificar la autenticidad y la integridad de los paquetes de software de código abierto, instala la herramienta aoss-verifier.

  2. Exporta $(go env GOPATH)/bin y ejecuta el comando aoss-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 java o python. 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 jar para un paquete de Java
      • Extensión de archivo whl para un paquete de Python

    --disable_certificate_verification es 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_path es 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 carpeta tmp_downloads del directorio actual.

    --disable_deletes es una marca opcional que conserva los archivos descargados. De forma predeterminada, la herramienta limpia todos los archivos descargados.

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:

  1. Configura la autenticación con las credenciales predeterminadas de la aplicación (ADC).

  2. Descarga signature.zip con el siguiente comando:

      gcloud storage cp SIGNATURE_ZIP_URL PATH_TO_LOCAL_STORE --recursive
    

    Reemplaza 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:

  1. 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.sh
    
  2. Ejecuta 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_URL
    

    Reemplaza 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.

  1. Instala la herramienta aoss-verifier.

  2. Exporta $(go env GOPATH)/bin y ejecuta el comando aoss-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, vexinfo y healthinfo.
    • LANGUAGE: Es el lenguaje del paquete de programación, ya sea java o python. 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_verification es 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_path es 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 carpeta tmp_downloads del directorio actual.

    --disable_deletes es una marca opcional que conserva los archivos descargados. De forma predeterminada, la herramienta limpia todos los archivos descargados.

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:

  1. 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.sh
    
  2. Ejecuta 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.json o healthInfo.json.

      ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_local_path SIGNATURE_LOCAL_PATH --root_cert_url ROOT_CERT_URL
    

    Reemplaza 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_LOCAL
      

      Reemplaza 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:

  1. Configura la autenticación.

  2. 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" . --recursive
    
  3. Recupera 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.

  4. 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.sh
    
  5. 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/python-requirements-txt/v1.0/generator-sig.zip" --root_cert_url ROOT_CERT_URL
    

    Reemplaza lo siguiente:

    • PATH_TO_DATA_FILE con la ruta de acceso local de la secuencia de comandos generator.sh 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, ejecuta el siguiente comando:
    –root_cert_local ROOT_CERT_LOCAL
    

    Reemplaza ROOT_CERT_LOCAL por la ruta de acceso local al certificado raíz.

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:

  1. Configura la autenticación.

  2. 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.sh
    
  3. Recupera 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.crt
    

    Reemplaza PATH_TO_LOCAL_STORE por la ruta de acceso local en la que deseas descargar el certificado.

  4. 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_URL
    

    Reemplaza 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_LOCAL
    

    Reemplaza 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:

  1. Configura la autenticación.

  2. 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" . --recursive
    
  3. Recupera 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.

  4. 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.sh
    
  5. 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/python-download-metadata/v1.1/download_metadata-sig.zip --root_cert_url ROOT_CERT_URL
    

    Reemplaza lo siguiente:

    • PATH_TO_DATA_FILE con la ruta de acceso local de la secuencia de comandos download_metadata.py 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, ejecuta el siguiente comando:
    –root_cert_local ROOT_CERT_LOCAL
    

    Reemplaza ROOT_CERT_LOCAL por la ruta de acceso local al certificado raíz.

¿Qué sigue?