Administra secretos en la configuración del agente de operaciones

Para configurar algunas de las integraciones de terceros, debes proporcionar secretos, como contraseñas, para los receptores de métricas del agente de operaciones. De forma predeterminada, estos secretos se almacenan como texto sin formato 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 eliminar los secretos de texto simple en tus 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 googlesecretmanager asigna identificadores de Secret Manager a los secretos, como contraseñas, tokens y claves de API, que almacenaste en Secret Manager. El uso del proveedor googlesecretmanager ofrece los siguientes beneficios:

  • Seguridad mejorada: Tus 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, acceder y administrar datos sensibles de forma segura.
  • 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 sin formato se registren accidentalmente en los registros.

Solo puedes usar googlesecretmanager en la configuración de la recopilación de métricas en las configuraciones personalizadas del agente de operaciones. No uses el proveedor para reemplazar secretos en la configuración de la recopilación de registros.

Antes de comenzar

Para usar el proveedor googlesecretmanager, debes habilitar la API de Secret Manager y permitir el acceso a ella, como se describe en los siguientes pasos:

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

  2. Configura el proyecto predeterminado para Google Cloud CLI:

    gcloud config set project PROJECT_ID
    

    Antes de ejecutar el comando anterior, reemplaza la variable PROJECT_ID por el identificador de tu proyecto Google Cloud .

  3. Enable the Secret Manager API:

    gcloud services enable secretmanager.googleapis.com
  4. Actualiza los permisos de acceso de OAuth para que tu instancia incluya el permiso requerido para 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 tu 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.

  5. Otorga al usuario que administra las configuraciones 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.
  6. Otorga a la cuenta de servicio asociada con la VM los permisos que necesita 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.
  7. Reemplaza los secretos de texto simple por secretos administrados

    Para eliminar el uso de secretos de texto no encriptado en tus archivos de configuración con Secret Manager y el proveedor googlesecretmanager, haz lo siguiente:

    1. Crea un secreto en Secret Manager para cada secreto de texto sin formato en tus archivos de configuración.
    2. Reemplaza cada secreto de texto sin formato en tus archivos de configuración por una referencia al secreto correspondiente en Secret Manager.

    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, deseas 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 secretos de texto sin formato

    Para crear un secreto de Secret Manager que contenga el secreto de texto sin formato plaintext-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:

    • plaintext-secret: Reemplaza este texto por tu secreto de texto simple.
    • SECRET_NAME: Reemplaza este valor por un nombre significativo para tu secreto.

    El nombre del recurso completamente calificado de tu nuevo secreto tiene el siguiente formato, con un VERSION de 1:

    projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION

    Para obtener más información sobre cómo almacenar secretos, crear versiones de ellos y acceder a ellos en Secret Manager, consulta Crea un secreto.

    Reemplaza los secretos de texto sin formato

    Para actualizar tus archivos de configuración, reemplaza cada secreto de texto sin formato 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}
    

    Reinicia el Agente de operaciones

    Linux

    1. Para reiniciar el agente, ejecuta el siguiente comando en tu instancia:
      sudo systemctl restart google-cloud-ops-agent
      
    2. Para confirmar que el agente se reinició, ejecuta el siguiente comando y verifica que los componentes “Agente de métricas” y “Agente de Logging” se iniciaron:
      sudo systemctl status "google-cloud-ops-agent*"
      

    Windows

    1. Conéctate a tu instancia con RDP o una herramienta similar y accede a Windows.
    2. 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.
    3. Para reiniciar el agente, ejecuta el siguiente comando de PowerShell:
      Restart-Service google-cloud-ops-agent -Force
      
    4. Para confirmar que el agente se reinició, ejecuta el siguiente comando y verifica que los componentes “Agente de métricas” y “Agente de Logging” se iniciaron:
      Get-Service google-cloud-ops-agent*