Cette page explique comment acheminer les journaux en créant des collecteurs configurés avec des comptes de service gérés par l'utilisateur. Par défaut, Logging utilise Compte de service Logging pour tous les récepteurs d'une ressource Toutefois, si vos destinations de journalisation se trouvent dans des projets différents, vous pouvez créer et gérer votre propre compte de service géré par l'utilisateur, ce qui vous permet de gérer de manière centralisée les autorisations de gestion de l'identité et des accès à partir du projet contenant votre compte de service géré par l'utilisateur.
Vous ne pouvez créer un récepteur qui utilise un compte de service géré par l'utilisateur que lorsque le la destination du récepteur est un bucket de journaux ou un projet Google Cloud. L'exemple dans Ce document explique comment configurer un récepteur qui utilise un service géré par l'utilisateur. dont la destination est un bucket de journaux.
Avant de commencer
Installer et configurer la Google Cloud CLI
Assurez-vous de disposer d'un compte de service géré par l'utilisateur, puis définissez le les variables suivantes aux valeurs appropriées pour votre Compte de service géré par l'utilisateur:
CUSTOM_SA_PROJECT_ID: ID du projet contenant votre service géré par l'utilisateur de service.
CUSTOM_SA: adresse e-mail de votre compte de service géré par l'utilisateur.
Pour en savoir plus sur comment créer un compte de service, consultez Créer des comptes de service.
Assurez-vous de disposer d'un bucket de journaux pouvant servir de destination un récepteur de journaux, puis définissez les variables suivantes sur des valeurs adaptés à votre bucket de journaux. Si nécessaire, créez un bucket de journaux:
LOG_BUCKET_PROJECT_ID: ID du projet contenant votre bucket de journaux.
LOCATION : emplacement de votre bucket de journaux.
BUCKET_NAME: nom de votre bucket de journaux.
Identifiez le nom du compte de service Logging existe dans le projet dans lequel vous prévoyez de créer le récepteur de journaux, puis Définissez les variables suivantes sur les valeurs appropriées:
SINK_PROJECT_ID: ID du projet dans lequel vous prévoyez de créer le récepteur de journaux.
LOGGING_SA: adresse e-mail du compte de service Logging par défaut. Pour obtenir cette adresse, exécutez la commande suivante:
gcloud logging settings describe --project=SINK_PROJECT_ID
Dans la réponse, la ligne commençant par
loggingServiceAccountId
indique l'adresse e-mail de votre compte de service.
Dans le projet contenant votre compte de service géré par l'utilisateur, assurez-vous que le contrainte booléenne de règle d'administration La règle
iam.disableCrossProjectServiceAccountUsage
n'est pas appliquée. Par défaut, cette contrainte est appliquée. Pour désactiver cette contrainte afin de pouvoir associer un compte de service ressource dans un autre projet, exécutez la commande suivante:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=CUSTOM_SA_PROJECT_ID
Pour en savoir plus sur l'activation des comptes de service entre les projets, consultez la page Activez l'association de comptes de service entre plusieurs projets.
Accorder des rôles IAM
Cette section décrit les conditions préalables à la création d'un récepteur qui utilise un de service géré par l'utilisateur.
Autoriser le compte de service géré par l'utilisateur à écrire des entrées de journal sur la destination du récepteur
Accorder au compte de service géré par l'utilisateur les autorisations nécessaires écrire des entrées de journal dans la destination du récepteur que vous allez créer une étape ultérieure. La destination du récepteur sera un bucket de journaux stocké dans le projet nommé LOG_BUCKET_PROJECT_ID.
Pour accorder les autorisations requises au compte de service géré par l'utilisateur, accordez
le rôle Rédacteur du bucket de journaux (roles/logging.bucketWriter
) sur le projet
contenant le bucket de journaux:
gcloud projects add-iam-policy-binding LOG_BUCKET_PROJECT_ID \
--member='serviceAccount:CUSTOM_SA' \
--role='roles/logging.bucketWriter'
Pour en savoir plus sur la commande précédente, consultez
gcloud projects add-iam-policy-binding
Configurer l'emprunt d'identité d'un compte de service
Configurez le compte de service Cloud Logging par défaut, LOGGING_SA, pour emprunter l'identité du compte de service géré par l'utilisateur, CUSTOM_SA Le compte de service Cloud Logging par défaut existant dans le projet Google Cloud et souhaitez créer des récepteurs de journaux utilisant le compte de service géré par l'utilisateur.
Pour configurer l'usurpation d'identité du compte de service, attribuez le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator
) au compte de service Cloud Logging sur le compte de service géré par l'utilisateur :
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='serviceAccount:LOGGING_SA' \
--role='roles/iam.serviceAccountTokenCreator'
L'emprunt d'identité d'un compte de service implique deux comptes principaux: le compte de service ne disposant pas des autorisations nécessaires pour accéder à une ressource, qui dispose des autorisations d'accès à une ressource. Dans ce Dans ce cas, le compte de service géré par l'utilisateur est le compte disposant de droits car il peut écrire des entrées de journal dans la destination du récepteur, qui est un bucket de journaux du projet nommé LOG_BUCKET_PROJECT_ID. Le compte de service Logging dispose du rôle pour acheminer les journaux.
Pour en savoir plus sur le rôle "Créateur de jetons du compte de service", consultez la section Rôles de gestion et d'emprunt d'identité des comptes de service: Compte de service Rôle de créateur de jetons
Pour en savoir plus sur l'emprunt d'identité de compte de service, consultez À propos des comptes de service l'usurpation d'identité.
Autoriser le compte principal à exécuter des opérations en tant que compte de service géré par l'utilisateur
Accorder au compte principal qui créera le récepteur les autorisations nécessaires exécuter des opérations en tant que compte de service géré par l'utilisateur.
Pour accorder les autorisations requises, accordez au compte principal
Rôle Utilisateur du compte de service (roles/iam.serviceAccountUser
)
dans le projet Google Cloud qui stocke
compte de service géré par l'utilisateur CUSTOM_SA_PROJECT_ID.
Avant d'exécuter la commande suivante, effectuez les remplacements suivants:
- PRINCIPAL: identifiant du compte principal que vous souhaitez
vous accordez le rôle. Les identifiants des comptes principaux se présentent généralement sous la forme suivante:
PRINCIPAL-TYPE:ID
Par exemple,user:[email protected]
. Pour obtenir la liste complète des formats quePRINCIPAL
peut avoir, consultez la section Identifiants des comptes principaux.
Exécutez la
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 vous utilisez des rôles personnalisés, le compte principal a besoin
Autorisation iam.serviceAccounts.actAs
.
Pour en savoir plus sur le rôle d'utilisateur du compte de service, consultez la section Rôles de gestion et d'emprunt d'identité des comptes de service: Compte de service Rôle utilisateur.
Créer un collecteur de journaux qui utilise un compte de service géré par l'utilisateur
Pour créer un récepteur avec un compte de service géré par l'utilisateur, exécutez la commande
gcloud logging sinks create
et incluez l'option --custom-writer-identity
.
Avant d'exécuter la commande suivante, effectuez les remplacements suivants:
- SINK_NAME: nom du récepteur de journaux.
Exécutez la
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
Vérifier que votre récepteur achemine les journaux
Dans cette section, vous allez utiliser la gcloud CLI pour écrire et lire un journal pour vérifier que votre récepteur achemine correctement les journaux.
Pour vérifier que votre récepteur achemine correctement les journaux, procédez comme suit:
Exécutez la commande
gcloud logging write
:Avant d'exécuter la commande suivante, effectuez les remplacements suivants:
- LOG_NAME : nom du journal. Par exemple, vous pouvez définir ce champ sur
mylog
.
Exécutez la commande
gcloud logging write
:gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_ID
La commande précédente renvoie le message suivant:
Created log entry.
- LOG_NAME : nom du journal. Par exemple, vous pouvez définir ce champ sur
Pour lire l'entrée de journal que vous venez d'écrire, exécutez la commande suivante:
gcloud logging read 'textPayload="Test log entry"' \ --bucket=BUCKET_NAME --location=LOCATION \ --view=_AllLogs --project=SINK_PROJECT_ID
Étape suivante
Pour en savoir plus sur l'acheminement de vos journaux vers des destinations compatibles, consultez Acheminez les journaux vers des destinations compatibles.
Pour découvrir comment Logging achemine et stocke vos consultez la section Présentation du routage et du stockage.
Si vous rencontrez des problèmes lorsque vous utilisez des récepteurs pour acheminer les journaux, consultez Résoudre les problèmes liés aux journaux de routage
Pour savoir comment afficher vos journaux routés dans leur destination, et découvrir comment les journaux sont formatés et organisés, consultez la page Afficher les journaux dans les destinations de récepteur.