Integración en Assured OSS para la seguridad del código

Assured Open Source Software (Assured OSS) te permite mejorar la seguridad de tu código mediante los paquetes OSS que Google usa en sus propios flujos de trabajo de desarrollador. Cuando usas Assured OSS, tus desarrolladores pueden aprovechar la experiencia en seguridad que Google aplica para proteger sus propias dependencias de código abierto.

Cuando integras Assured OSS con Security Command Center, puedes hacer lo siguiente:

  • Elige entre más de 3,700 paquetes de Java y Python seleccionados y más populares, incluidos proyectos comunes de inteligencia artificial y aprendizaje automático, como TensorFlow, Pandas y scikit‐learn.
  • Configura un proxy seguro para descargar todos los paquetes de Java, Python y JavaScript con certificaciones de Assured OSS, lo que convierte a Google en un proveedor conocido y confiable.
  • Usa las SBOM y VEX en Assured OSS, que se proporcionan en formatos estándar de la industria, como SPDX y CycloneDX, para obtener más información sobre tus ingredientes.
  • Aumenta la confianza en la integridad de los paquetes que usas a través de la procedencia firmada y de manipulación evidente de Google.
  • Reduce los riesgos de seguridad, ya que Google analiza, encuentra y corrige de forma activa vulnerabilidades nuevas en paquetes seleccionados.

Antes de comenzar

Completa estas tareas antes de finalizar las tareas restantes de esta página.

Activa el nivel Enterprise de Security Command Center

Verifica que el nivel de Security Command Center Enterprise esté activado a nivel de la organización y que completaste los primeros seis pasos de la guía de configuración.

Configura permisos a nivel de la organización

Debes configurar los permisos a nivel de la organización y del proyecto.

  1. Asegúrate de tener los siguientes roles en la organización: Security Center Admin, Organization Admin

    Verifica los roles

    1. En la consola de Google Cloud, ve a la página IAM.

      Ir a IAM
    2. Selecciona la organización.
    3. En la columna Principal, busca la fila que tiene tu dirección de correo electrónico.

      Si tu dirección de correo electrónico no está en esa columna, no tienes ningún rol.

    4. En la columna Función de la fila con la dirección de correo electrónico, verifica si la lista de roles incluye los roles necesarios.

    Otorga los roles

    1. En la consola de Google Cloud, ve a la página IAM.

      Ir a IAM
    2. Selecciona la organización.
    3. Haz clic en Grant access.
    4. En el campo Principales nuevas, ingresa tu dirección de correo electrónico.
    5. En la lista Seleccionar un rol, elige un rol.
    6. Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
    7. Haz clic en Guardar.

Configura permisos a nivel de proyecto

  1. Asegúrate de tener los siguientes roles en el proyecto: Service Usage Admin, Service Account Admin, Project IAM Admin

    Verifica los roles

    1. En la consola de Google Cloud, ve a la página IAM.

      Ir a IAM
    2. Selecciona el proyecto.
    3. En la columna Principal, busca la fila que tiene tu dirección de correo electrónico.

      Si tu dirección de correo electrónico no está en esa columna, no tienes ningún rol.

    4. En la columna Función de la fila con la dirección de correo electrónico, verifica si la lista de roles incluye los roles necesarios.

    Otorga los roles

    1. En la consola de Google Cloud, ve a la página IAM.

      Ir a IAM
    2. Selecciona el proyecto.
    3. Haz clic en Grant access.
    4. En el campo Principales nuevas, ingresa tu dirección de correo electrónico.
    5. En la lista Seleccionar un rol, elige un rol.
    6. Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
    7. Haz clic en Guardar.

Configura Google Cloud CLI

Puedes usar las muestras de gcloud CLI en esta página desde cualquiera de los siguientes entornos de desarrollo:

  • Cloud Shell: Para usar una terminal en línea con la CLI de gcloud ya configurada, activa Cloud Shell.

    En la parte inferior de esta página, se inicia una sesión de Cloud Shell y se muestra una ventana de línea de comandos. La sesión puede tardar unos segundos en inicializarse.

  • Shell local: Para usar la CLI de gcloud en un entorno de desarrollo local, instala e inicializa la CLI de gcloud.

Configurar Assured OSS

Console

  1. En la consola de Google Cloud, ve a la página Descripción general de riesgos de Security Command Center.

    Ir a Descripción general de riesgos

  2. Verifica que estés viendo la organización en la que activaste el nivel de Security Command Center Enterprise.

  3. Haz clic en Ver la guía de configuración.

  4. Haz clic en Set up code security.

  5. Selecciona una cuenta de servicio nueva o las cuentas de servicio existentes a las que deseas agregar los permisos de Assured Source Software.

  6. Selecciona el proyecto de Google Cloud en el que deseas ubicar los recursos de Assured OSS.

  7. Haz clic en Configurar Assured OSS.

    El proceso de configuración completa automáticamente lo siguiente:

    • Si se selecciona, crea la cuenta de servicio nueva assuredoss@PROJECT_ID.gservicesaccount.com.
    • Asigna la función de usuario de Assured OSS a la cuenta de servicio designada para usarla con Assured OSS.
    • Asigna el rol de administrador de Assured OSS a la cuenta de usuario que accedió para que la cuenta pueda configurar el servicio.
    • Habilita la API de Assured Open Source Software y, si aún no está habilitada, la API de Artifact Registry.
    • Configura el servicio de proxy de Assured OSS en una instancia de Artifact Registry en el proyecto que seleccionaste. Se aprovisiona un repositorio para cada lenguaje (Java, Python y JavaScript). Estos repositorios pueden extraer automáticamente paquetes de la cartera seleccionada. Si un paquete no está disponible como parte de la cartera seleccionada, los repositorios redireccionan la solicitud a los repositorios canónicos. El servicio de proxy solo es compatible con la región de EE.UU.
    • Te otorga permisos a ti y a la cuenta de servicio para acceder a los metadatos y notificaciones de paquetes de los proyectos que son propiedad de Google.
  8. Crea una clave de cuenta de servicio para cada cuenta de servicio de Assured OSS designada y descarga la clave en formato JSON.

  9. En la línea de comandos de tu máquina local, ejecuta el siguiente comando en el archivo de claves descargado para obtener la string codificada en base64:

    base64 KEY_FILENAME.json
    

    Reemplaza KEY_FILENAME.json por el nombre de la clave de la cuenta de servicio que descargaste.

    Necesitarás la string codificada en base64 cuando configures un repositorio remoto para Assured OSS.

  10. Para descargar los paquetes, usa los extremos que Assured OSS aprovisiona para cada idioma. Toma nota de estos extremos para usarlos más adelante.

    • Java:
      https://us-maven.pkg.dev/PROJECT_ID/assuredoss-java
    • Python:
      https://us-python.pkg.dev/PROJECT_ID/assuredoss-python
    • JavaScript:
      https://us-npm.pkg.dev/PROJECT_ID/assuredoss-javascript

    Reemplaza PROJECT_ID por el ID del proyecto que seleccionaste cuando configuraste Assured OSS.

  11. Haz clic en Siguiente. Configura Assured OSS con el administrador del repositorio de artefactos de tu organización, como JFrog Artifactory o Sonatype Nexus.

gcloud

  1. Autentícate en Google Cloud con una cuenta de usuario que quieras usar para habilitar Assured OSS:

    gcloud auth revoke
    gcloud auth application-default revoke
    gcloud auth login
    
  2. Busca el proyecto en el que deseas ubicar los recursos de Assured OSS:

    gcloud alpha projects search --query="displayName=PROJECT_NAME"
    

    Reemplaza PROJECT_NAME por el nombre del proyecto.

  3. Configura el proyecto en el que deseas ubicar los recursos de Assured OSS:

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID por el identificador del proyecto.

  4. Otorga roles a la cuenta de usuario para configurar Assured OSS:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:email@domain.com \
      --role=roles/assuredoss.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:email@domain.com \
      --role=roles/serviceusage.serviceUsageAdmin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:email@domain.com \
      --role=roles/iam.serviceAccountAdmin
    

    En el ejemplo anterior, email@domain.com es la dirección de correo electrónico de tu cuenta de usuario.

  5. Habilita Assured OSS en el proyecto. Habilitar OSS también habilita la API de Artifact Registry.

    gcloud services enable assuredoss.googleapis.com
    
  6. Si deseas crear una cuenta de servicio nueva para Assured OSS en lugar de usar las cuentas de servicio existentes, completa los siguientes pasos:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --description="Service account for using Assured OSS"
      --display-name="Assured OSS service account"
    

    Reemplaza SERVICE_ACCOUNT_NAME por el nombre de la cuenta de servicio (por ejemplo, assuredoss).

  7. Configura las cuentas de servicio para Assured OSS:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role roles/assuredoss.user
    

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio (por ejemplo, assuredoss).
    • PROJECT_ID: Es el identificador del proyecto.
  8. Configura el servicio de proxy de Assured OSS en una instancia de Artifact Registry mediante la creación de repositorios de Assured OSS. Debes crear repositorios para todos los lenguajes. El servicio de proxy de Assured OSS que aprovisiona los repositorios solo admite la región de EE.UU.

    alias gcurlj='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -X'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-java   -d '{"format": "MAVEN", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-javascript   -d '{"format": "NPM", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-python   -d '{"format": "PYTHON", "mode": "AOSS_REPOSITORY"}'
    

    Reemplaza PROJECT_ID por el ID del proyecto que seleccionaste cuando configuraste Assured OSS.

    Estos repositorios pueden extraer automáticamente paquetes de la cartera seleccionada. Si un paquete no está disponible como parte de la cartera seleccionada, los repositorios redireccionan la solicitud a los repositorios canónicos.

  9. Crea una clave de cuenta de servicio para cada cuenta de servicio de Assured OSS y descarga la clave en formato JSON.

  10. En la línea de comandos, ejecuta el siguiente comando en el archivo de claves descargado para obtener la string codificada en base64:

    base64 KEY_FILENAME.json
    

    Reemplaza KEY_FILENAME.json por el nombre de la clave de la cuenta de servicio que descargaste.

    Necesitarás la string codificada en base64 cuando configures un repositorio remoto para Assured OSS.

  11. Para descargar los paquetes, usa los extremos aprovisionados por Assured OSS para cada idioma. Toma nota de estos extremos:

    • Java:
      https://us-maven.pkg.dev/PROJECT_ID/assuredoss-java
    • Python:
      https://us-python.pkg.dev/PROJECT_ID/assuredoss-python
    • JavaScript:
      https://us-npm.pkg.dev/PROJECT_ID/assuredoss-javascript

    Reemplaza PROJECT_ID por el ID del proyecto que seleccionaste cuando configuraste Assured OSS.

  12. Configura Assured OSS para descargar paquetes con el administrador del repositorio de artefactos de tu organización, como JFrog Artifactory o Sonatype Nexus.

  13. De manera opcional, consulta los paquetes disponibles de Java, Python y JavaScript:

    gcloud auth revoke
    gcloud auth application-default revoke
    gcloud auth login --cred-file=KEY_FILENAME.json
    

    Reemplaza KEY_FILENAME.json por el nombre de la clave de la cuenta de servicio que descargaste.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILENAME.json
    

    Reemplaza KEY_FILENAME.json por el nombre de la clave de la cuenta de servicio que descargaste.

    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-java/packages"
    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-python/packages"
    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-javascript/packages"
    

    Reemplaza PROJECT_ID por el ID del proyecto que seleccionaste cuando configuraste Assured OSS.

¿Qué sigue?