Audit de base de données SQL Server

Cette page décrit l'audit de base de données dans Cloud SQL à l'aide de la fonctionnalité d'audit de SQL Server.

Aperçu

Dans Cloud SQL, les fonctionnalités d'audit de SQL Server incluent :

  • Créer des spécifications d'audit pour le serveur
  • Suivre et consigner des événements au niveau du serveur et de la base de données

Pour plus d'informations sur les fonctionnalités de l'audit SQL Server, consultez la page Audit de SQL Server (moteur de base de données).

Avant de commencer

Avant d'activer l'audit de base de données, consultez les conditions préalables de cette section.

Bucket Cloud Storage pour les fichiers d'audit

Les fichiers d'audit (journaux d'audit) sont importés dans un emplacement de bucket Cloud Storage. Par conséquent, vous devrez peut-être créer un bucket appartenant à votre compte Google Cloud.

Vous pouvez également utiliser un emplacement de bucket appartenant à un autre compte. Lorsque vous activez l'audit, si vous disposez des autorisations nécessaires, le rôle roles/storage.objectAdmin est attribué automatiquement pour l'importation des fichiers d'audit à l'emplacement du bucket associé au compte de service donné. Si vous ne disposez pas des autorisations nécessaires, vous devrez les accorder ultérieurement pour le compte de service.

Utilisateur valide pour activer l'audit

Pour activer l'audit et créer des spécifications d'audit, l'utilisateur sqlserver par défaut doit être disponible. Lorsque vous avez créé une instance Cloud SQL pour SQL Server, l'utilisateur sqlserver par défaut a été créé automatiquement.

Activer l'audit

Lorsque vous activez l'audit, un emplacement Cloud Storage est requis. Les éléments suivants sont facultatifs :

  • Durée de conservation des journaux sur l'instance
  • Intervalle d'importation (fréquence d'importation)

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur le nom de l'instance.
  3. Cliquez sur Modifier.
  4. Dans la section Personnaliser votre instance, cliquez sur Options et paramètres.
  5. Cochez la case Activer l'audit SQL Server.
  6. Spécifiez un bucket Cloud Storage comme emplacement dans lequel les fichiers d'audit sont importés.
  7. Cliquez sur Advanced Options (Options avancées).
  8. Vous pouvez éventuellement spécifier un nombre de jours pour la conservation des journaux (1 à 7 jours ; 7 jours est la valeur par défaut).
  9. Vous pouvez éventuellement spécifier la fréquence d'importation des journaux (fichiers d'audit) en minutes (1 à 720 minutes, 10 minutes par défaut).
  10. Cliquez sur Enregistrer pour appliquer les modifications.

gcloud

La commande suivante active l'audit :

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=gs://my-bucket --audit-retention-interval=24h --audit-upload-interval=10m

Le tableau suivant récapitule les paramètres gcloud de cette opération :

Paramètre Description Valeurs autorisées Valeur par défaut
--audit-bucket-path Obligatoire. L'emplacement, en tant que bucket Cloud Storage, dans lequel les fichiers d'audit sont importés. Vide si l'audit est désactivé. Sinon, un chemin de bucket commençant par gs:// Vide, car l'audit est désactivé par défaut.
--audit-retention-interval Facultatif. Nombre de jours de conservation des journaux d'audit sur le disque. 1 à 7 jours. Seuls les jours sont autorisés. 7 jours.
--audit-upload-interval Facultatif. Fréquence d'importation des journaux d'audit (fichiers d'audit) 1 à 720 minutes. 10 minutes.

REST v1

L'API REST vous permet d'activer l'audit pour une instance. Comme indiqué dans le prototype de requête suivant, vous pouvez spécifier un bucket Cloud Storage, un nombre de jours pour la conservation des fichiers d'audit et une fréquence d'importation des fichiers d'audit. Seul l'emplacement du bucket est requis. Pour plus d'informations, consultez la page SqlServerAuditConfig :

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

REST v1beta4

L'API REST vous permet d'activer l'audit pour une instance. Comme indiqué dans le prototype de requête suivant, vous pouvez spécifier un bucket Cloud Storage, un nombre de jours pour la conservation des fichiers d'audit et une fréquence d'importation des fichiers d'audit. Seul l'emplacement du bucket est requis. Pour plus d'informations, consultez la page SqlServerAuditConfig :

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

Désactiver l'audit

Cette section contient les options permettant de désactiver l'audit. Lorsque vous désactivez les audits, tous les fichiers d'audit, y compris ceux qui n'ont pas encore été importés, sont supprimés de l'instance. En outre, tous les audits du serveur sont désactivés et doivent être réactivés si l'audit doit reprendre. Les journaux d'audit importés dans le bucket Cloud Storage peuvent rester, en fonction de vos paramètres de conservation pour le bucket.

Voici les options permettant de désactiver l'audit.

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur le nom de l'instance.
  3. Cliquez sur Modifier.
  4. Dans la section Personnaliser votre instance, cliquez sur Options et paramètres.
  5. Décochez la case Activer l'audit SQL Server.
  6. Cliquez sur Enregistrer pour appliquer les modifications.

gcloud

La commande suivante, qui omet une valeur pour le paramètre --audit-bucket-path, désactive l'audit :

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=

REST v1

Voici un prototype de requête qui désactive l'audit : il omet les champs de l'objet sqlServerAuditConfig :

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

REST v1beta4

Voici un prototype de requête qui désactive l'audit : il omet les champs de l'objet sqlServerAuditConfig :

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

Importation automatique de fichiers d'audit

Une fois l'audit activé, les fichiers d'audit générés sont importés automatiquement dans le bucket Cloud Storage spécifié.

Les fichiers d'audit générés sont également stockés avec l'instance jusqu'à ce que la période de conservation configurée (intervalle) soit écoulée. Passé ce délai, les fichiers d'audit sont définitivement supprimés, même ceux qui n'ont pas pu être importés.

Créer des audits de serveurs

Une fois l'audit activé, l'utilisateur par défaut sqlserver est autorisé à créer, modifier et supprimer des audits de serveurs.

Exécutez la commande CREATE SERVER AUDIT pour définir de nouveaux audits de serveurs. Vous pouvez également utiliser l'interface utilisateur de SQL Server Management Studio (SSMS) pour créer des audits de serveur.

Les catégories de paramètres suivantes sont appliquées à tous les audits de serveur :

Catégorie de paramètre Valeurs autorisées
En cas d'échec du journal d'audit Continuer ou échouer
Destination de l'audit File
Path /var/opt/mssql/audit
Taille maximale du fichier 2 à 50 Mo
Nombre maximal de fichiers de basculement Doit être : non configuré
Nombre maximal de fichiers Doit être : non configuré
Réserver de l'espace disque Désactivée

Lire les audits

Lire les audits d'une instance

Pour récupérer les données d'un fichier d'audit créé par un audit de serveur, vous pouvez utiliser la procédure stockée suivante : msdb.dbo.gcloudsql_fn_get_audit_file. La procédure msdb.dbo.gcloudsql_fn_get_audit_file accepte les mêmes paramètres que la fonction sys.fn_get_audit_file.

Ainsi, pour en savoir plus sur l'utilisation de cette procédure stockée, consultez la section sys.fn_get_audit_file.

Voici un exemple d'utilisation de la procédure msdb.dbo.gcloudsql_fn_get_audit_file pour récupérer des données d'audit :

SELECT event_time, statement FROM msdb.dbo.gcloudsql_fn_get_audit_file('/var/opt/mssql/audit/*', NULL, NULL) WHERE statement LIKE '%INSERT%'

Lire les audits d'un bucket

Pour lire les audits d'un bucket Cloud Storage, vous pouvez télécharger les fichiers du bucket sur une instance SQL Server. Cette instance SQL Server peut être :

  • Instance Windows Compute Engine
  • Instance Linux Compute Engine
  • Autre type d'instance exécutant SQL Server

Les fichiers d'audit du bucket doivent être transférés vers un emplacement accessible à cette instance, tel que son disque local. Ensuite, pour renvoyer des informations à partir des fichiers d'audit, exécutez la fonction sys.fn_get_audit_file en utilisant un membre du rôle de serveur fixe serveradmin. Par exemple, à partir d'une instance Windows, si vous avez transféré des fichiers d'audit vers D:\Audit, vous pouvez utiliser une commande semblable à celle-ci :

SELECT event_time, statement FROM sys.fn_get_audit_file('D:\Audit\*.*', NULL, NULL) WHERE statement LIKE '%INSERT%'

Métriques de surveillance

Vous pouvez surveiller les opérations liées à l'audit dans le cadre des métriques Cloud SQL, disponibles via l'explorateur de métriques :

  • database/sqlserver/audits_upload_count. Cette métrique indique le nombre total de tentatives d'importation de fichiers d'audit, pour les tentatives réussies et échouées. Consultez cette métrique pour vérifier si les importations ont réussi.
  • database/sqlserver/audits_size. Cette métrique indique l'espace disque utilisé par les fichiers d'audit stockés sur l'instance, au moment de la mesure. Cette métrique fournit la taille totale des fichiers d'audit de l'instance, en octets.

Bonnes pratiques

  • Pour éviter de transférer des fichiers volumineux entre plusieurs régions, envisagez de :
    • Créer des buckets Cloud Storage multirégionaux
    • Configurer le bucket Cloud Storage de destination dans la même région que l'instance
  • Avant d'utiliser les fonctionnalités de l'audit SQL Server, envisagez d'activer l'augmentation automatique de l'espace de stockage. Les fichiers d'audit, en fonction de leur taille totale et de leurs intervalles de conservation, peuvent nécessiter un espace disque important.
  • Une fois l'audit activé, vérifiez que votre instance peut importer des fichiers d'audit dans votre bucket Cloud Storage. Si le demandeur qui a configuré l'audit ne dispose pas des autorisations nécessaires pour importer des fichiers dans le bucket Cloud Storage, ces autorisations ne sont pas accordées automatiquement.
  • Configurez une règle d'alerte basée sur les métriques pour être informé des échecs de tentatives d'importation et de l'utilisation excessive du disque.
  • Pour éviter de conserver trop de fichiers d'audit trop longtemps, configurez une règle de conservation des données pour votre bucket Cloud Storage.