Cette page décrit les journaux d'audit créés par Firebase dans le cadre des Cloud Audit Logs .
Aperçu
Les services Firebase rédigent des journaux d'audit pour vous aider à répondre aux questions : "Qui a fait quoi, où et quand ?". Il s'agit de journaux d'audit Cloud, fournis dans le cadre du projet Google Cloud connecté à votre projet Firebase .
Vos projets Firebase contiennent chacun uniquement les journaux d'audit des ressources qui se trouvent directement dans le projet.
Pour une présentation générale des journaux d'audit Cloud, consultez Présentation des journaux d'audit Cloud . Pour une compréhension plus approfondie du format du journal d'audit, consultez Comprendre les journaux d'audit .
Journaux d'audit disponibles
Les types de journaux d'audit suivants sont disponibles pour Firebase Realtime Database :
Journaux d'audit des activités d'administration
Inclut les opérations « admin write » qui écrivent des métadonnées ou des informations de configuration.
Vous ne pouvez pas désactiver les journaux d'audit des activités d'administration.
Journaux d'audit d'accès aux données
Inclut les opérations de « lecture administrateur » qui lisent les métadonnées ou les informations de configuration. Inclut également les opérations de « lecture de données » et « d'écriture de données » qui lisent ou écrivent des données fournies par l'utilisateur.
Pour recevoir les journaux d'audit d'accès aux données, vous devez les activer explicitement.
Pour des descriptions plus complètes des types de journaux d'audit, voir Types de journaux d'audit .
Opérations auditées
Ce qui suit résume les opérations d'API correspondant à chaque type de journal d'audit dans Firebase Realtime Database :
Catégorie des journaux d'audit | Opérations de base de données en temps réel Firebase |
---|---|
Journaux d'audit des activités d'administration (ADMIN_WRITE) |
|
Journaux d'audit d'accès aux données (ADMIN_READ) |
|
Journaux d'audit d'accès aux données (DATA_READ ou DATA_WRITE) |
|
Journaux d'audit d'accès aux données (DATA_READ) |
|
Journaux d'audit d'accès aux données (DATA_WRITE) |
|
Auditer les informations d'authentification
Les entrées du journal d'audit incluent des informations sur l'identité qui a effectué l'opération consignée. Pour identifier un appelant de demande, consultez les champs suivants dans l'objet AuditLog :
Établir des connexions en temps réel. Les opérations Realtime Database
Connect
n’enregistrent pas les données d’authentification puisque Realtime Database s’authentifie après l’établissement d’une connexion. Par conséquent,Connect
ne dispose d’aucune information d’authentification. L'objetAuthenticationInfo
contient un espace réservéprincipalEmail
deaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
.Authentification Google. Les opérations de base de données en temps réel qui utilisent l'authentification Google standard, telles que le trafic provenant du SDK d'administration Firebase ou les requêtes REST authentifiées avec un jeton OAuth standard , ont un objet
AuthenticationInfo
qui contient l'e-mail d'informations d'identification réel.Authentification Firebase. Les opérations de base de données en temps réel qui utilisent l'authentification Firebase ont un objet
AuthenticationInfo
qui contient une valeurprincipalEmail
deaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Il en va de même si vous implémentez votre propre solution d'authentification en créant des JWT personnalisés.- Si un jeton Web JSON (JWT) a été utilisé pour l'authentification tierce, le champ
thirdPartyPrincipal
inclut l'en-tête et la charge utile du jeton. Par exemple, les journaux d'audit des demandes authentifiées avec Firebase Authentication incluent le jeton d'authentification Firebase de cette demande.
- Si un jeton Web JSON (JWT) a été utilisé pour l'authentification tierce, le champ
Pas d'authentification. Les opérations de base de données en temps réel qui n'utilisent aucune authentification ont un objet
AuthenticationInfo
qui contient une valeurprincipalEmail
deaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Une instance de base de données en temps réel avec des règles de sécurité ouvertes peut accorder de telles demandes. . Nous recommandons à tous les utilisateurs de sécuriser correctement leurs bases de données.Jetons secrets hérités. Les opérations de base de données en temps réel utilisant des jetons hérités ont un objet
AuthenticationInfo
qui contient un espace réservéprincipalEmail
deaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Pour les JWT signés par des secrets,thirdPartyPrincipal
contient les en-têtes et la charge utile JWT.
Auditer les évaluations des règles de sécurité Firebase
Les journaux d'audit Cloud peuvent être utilisés pour identifier les demandes qui seront potentiellement affectées par les modifications des règles.
Dans l'objet AuthorizationInfo , authorization.permission
peut être l'un des éléments suivants :
-
firebasedatabase.data.get
: accès en lecture accordé au chemin spécifié dansresource
. -
firebasedatabase.data.update
: accès en écriture accordé au chemin spécifié dansresource
. -
firebasedatabase.data.connect
: espace réservé pourConnect
etDisconnect
. Aucune autorisation requise pour se connecter à une instance de base de données en temps réel. -
firebasedatabase.data.cancel
: utilisé pourUnlisten
etOnDisconnectCancel
. La révocation ou l'annulation d'une opération préalablement autorisée ne nécessite aucune autorisation supplémentaire.
Corréler les journaux d'audit Cloud avec les résultats du profileur de base de données en temps réel
Vous pouvez effectuer une analyse approfondie des performances sur Realtime Database à l'aide du profileur Realtime Database en combinaison avec la journalisation d'audit Realtime Database. Chaque outil a ses atouts.
Journalisation d'audit dans le cloud | Profileur de base de données en temps réel |
---|---|
|
|
Le contenu du journal d'audit correspond aux métriques du profileur, comme indiqué ci-dessous.
Nom de l’opération de journalisation d’audit | Valeurs spéciales dansRealtimeDatabaseAuditMetadata | Nom de l'opération du profileur |
---|---|---|
Connecter | RequestType est REALTIME | connexion simultanée |
Déconnecter | RequestType est REALTIME | déconnexion simultanée |
Lire | RequestType est REALTIME | lecture en temps réel |
Lire | RequestType est REST | reste-lire |
Écrire | RequestType est REALTIME | écriture en temps réel |
Écrire | RequestType est REST | reste-écriture |
Mise à jour | RequestType est REALTIME .Vérifiez PreconditionType . | mise à jour en temps réel transaction en temps réel |
Mise à jour | RequestType est REST .Vérifiez PreconditionType . | reste-mise à jour transaction de repos |
AuditeurÉcouter | RequestType est REALTIME | auditeur-écouter |
AuditeurDésécouter | RequestType est REALTIME | auditeur-désécouter |
SurDéconnexionPut | RequestType est REALTIME | on-disconnect-put |
OnDisconnectUpdate | RequestType est REALTIME | mise à jour à la déconnexion |
SurDéconnexionAnnuler | RequestType est REALTIME | à la déconnexion-annulation |
Exécuter sur déconnexion | RequestType est REALTIME | exécution après déconnexion |
Format du journal d'audit
Les entrées du journal d'audit incluent les objets suivants :
L'entrée de journal elle-même, qui est un objet de type
LogEntry
. Les champs utiles sont les suivants :- Le
logName
contient l’ID de ressource et le type de journal d’audit. - La
resource
contient la cible de l'opération auditée. - L'
timestamp
contient l'heure de l'opération auditée. - Le
protoPayload
contient les informations auditées.
- Le
Les données de journalisation d'audit, qui sont un objet
AuditLog
conservé dans le champprotoPayload
de l'entrée de journal.Informations d'audit facultatives spécifiques au service, qui sont un objet spécifique au service. Pour les intégrations plus anciennes, cet objet est conservé dans le champ
serviceData
de l'objetAuditLog
; les intégrations plus récentes utilisent le champmetadata
.
Pour connaître les autres champs de ces objets et savoir comment les interpréter, consultez Comprendre les journaux d'audit .
Des informations supplémentaires sur les champs deprotoPayload.metadata
pour les opérations DATA_READ
et DATA_WRITE
sont disponibles dans la documentation de référence .Nom du journal
Les noms de ressources Cloud Audit Logs indiquent le projet Firebase ou une autre entité Google Cloud qui possède les journaux d'audit, et si le journal contient des données de journalisation d'audit sur l'activité d'administration, l'accès aux données, la politique refusée ou les événements système. Par exemple, ce qui suit présente les noms des journaux d'audit des activités d'administration au niveau du projet et des journaux d'audit d'accès aux données d'une organisation. Les variables désignent les identifiants du projet Firebase et de l'organisation.
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
Nom du service
Les journaux d'audit de Firebase Realtime Database utilisent le nom de service firebasedatabase.googleapis.com
.
Pour obtenir la liste complète de tous les noms de services de l'API Cloud Logging et de leur type de ressource surveillée correspondant, consultez Mapper les services aux ressources .
Types de ressources
Les journaux d'audit de Firebase Realtime Database utilisent le type de ressource audited_resource
pour tous les journaux d'audit.
Pour obtenir la liste de tous les types de ressources surveillées par Cloud Logging et des informations descriptives, consultez Types de ressources surveillées .
Activer la journalisation d'audit
Les journaux d’audit des activités d’administration sont toujours activés ; vous ne pouvez pas les désactiver.
Les journaux d'audit d'accès aux données sont désactivés par défaut et ne sont écrits que s'ils sont explicitement activés (à l'exception des journaux d'audit d'accès aux données pour BigQuery, qui ne peuvent pas être désactivés).
Les journaux d'audit d'accès aux données pour la base de données en temps réel sont activés en vérifiantDATA_READ
et/ou DATA_WRITE
dans la console GCP. Il peut s'écouler jusqu'à une heure entre le moment où les journaux sont activés/désactivés dans la console GCP et le moment où les journaux démarrent/arrêtent leur livraison.Pour obtenir des instructions sur l'activation de tout ou partie de vos journaux d'audit d'accès aux données, consultez Configurer les journaux d'accès aux données .
Autorisations et rôles
Les autorisations et les rôles Cloud IAM déterminent votre capacité à accéder aux données des journaux d'audit dans les ressources Google Cloud.
Lorsque vous décidez quels rôles et autorisations spécifiques à Logging s'appliquent à votre cas d'utilisation, tenez compte des éléments suivants :
Le rôle d'observateur de journaux (
roles/logging.viewer
) vous donne un accès en lecture seule aux journaux d'audit des activités d'administration, des politiques refusées et des événements système. Si vous disposez uniquement de ce rôle, vous ne pouvez pas afficher les journaux d'audit d'accès aux données qui se trouvent dans le compartiment_Default
.Le rôle de visionneuse de journaux privés
(roles/logging.privateLogViewer
) inclut les autorisations contenues dansroles/logging.viewer
, ainsi que la possibilité de lire les journaux d'audit d'accès aux données dans le compartiment_Default
.Notez que si ces journaux privés sont stockés dans des compartiments définis par l'utilisateur, tout utilisateur disposant des autorisations nécessaires pour lire les journaux dans ces compartiments peut lire les journaux privés. Pour plus d'informations sur les compartiments de journaux, consultez Présentation du routage et du stockage .
Pour plus d'informations sur les autorisations et les rôles Cloud IAM qui s'appliquent aux données des journaux d'audit, consultez Contrôle d'accès .
Regardes les connexions
Pour rechercher et afficher les journaux d'audit, vous devez connaître l'identifiant du projet, du dossier ou de l'organisation Firebase pour lequel vous souhaitez afficher les informations des journaux d'audit. Vous pouvez en outre spécifier d'autres champs LogEntry
indexés, comme resource.type
; pour plus de détails, consultez Rechercher rapidement les entrées du journal .
Voici les noms des journaux d'audit : ils incluent des variables pour les identifiants du projet, du dossier ou de l'organisation Firebase :
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy
Vous pouvez afficher les journaux d'audit dans Cloud Logging à l'aide de la console GCP, de l'outil de ligne de commande gcloud
ou de l'API Logging.
Console
Vous pouvez utiliser l'explorateur de journaux dans la console GCP pour récupérer les entrées de votre journal d'audit pour votre projet, dossier ou organisation Firebase :
Dans la console GCP, accédez à la page Journalisation > Explorateur de journaux .
Sur la page Explorateur de journaux , sélectionnez un projet, un dossier ou une organisation Firebase existant.
Dans le volet Générateur de requêtes , procédez comme suit :
Dans Type de ressource , sélectionnez la ressource Google Cloud dont vous souhaitez consulter les journaux d'audit.
Dans Nom du journal , sélectionnez le type de journal d'audit que vous souhaitez voir :
- Pour les journaux d’audit des activités d’administration, sélectionnez activité .
- Pour les journaux d’audit d’accès aux données, sélectionnez data_access .
- Pour les journaux d’audit des événements système, sélectionnez system_event .
- Pour les journaux d’audit de stratégie refusée, sélectionnez stratégie .
Si vous ne voyez pas ces options, cela signifie qu'aucun journal d'audit de ce type n'est disponible dans le projet, le dossier ou l'organisation Firebase.
Pour plus de détails sur les requêtes à l'aide de l'explorateur de journaux, consultez Créer des requêtes de journaux .
gcloud
L'outil de ligne de commande gcloud
fournit une interface de ligne de commande à l'API Cloud Logging. Fournissez un PROJECT_ID
, FOLDER_ID
ou ORGANIZATION_ID
valide dans chacun des noms de journaux.
Pour lire les entrées du journal d'audit au niveau de votre projet Firebase, exécutez la commande suivante :
gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID
Pour lire les entrées du journal d'audit au niveau du dossier, exécutez la commande suivante :
gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID
Pour lire les entrées du journal d'audit au niveau de votre organisation, exécutez la commande suivante :
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID
Pour plus d'informations sur l'utilisation de l'outil gcloud
, consultez Lire les entrées du journal .
API
Lors de la création de vos requêtes, remplacez les variables par des valeurs valides, remplacez le nom ou les identifiants appropriés du journal d'audit au niveau du projet, du dossier ou de l'organisation, comme indiqué dans les noms des journaux d'audit. Par exemple, si votre requête inclut un PROJECT_ID , l'identifiant de projet que vous fournissez doit faire référence au projet Firebase actuellement sélectionné.
Pour utiliser l'API Logging afin d'examiner vos entrées de journal d'audit, procédez comme suit :
Accédez à la section Essayer cette API dans la documentation pour la méthode
entries.list
.Insérez ce qui suit dans la partie corps de la demande du formulaire Essayez cette API . Cliquer sur ce formulaire prérempli remplit automatiquement le corps de la demande, mais vous devez fournir un
PROJECT_ID
valide dans chacun des noms de journaux.{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
Cliquez sur Exécuter .
Pour plus de détails sur les requêtes, consultez Langage de requête de journalisation .
Pour obtenir un exemple d'entrée de journal d'audit et savoir comment y trouver les informations les plus importantes, voir Exemple d'entrée de journal d'audit .
Journaux d'audit d'acheminement
Vous pouvez acheminer les journaux d'audit vers des destinations prises en charge de la même manière que vous pouvez acheminer d'autres types de journaux. Voici quelques raisons pour lesquelles vous souhaiterez peut-être acheminer vos journaux d’audit :
Pour conserver les journaux d'audit pendant une période plus longue ou pour utiliser des fonctionnalités de recherche plus puissantes, vous pouvez acheminer des copies de vos journaux d'audit vers Google Cloud Storage, BigQuery ou Google Cloud Pub/Sub. À l'aide de Cloud Pub/Sub, vous pouvez acheminer vers d'autres applications, d'autres référentiels et vers des tiers.
Pour gérer vos journaux d'audit dans l'ensemble d'une organisation, vous pouvez créer des récepteurs agrégés qui peuvent acheminer les journaux de tout ou partie des projets Firebase de l'organisation.
- Si vos journaux d'audit d'accès aux données activés poussent vos projets Firebase sur vos allocations de journaux, vous pouvez créer des récepteurs qui excluent les journaux d'audit d'accès aux données de la journalisation.
Pour obtenir des instructions sur les journaux de routage, consultez Configurer les récepteurs .
Tarifs
Les journaux d’audit des activités d’administration et les journaux d’audit des événements système sont gratuits.
Les journaux d’audit d’accès aux données et les journaux d’audit de politique refusée sont payants.
Pour plus d'informations sur les tarifs de Cloud Logging, consultez la tarification de la suite d'opérations de Google Cloud : Cloud Logging .