Valida tu conexión

Este documento te ayuda a confirmar que tus cuentas de servicio y cuentas de AWS se habilitaron correctamente para acceder al servicio de Assured Open Source Software.

Para validar si tus cuentas de servicio Google Cloud o (solo para el nivel gratuito) tu ID de cuenta de AWS están habilitados para acceder al repositorio de Assured OSS y a la cartera de paquetes seleccionados, enumera los paquetes de Java o Python disponibles con una API. Para ello, puedes llamar directamente a las APIs o usar Cloud Shell para ejecutar una llamada a la API desde la línea de comandos de curl.

Si usas el nivel gratuito, en casos excepcionales, es posible que recibas errores de permiso denegado durante una hora o más después de enviar el formulario de habilitación del cliente.

Este documento se aplica tanto al nivel Premium como al nivel gratuito.

Antes de comenzar

  1. Instala la versión más reciente de la Google Cloud CLI. Si ya instalaste Google Cloud CLI, ejecuta el siguiente comando para asegurarte de tener la versión más reciente:

    gcloud components update
    
  2. Para acceder a Assured OSS con Google Cloud,habilita la API de Artifact Registry para el proyecto principal Google Cloud de las cuentas de servicio que habilitaste para Assured OSS. Si usas el nivel premium, la API se habilita durante la configuración.

  3. Agrega las siguientes URLs a la lista de entidades permitidas de tu red:

    • *.pkg.dev
    • artifactregistry.googleapis.com

Configura la autenticación

Para Google Cloud

  1. Genera y descarga la clave de la cuenta de servicio. Te recomendamos que sigas las prácticas recomendadas para administrar claves de cuentas de servicio.

  2. Si ya accediste a Google Cloud CLI, revoca cualquier autenticación existente:

    gcloud auth revoke
    
  3. Autentícate en Google Cloud:

    gcloud auth login --cred-file=FILEPATH.json
    

    Aquí, FILEPATH es la ruta de acceso a la clave de la cuenta de servicio.

  4. Actualiza las credenciales predeterminadas de la aplicación:

    export GOOGLE_APPLICATION_CREDENTIALS=FILEPATH.json
    

    Aquí, FILEPATH es la ruta de acceso a la clave de la cuenta de servicio.

Para AWS

Estos pasos solo se aplican al nivel gratuito de Assured OSS.

  1. Configura tu instancia de EC2 para permitir la solicitud de credenciales temporales.

    1. Accede a la consola de administración de AWS.
    2. En la consola de administración de AWS, ve al panel de EC2 y selecciona la instancia de EC2 de destino.
    3. Selecciona Actions > Security > Modify IAM Role.
    4. Selecciona Create New IAM Role > Create role.
    5. En el tipo de entidad de confianza, selecciona Servicio de AWS.
    6. Para el caso de uso, elige EC2.
    7. Agrega el permiso AmazonEC2ReadOnlyAccess y haz clic en Siguiente.
    8. Proporciona un nombre significativo para el rol de IAM y haz clic en Siguiente.
    9. Vuelve a Modify IAM Role. Selecciona el rol recién creado y haz clic en Actualizar rol de IAM.
  2. Genera el archivo de configuración de credenciales:

    gcloud iam workload-identity-pools create-cred-config \
    projects/ASSIGNED_PROJECT_NUMBER/locations/global/workloadIdentityPools/aoss-wif-pool/providers/aws-AWS_ACCOUNT_ID-provider \
    --service-account=aoss-wif-aws-AWS_ACCOUNT_ID-sa@ASSIGNED_PROJECT_ID.iam.gserviceaccount.com \
    --aws \
    --output-file=FILEPATH.json
    

    Reemplaza lo siguiente:

    • AWS_ACCOUNT_ID: Número de 12 dígitos de tu cuenta de AWS (por ejemplo, 123456789012).
    • FILEPATH: Es el archivo en el que se guardará la configuración. + ASSIGNED_PROJECT_ID: El Google Cloud ID del proyecto que se te asignó, como se menciona en el correo electrónico de habilitación. + ASSIGNED_PROJECT_NUMBER: El número de proyecto Google Cloud que se te asignó, como se menciona en el correo electrónico de habilitación.

    Si usas AWS IMDSv2, agrega la marca --enable-imdsv2 al comando anterior. Para obtener más información, consulta Crea una configuración de credenciales.

  3. Si ya accediste a Google Cloud CLI, revoca cualquier autenticación existente:

    gcloud auth revoke
    
  4. Autentícate en Google Cloud:

    gcloud auth login --cred-file=FILEPATH.json
    

    Aquí, FILEPATH es la ruta de acceso al archivo de configuración de credenciales.

  5. Actualiza las credenciales predeterminadas de la aplicación:

    export GOOGLE_APPLICATION_CREDENTIALS=FILEPATH.json
    

    Aquí, FILEPATH es la ruta de acceso a la clave de la cuenta de servicio o al archivo de configuración de credenciales.

Para solucionar problemas relacionados con la autenticación, consulta Soluciona problemas de errores de autenticación.

Enumera todos los paquetes de Java disponibles en Assured OSS

Puedes usar una API de REST para enumerar todos los paquetes de Java y sus versiones.

Para el nivel gratuito de Assured OSS, ingresa la siguiente solicitud HTTP:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts"

Para el nivel Premium de Assured OSS, ingresa la siguiente solicitud HTTP:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-java/packages

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

A continuación, se muestra un ejemplo de comando curl para conectarse al repositorio de Java en el nivel gratuito:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts"

La solicitud devuelve una respuesta similar a la siguiente:

  {
    "mavenArtifacts": [
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts/com.alibaba:fastjson:1.2.83",
        "pomUri":
  "us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/alibaba/fastjson/1.2.83/fastjson-1.2.83.pom",
        "groupId": "com.alibaba",
        "artifactId": "fastjson",
        "version": "1.2.83",
        "createTime": "2022-06-24T09:10:05.166879Z",
        "updateTime": "2022-06-24T09:10:05.166879Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts/org.apache.logging.log4j:log4j-api:2.17.1",
        "pomUri":
  "us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/org/apache/logging/log4j/log4j-api/2.17.1/log4j-api-2.17.1.pom",
        "groupId": "org.apache.logging.log4j",
        "artifactId": "log4j-api",
        "version": "2.17.1",
        "createTime": "2022-03-16T12:22:50.113695Z",
        "updateTime": "2022-03-16T12:22:50.113695Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts/org.apache.logging.log4j:log4j-core:2.17.1",
      "pomUri":
  "us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/org/apache/logging/log4j/log4j-core/2.17.1/log4j-core-2.17.1.pom",
        "groupId": "org.apache.logging.log4j",
        "artifactId": "log4j-core",
        "version": "2.17.1",
        "createTime": "2022-03-16T12:26:40.317215Z",
        "updateTime": "2022-03-16T12:26:40.317215Z"
      }
    ]
  }

Si hay muchos paquetes disponibles, es posible que la respuesta de la API se pagine. El token de continuación nextPageToken se muestra en la respuesta cuando la lista está incompleta. nextPageToken representa el último resultado que se muestra. Cuando pasas el valor de nextPageToken al parámetro pageToken de una solicitud posterior, muestras la siguiente página de resultados, comenzando después del último resultado.

Para ver la siguiente página de resultados o aumentar la cantidad de objetos que se muestran por página, usa la siguiente URL:

  "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=NUMBER&pageToken=NEXT_PAGE_TOKEN"

Reemplaza lo siguiente:

  • NUMBER: Es la cantidad de elementos que se mostrarán por página. El valor máximo aceptado es 1,000.
  • NEXT_PAGE_TOKEN: Es el valor del token nextPageToken que se devolvió en la respuesta JSON.

Como alternativa, puedes usar la siguiente secuencia de comandos para recopilar los resultados paginados de la solicitud a la API mencionada en un archivo:

tempFile=$(mktemp)
nextPageToken=""
while
    curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=1000&pageToken=$nextPageToken" > $tempFile
    nextPageToken=$(grep nextPageToken $tempFile | sed 's/  "nextPageToken": "//' | sed 's/.$//')
    grep -v nextPageToken $tempFile >> FILENAME1
    [ -n "$nextPageToken" ]
do
:
done

Opcional: Escribe la lista ordenada de nombres de paquetes Java principales en FILENAME2.

Las siguientes acciones adicionales de la línea de comandos filtran la lista sin procesar de paquetes de Java que se devuelve para proporcionarte una lista solo con los nombres de los paquetes principales.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=1000" \
      | grep artifactId | sort -f | uniq >  FILENAME2

Opcional: Escribe la lista ordenada de las versiones del paquete de Java en FILENAME3.

Las siguientes acciones adicionales de la línea de comandos filtran la lista sin procesar de paquetes de Java que se devuelve para proporcionarte una lista solo con las versiones de los paquetes.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=1000" \
      | grep name | sort -f | uniq >  FILENAME3

Enumera todos los paquetes de Python disponibles en Assured OSS

Puedes usar una API de REST para enumerar todos los paquetes de Python y sus versiones. Estos paquetes están disponibles para Python 3.8.

Para el nivel gratuito de Assured OSS, ingresa la siguiente solicitud HTTP:

  GET https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages

Para el nivel Premium de Assured OSS, ingresa la siguiente solicitud HTTP:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-python/packages"

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

Para enumerar todos los paquetes específicos de tu entorno, usa la secuencia de comandos generator.sh.

El siguiente comando es un ejemplo de comando curl para conectarse al repositorio de Python de OSS asegurado en el nivel gratuito:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages"

La solicitud devuelve una respuesta similar a la siguiente:

  {
  "pythonPackages": [
    {
      "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/Flask:2.1.2",
      "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/flask/Flask-2.1.2-py3-none-any.whl",
        "packageName": "Flask",
        "version": "2.1.2",
        "createTime": "2022-07-13T11:06:54.163313Z",
        "updateTime": "2022-07-13T11:06:54.163313Z"
    },
    {
      "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/ujson:5.3.0",
        "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/ujson/ujson-5.3.0-cp38-cp38-linux_x86_64.whl",
        "packageName": "ujson",
        "version": "5.3.0",
        "createTime": "2022-07-13T11:06:17.263638Z",
        "updateTime": "2022-07-13T11:06:17.263638Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/ujson:5.4.0",
        "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/ujson/ujson-5.4.0-cp38-cp38-linux_x86_64.whl",
        "packageName": "ujson",
        "version": "5.4.0",
        "createTime": "2022-07-13T11:09:00.865162Z",
        "updateTime": "2022-07-13T11:09:00.865162Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/urllib3:1.26.8",
        "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/urllib3/urllib3-1.26.8-py2.py3-none-any.whl",
        "packageName": "urllib3",
        "version": "1.26.8",
        "createTime": "2022-07-13T11:05:56.529484Z",
        "updateTime": "2022-07-13T11:05:56.529484Z"
      }
    ]
  }

Si hay muchos paquetes disponibles, es posible que la respuesta de la API se pagine. El token de continuación nextPageToken se muestra en la respuesta cuando la lista está incompleta. nextPageToken representa el último resultado que se muestra. Cuando pasas el valor de nextPageToken al parámetro pageToken de una solicitud posterior, muestras la siguiente página de resultados, comenzando después del último resultado.

Para ver la siguiente página de resultados o aumentar la cantidad de objetos que se muestran por página, usa la siguiente URL en el nivel gratuito:

  "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=NUMBER&pageToken=NEXT_PAGE_TOKEN"

Reemplaza lo siguiente:

  • NUMBER: Es la cantidad de elementos que se mostrarán por página. El valor máximo aceptado es 1,000.
  • NEXT_PAGE_TOKEN: Es el valor del token nextPageToken que se devolvió en la respuesta JSON.

Como alternativa, puedes usar la siguiente secuencia de comandos para recopilar los resultados paginados de la solicitud a la API mencionada en un archivo.

tempFile=$(mktemp)
nextPageToken=""
while
    curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=1000&pageToken=$nextPageToken" > $tempFile
    nextPageToken=$(grep nextPageToken $tempFile | sed 's/  "nextPageToken": "//' | sed 's/.$//')
    grep -v nextPageToken $tempFile >> FILENAME4
    [ -n "$nextPageToken" ]
do
:
done

Opcional: Escribe la lista ordenada de los nombres de los paquetes principales de Python en FILENAME5.

Las siguientes acciones adicionales de la línea de comandos filtran la lista sin procesar de paquetes de Python que se devuelve para proporcionarte una lista solo con los nombres de los paquetes principales.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=1000" \
      | grep packageName | sort -f | uniq > FILENAME5

Opcional: Escribe la lista ordenada de las versiones del paquete de Python en FILENAME6.

Las siguientes acciones adicionales de la línea de comandos filtran la lista sin procesar de paquetes de Python que se devuelve para brindarte una lista solo con las versiones de los paquetes.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=1000" \
      | grep name | sort -f | uniq >  FILENAME6

Enumera todos los paquetes de Go disponibles en Assured OSS

Puedes usar una API de REST para enumerar todos los paquetes de Go y sus versiones.

Para el nivel gratuito de Assured OSS, ingresa la siguiente solicitud HTTP:

curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
"https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages"

Para el nivel Premium de Assured OSS, ingresa la siguiente solicitud HTTP:

curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-go/packages

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

A continuación, se muestra un ejemplo de comando curl para conectarse al repositorio de Go en el nivel gratuito:

curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages

La solicitud devuelve una respuesta similar a la siguiente:

{
  "packages": [
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fauth",
      "createTime": "2025-08-05T06:04:54.442071Z",
      "updateTime": "2025-08-05T06:04:54.442071Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fauth%2Foauth2adapt",
      "createTime": "2025-08-05T06:04:41.242052Z",
      "updateTime": "2025-08-05T06:04:41.242052Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fcompute%2Fmetadata",
      "createTime": "2025-08-05T06:05:31.140186Z",
      "updateTime": "2025-08-05T06:05:31.140186Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fiam",
      "createTime": "2025-08-05T06:04:54.455300Z",
      "updateTime": "2025-08-05T06:04:54.455300Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Flogging",
      "createTime": "2025-08-05T06:05:36.186851Z",
      "updateTime": "2025-08-05T06:05:36.186851Z"
    }
  ]
}

Si hay muchos paquetes disponibles, es posible que la respuesta de la API se pagine. El token de continuación nextPageToken se muestra en la respuesta cuando la lista está incompleta. nextPageToken representa el último resultado que se muestra. Cuando pasas el valor de nextPageToken al parámetro pageToken de una solicitud posterior, muestras la siguiente página de resultados, comenzando después del último resultado.

Para ver la siguiente página de resultados o aumentar la cantidad de objetos que se muestran por página, usa la siguiente URL:

"https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages?pageSize=NUMBER&pageToken=NEXT_PAGE_TOKEN"

Reemplaza lo siguiente:

  • NUMBER: Es la cantidad de elementos que se mostrarán por página. El valor máximo aceptado es 1,000.
  • NEXT_PAGE_TOKEN: Es el valor del token nextPageToken que se devolvió en la respuesta JSON.

Como alternativa, puedes usar la siguiente secuencia de comandos para recopilar los resultados paginados de la solicitud a la API en un archivo:

tempFile=$(mktemp)
nextPageToken=""
while
    curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages?pageSize=1000&pageToken=$nextPageToken" > $tempFile
    nextPageToken=$(grep nextPageToken $tempFile | sed 's/  "nextPageToken": "//' | sed 's/.$//')
    grep -v nextPageToken $tempFile >> FILENAME7
    [ -n "$nextPageToken" ]
do
:
done

Opcional: Escribe una lista ordenada de los nombres de los paquetes principales de Go en FILENAME8.

Las siguientes acciones filtran la lista sin procesar de módulos de Go que se muestra para brindarte una lista de los nombres de los paquetes principales:

curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
"https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages?pageSize=1000" \
      | grep name | sort -f | uniq >  FILENAME8

Opcional: Escribe una lista ordenada de versiones de paquetes de Go en FILENAME9.

Aunque no hay disponible una solicitud HTTP directa para enumerar todas las versiones de paquetes de Go, puedes enumerar todas las versiones de un paquete de Go específico. Puedes generar una lista completa de todas las versiones de los paquetes de Go enumerando de forma iterativa las versiones de cada paquete de Go que se identifica en la lista de FILENAME8.

Las siguientes acciones filtran la lista sin procesar de versiones de paquetes de Go que se muestra para brindarte una lista de las versiones de paquetes:

grep -o "packages/.*" FILENAME8 | tr -d '",' | cut -d '/' -f 2 | while read package_name; do curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/$package_name/versions | grep name | sort -f | uniq >> FILENAME9; done

¿Qué sigue?