Configurar algunas de las integraciones de terceros, requiere que
proporciones secretos, como contraseñas, para los receptores de métricas
del Agente de operaciones. De forma predeterminada, estos secretos se almacenan como texto simple en el archivo
config.yaml
del agente. Estos secretos se incluyen en los registros del sistema
que escribe el agente y se transmiten a Cloud Logging, lo que los expone
más allá de la máquina virtual (VM) en la que se ejecuta
el Agente de operaciones.
A partir de la versión 2.57.0 del Agente de operaciones, puedes usar un proveedor de OpenTelemetry integrado en Secret Manager para borrar los secretos de texto simple de los archivos de configuración.
Un proveedor es un componente de configuración de OpenTelemetry, análogo a los componentes de receptor y procesador. Cada proveedor tiene un tipo, y cada tipo de proveedor asigna un identificador específico en la configuración a un valor.
El proveedor de googlesecretmanager
asigna identificadores de
Secret Manager a los secretos, como contraseñas, tokens y claves de API,
que almacenaste en Secret Manager. Usar
el proveedor googlesecretmanager
ofrece los siguientes beneficios:
- Mayor seguridad: Los archivos de configuración no contienen información sensible, como contraseñas. Los secretos reales se almacenan en Secret Manager, un servicio diseñado específicamente para almacenar y administrar datos sensibles de forma segura, además de acceder a ellos.
- Menor riesgo de exposición: Secret Manager recupera secretos durante la inicialización del Agente de operaciones, lo que evita que los secretos de texto simple se asienten por accidente en los registros.
Solo puedes usar googlesecretmanager
en la configuración de la recopilación de
métricas en parámetros de configuración personalizados del Agente de operaciones. No uses el proveedor para
reemplazar secretos en la configuración de la recopilación de registros.
Antes de empezar
Para usar el proveedor de googlesecretmanager
, debes habilitar la
API de Secret Manager y permitir el acceso a ella,
como se describe en los siguientes pasos:
-
Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI ejecutando el siguiente comando:
gcloud init
Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.
Configura el proyecto predeterminado para Google Cloud CLI de la siguiente manera:
gcloud config set project PROJECT_ID
Antes de ejecutar el comando anterior, reemplaza la variable PROJECT_ID por el identificador de tu proyecto de Google Cloud .
-
Enable the Secret Manager API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable secretmanager.googleapis.com
- Actualiza los permisos de acceso de OAuth para que la instancia incluya
el permiso que requiere Secret Manager,
https://www.googleapis.com/auth/cloud-platform
:gcloud compute instances set-service-account "INSTANCE_ID" \ --service-account "SERVICE_ACCT_EMAIL" \ --scopes "https://www.googleapis.com/auth/cloud-platform"
Antes de ejecutar el comando anterior, reemplaza las siguientes variables:
- INSTANCE_ID: es el identificador de la VM.
- SERVICE_ACCT_EMAIL: es la dirección de la cuenta de servicio asociada a la VM.
Para obtener más información, consulta Accede a la API de Secret Manager.
- Otorga al usuario que administra los parámetros de configuración del Agente de operaciones
los permisos necesarios para crear y administrar secretos. El rol de Identity and Access Management
roles/secretManager.secretAdmin
incluye los permisos necesarios:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:USER_EMAIL" \ --role=roles/secretManager.secretAdmin
Antes de ejecutar el comando anterior, reemplaza las siguientes variables:
- PROJECT_ID: es el identificador de tu proyecto de Google Cloud .
- USER_EMAIL: es la dirección del usuario al que se le otorga el rol.
- Otorga a la cuenta de servicio asociada a la VM los permisos
necesarios para acceder a los secretos. El rol de Identity and Access Management
roles/secretManager.secretAccessor
incluye los permisos necesarios:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCT_EMAIL" \ --role=roles/secretManager.secretAccessor
Antes de ejecutar el comando anterior, reemplaza las siguientes variables:
- PROJECT_ID: es el identificador de tu proyecto de Google Cloud .
- SERVICE_ACCT_EMAIL: es la dirección de la cuenta de servicio asociada a la VM.
- Crea un secreto en Secret Manager para cada secreto de texto simple en tus archivos de configuración.
- Reemplaza cada secreto de texto simple en tus archivos de configuración por una referencia al secreto correspondiente en Secret Manager.
- plaintext-secret: Reemplázala por el secreto de texto simple.
- SECRET_NAME: Reemplázala por un nombre significativo para el secreto.
- Para reiniciar el agente, ejecuta el siguiente comando en la instancia:
sudo systemctl restart google-cloud-ops-agent
- Para confirmar que el agente se haya reiniciado, ejecuta el siguiente comando y
verifica que los componentes “Agente de métricas” y “Agente de Logging” se hayan iniciado:
sudo systemctl status "google-cloud-ops-agent*"
- Conéctate a la instancia a través de RDP o una herramienta similar y accede a Windows.
- Haz clic con el botón derecho en el ícono de PowerShell y selecciona Ejecutar como administrador para abrir una terminal de PowerShell con privilegios de administrador.
- Para reiniciar el agente, ejecuta el siguiente comando de PowerShell:
Restart-Service google-cloud-ops-agent -Force
- Para confirmar que el agente se haya reiniciado, ejecuta el siguiente comando y
verifica que los componentes “Agente de métricas” y “Agente de Logging” se hayan iniciado:
Get-Service google-cloud-ops-agent*
Reemplaza los secretos de texto simple por los administrados
Para dejar de usar secretos de texto simple en tus archivos de configuración
con Secret Manager y el proveedor de googlesecretmanager
,
haz lo siguiente:
Por ejemplo, si usas un receptor de métricas mysql
,
tu archivo de configuración podría incluir una entrada como la siguiente:
receivers: mysql: type: mysql username: root password: plaintext-secret
En este ejemplo, debes colocar la cadena plaintext-secret
en Secret Manager y, luego, reemplazar
el secreto de texto simple por una referencia al secreto administrado.
Crea secretos de Secret Manager para los secretos de texto simple
Para crear un secreto de Secret Manager que incluya el secreto de texto simpleplaintext-secret
, ejecuta el siguiente comando:
echo -n "plaintext-secret" | gcloud secrets create SECRET_NAME \ --replication-policy="automatic" \ --data-file=-
Antes de ejecutar el comando anterior, reemplaza las siguientes variables:
El nombre del recurso completamente calificado del nuevo secreto tiene el siguiente
formato, con una VERSION de 1
:
projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION
Para obtener más información sobre cómo almacenar secretos, controlar sus versiones y acceder a ellos en Secret Manager, consulta Crea un secreto.
Reemplaza secretos de texto simple
Para actualizar tus archivos de configuración, reemplaza cada secreto de texto simple
por una referencia al proveedor de googlesecretmanager
y al nombre del recurso
del secreto administrado, como se muestra en el siguiente ejemplo:
receivers: mysql: type: mysql username: root password: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}