En este documento, se describe cómo configurar la autenticación de los repositorios upstream de la Central de Maven para repositorios remotos de Artifact Registry.
En este documento, se supone que ya creaste un repositorio remoto de Maven de Artifact Registry y una cuenta de Maven Central.
Para obtener más información sobre los repositorios remotos, consulta la Descripción general de los repositorios remotos.
Funciones obligatorias
Si quieres obtener los permisos que necesitas para configurar la autenticación en Maven Central para repositorios remotos, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
-
Administrador de Artifact Registry (
roles/artifactregistry.admin
) -
Administrador de Secret Manager (
roles/secretmanager.admin
)
Si quieres obtener más información para otorgar roles, consulta Administra el acceso.
Es posible que también puedas obtener los permisos necesarios a través de los roles personalizados o de otros roles predefinidos.
Crea un token de acceso personal de la central de Maven
- Accede a Maven Central.
Crea un access-token.
Usa el código de usuario de tu token de acceso personal como nombre de usuario cuando agregues tus credenciales a Artifact Registry. Para obtener más información sobre la administración de tokens de usuario en Maven Central, consulta Configuración de seguridad con tokens de usuario.
Guarda tu token de acceso personal en una versión del secreto
- Crea un Secret en Secret Manager.
- Guarda tu token de acceso personal de la Central de Maven como una versión secreta.
Otorga a la cuenta de servicio de Artifact Registry acceso a tu secreto
El agente de servicio de Artifact Registry es una cuenta de servicio administrada por Google que actúa en nombre de Artifact Registry cuando interactúa con los servicios de Google Cloud. Si quieres permitir que el agente de servicio use los secretos almacenados en Secret Manager, debes otorgarle permiso para ver tu versión del secreto.
El identificador del agente de servicio es el siguiente:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER es el número del proyecto de Google Cloud en el que se ejecuta Artifact Registry.
Para otorgar al agente de servicio de Artifact Registry la función de Descriptor de acceso a secretos de Secret Manager, haz lo siguiente:
Console
-
Ve a la página Secret Manager en la consola de Google Cloud.
-
En la página Secret Manager, haz clic en la casilla de verificación junto al nombre del secreto.
-
Si aún no está abierto, haz clic en Mostrar panel de información para abrir el panel.
-
En el panel de información, haz clic en Agregar principal.
-
En el área de texto Principales nuevas, ingresa las direcciones de correo electrónico de los miembros que deseas agregar.
-
En el menú desplegable Selecciona una función, selecciona Secret Manager y, luego, Administrador y descriptor de acceso a Secretos.
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
En el ejemplo anterior, member es un miembro de IAM, como un usuario, un grupo o una cuenta de servicio.
C#
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
API
Nota: A diferencia de los otros ejemplos, esto reemplaza toda la política de IAM.
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:setIamPolicy" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"policy\": {\"bindings\": [{\"members\": [\"member\"], \"role\": \"roles/secretmanager.secretAccessor\"}]}}"
Si quieres obtener más información para otorgar o revocar el acceso a los secretos, consulta Administra el acceso a los secretos.
Agrega credenciales de Maven Central a tu repositorio remoto
Para actualizar tu repositorio remoto con tus credenciales de Maven Central, haz lo siguiente:
Console
Abre la página Repositorios en la consola de Google Cloud.
En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.
En la sección Modo de autenticación del repositorio remoto, actualiza o agrega el código de usuario de Maven Central asociado a tu token de acceso personal como nombre de usuario y la versión secreta que contiene el token de acceso de Maven Central.
gcloud CLI
Para actualizar tu repositorio remoto con tus credenciales de Maven Central, ejecuta el siguiente comando:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USER_CODE \
--remote-password-secret-version=projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
Reemplaza lo siguiente:
REPOSITORY
por el nombre de tu repositorio remoto de Artifact RegistryPROJECT_ID
por el ID del proyecto de Google Cloud.LOCATION
por la ubicación regional o multirregional para el repositorio Puedes omitir esta marca si estableces un valor predeterminado. Para ver una lista de ubicaciones admitidas, ejecuta el comandogcloud artifacts locations list
.USER_CODE
: El código de usuario asociado con tu token de acceso de Maven Central. Para obtener más información sobre cómo administrar tokens de usuario en Maven Central, consulta Configuración de seguridad con tokens de usuario.SECRET_PROJECT_ID
por el ID del proyecto en el que creaste tu secretoSECRET_ID
por el nombre que le asignaste a tu secretoSECRET_VERSION
por la versión del secreto en la que guardaste el token de acceso de la central de Maven
Las credenciales se usarán la próxima vez que el repositorio remoto envíe una solicitud de un artefacto desde la fuente ascendente.