Configura receptores de registros con cuentas de servicio administradas por el usuario

En esta página, se describe cómo enrutar registros mediante la creación de receptores configurados con cuentas de servicio administradas por el usuario. De forma predeterminada, Logging usa un Cuenta de servicio de registro para todos los receptores de un recurso. Sin embargo, Si tus receptores de registros están en proyectos diferentes, puedes crear y administrar tu propia cuenta de servicio administrada por el usuario, que te permite administrar Permisos de Identity and Access Management del proyecto que contiene tus recursos administrados cuenta de servicio.

Solo puedes crear un receptor que use una cuenta de servicio administrada por el usuario cuando el destino del receptor es un bucket de registros o un proyecto de Google Cloud. El ejemplo en en este documento, se ilustra cómo configurar un receptor que usa un servicio administrado por el usuario de destino, con un bucket de registros.

Antes de comenzar

  1. Instala y configura Google Cloud CLI.

  2. Asegúrate de tener una cuenta de servicio administrada por el usuario variables siguientes a valores adecuados para tu cuenta de servicio administrada por el usuario:

    • CUSTOM_SA_PROJECT_ID: Es el ID del proyecto que contiene tu cuenta de servicio administrada por el usuario.

    • CUSTOM_SA: El correo electrónico de tu cuenta de servicio administrada por el usuario.

    Para obtener información sobre cómo crear una cuenta de servicio, consulta Crea cuentas de servicio.

  3. Asegúrate de tener un bucket de registros que pueda servir como destino un receptor de registros y, a continuación, establece las siguientes variables en valores que sean adecuados para tu bucket de registros. Si es necesario, crea un bucket de registros:

    • LOG_BUCKET_PROJECT_ID: El ID del proyecto que contiene tu bucket de registros.

    • LOCATION: La ubicación de tu bucket de registros.

    • BUCKET_NAME: Es el nombre. de tu bucket de registros.

  4. Identifica el nombre de la cuenta de servicio de registro que existe en el proyecto en el que planeas crear el destino de registro y, luego, establece las siguientes variables en sus valores correspondientes:

    • SINK_PROJECT_ID El ID del proyecto en el que planeas crear el receptor de registros.

    • LOGGING_SA: Es la dirección de correo electrónico de la cuenta de servicio de registro predeterminada. Para obtener esta dirección, ejecuta el siguiente comando:

      gcloud logging settings describe --project=SINK_PROJECT_ID
      

      En la respuesta, la línea que comienza con loggingServiceAccountId la dirección de correo electrónico de tu cuenta de servicio.

  5. En el proyecto que contiene tu cuenta de servicio administrada por el usuario, asegúrate de que la restricción booleana iam.disableCrossProjectServiceAccountUsage de la política de la organización no se aplique. De forma predeterminada, esta restricción se aplica. Para inhabilitar esta restricción y que puedas conectar una cuenta de servicio a una recurso de otro proyecto, ejecuta el siguiente comando:

    gcloud resource-manager org-policies disable-enforce \
    iam.disableCrossProjectServiceAccountUsage \
    --project=CUSTOM_SA_PROJECT_ID
    

    Para obtener más información sobre cómo habilitar cuentas de servicio en todos los proyectos, consulta Habilita las cuentas de servicio para que se vinculen a través de proyectos.

Asigna roles de IAM

En esta sección, se describen los requisitos previos para crear un receptor que use un cuenta de servicio administrada por el usuario.

Permite que la cuenta de servicio administrada por el usuario escriba entradas de registro en el destino del receptor

Otorga a la cuenta de servicio administrada por el usuario los permisos que necesita para escribir entradas de registro en el destino del receptor que crearás en en un paso posterior. El destino del receptor será un bucket de registros almacenado en el proyecto llamado LOG_BUCKET_PROJECT_ID.

Para otorgar los permisos necesarios a la cuenta de servicio administrada por el usuario, otorga el rol de escritor de buckets de registros (roles/logging.bucketWriter) en el proyecto que contiene el bucket de registros:

gcloud projects add-iam-policy-binding LOG_BUCKET_PROJECT_ID \
--member='serviceAccount:CUSTOM_SA' \
--role='roles/logging.bucketWriter'

Para obtener más información sobre el comando anterior, consulta gcloud projects add-iam-policy-binding

Configura la suplantación de cuentas de servicio

Configura la cuenta de servicio predeterminada de Cloud Logging, LOGGING_SA, para que pueda suplantar la cuenta de servicio administrada por el usuario CUSTOM_SA La cuenta de servicio predeterminada de Cloud Logging que existe en el proyecto de Google Cloud queremos crear receptores de registros que usen la cuenta de servicio administrada por el usuario.

Para configurar la suplantación de cuentas de servicio, otorga al Rol de creador de tokens de cuentas de servicio (roles/iam.serviceAccountTokenCreator) al servicio de Cloud Logging en la cuenta de servicio administrada por el usuario:

gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='serviceAccount:LOGGING_SA' \
--role='roles/iam.serviceAccountTokenCreator'

La suplantación de cuentas de servicio involucra dos principales: la cuenta de servicio que carece de permisos para acceder a un recurso, y la infraestructura que cuenta de servicio con permisos para acceder a un recurso. En este caso, la cuenta de servicio administrada por el usuario es la cuenta que tiene privilegios ya que tiene la capacidad de escribir entradas de registro en el destino del receptor que es un bucket de registros en el proyecto llamado LOG_BUCKET_PROJECT_ID. La cuenta de servicio de Logging tiene la para enrutar los registros.

Para obtener más información sobre el rol Creador de tokens de cuenta de servicio, haz lo siguiente: consulta Roles para administrar y suplantar la identidad de cuentas de servicio: Cuenta de servicio Rol de creador de tokens.

Para obtener más información sobre la suplantación de cuentas de servicio, consulta Acerca de la cuenta de servicio de identidad.

Permite que el principal ejecute operaciones como la cuenta de servicio administrada por el usuario

Otorga a la principal que creará el receptor los permisos que necesita ejecutar operaciones como la cuenta de servicio administrada por el usuario.

Para otorgar los permisos requeridos, otorga a la principal Rol Usuario de cuentas de servicio (roles/iam.serviceAccountUser) en el proyecto de Google Cloud que almacena la cuenta de servicio administrada por el usuario, CUSTOM_SA_PROJECT_ID.

Antes de ejecutar el siguiente comando, realiza los siguientes reemplazos:

  • PRINCIPAL: Un identificador para la principal que deseas a la que otorgas el rol. Los identificadores principales suelen tener el siguiente formato: PRINCIPAL-TYPE:ID Por ejemplo, user:my-user@example.com. Para obtener una lista completa de los formatos que puede tener PRINCIPAL, consulta Identificadores principales.

Ejecuta el comando gcloud iam service-accounts add-iam-policy-binding:

gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/iam.serviceAccountUser'

Si usas roles personalizados, la principal necesita iam.serviceAccounts.actAs.

Si quieres obtener más información sobre el rol de usuario de cuenta de servicio, consulta Roles para administrar y suplantar cuentas de servicio: Rol de usuario de cuenta de servicio.

Crea un receptor de registros que use una cuenta de servicio administrada por el usuario

Para crear un receptor con una cuenta de servicio administrada por el usuario, ejecuta el gcloud logging sinks create e incluye la opción --custom-writer-identity.

Antes de ejecutar el siguiente comando, realiza los siguientes reemplazos:

  • SINK_NAME: Es el nombre del receptor de registros.

Ejecuta el gcloud logging sinks create :

gcloud logging sinks create SINK_NAME \
logging.googleapis.com/projects/LOG_BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME \
--custom-writer-identity=serviceAccount:CUSTOM_SA \
--project=SINK_PROJECT_ID

Verifica que tu sink esté enrutando registros

En esta sección, usarás gcloud CLI para escribir y leer un registro para verificar que tu receptor enruta los registros de forma correcta.

Para verificar que tu receptor enrute los registros correctamente, haz lo siguiente:

  1. Ejecuta el comando gcloud logging write:

    Antes de ejecutar el siguiente comando, realiza los siguientes reemplazos:

    • LOG_NAME: El nombre del registro. Por ejemplo, puedes configurar este campo como mylog.

    Ejecuta el comando gcloud logging write:

    gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_ID
    

    El comando anterior muestra el siguiente mensaje: Created log entry..

  2. Para leer la entrada de registro que acabas de escribir, ejecuta el siguiente comando:

    gcloud logging read 'textPayload="Test log entry"' \
    --bucket=BUCKET_NAME --location=LOCATION \
    --view=_AllLogs --project=SINK_PROJECT_ID
    

¿Qué sigue?