SQL Server Audit - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

SQL Server Audit

Dans Amazon RDS, vous pouvez effectuer un audit des bases de données Microsoft SQL Server à l'aide du mécanisme d'audit SQL Server intégré. Vous pouvez créer des audits et des spécifications d'audit de la même manière que pour des serveurs de base de données sur site.

RDS charge les journaux d'audit terminés dans votre compartiment S3 à l'aide du rôle IAM que vous fournissez. Si vous activez la rétention, RDS conserve vos journaux d'audit sur votre instance de base de données pendant la période configurée.

Pour de plus amples informations, veuillez consulter SQL Server Audit (Database Engine) dans la documentation Microsoft SQL Server.

Audit SQL Server avec des flux d'activité de base de données

Vous pouvez utiliser Database Activity Streams for RDS pour intégrer les événements d'audit de SQL Server aux outils de surveillance de l'activité des bases de données d'Imperva et d' McAfeeIBM. Pour plus d'informations sur l'audit avec les flux d'activité de base de données pour RDS SQL Server, consultez Audit dans Microsoft SQL Server

Prise en charge de SQL Server Audit

Dans Amazon RDS à partir de SQL Server 2014, toutes les éditions de SQL Server prennent en charge les audits au niveau du serveur, et l'édition Enterprise prend également en charge les audits au niveau de la base de données. À partir de SQL Server 2016 (13.x) SP1, toutes les éditions prennent en charge les audits au niveau du serveur et au niveau de la base de données. Pour de plus amples informations, consultez SQL Server Audit (moteur de base de données) dans la documentation SQL Server.

RDS prend en charge la configuration des paramètres d'option suivants pour SQL Server Audit :

Paramètre d'option Valeurs valides Description
IAM_ROLE_ARN Un Amazon Resource Name (ARN) valide au format arn:aws:iam::account-id:role/role-name. L'ARN du rôle IAM accorde l'accès au compartiment S3 où vous voulez stocker vos journaux d'audit. Pour plus d'informations, consultez Amazon Resource Names (ARN) dans le document Références générales AWS.
S3_BUCKET_ARN Un ARN valide au format arn:aws:s3:::DOC-EXAMPLE-BUCKET ou arn:aws:s3:::DOC-EXAMPLE-BUCKET/key-prefix L'ARN du compartiment S3 où vous voulez stocker vos journaux d'audit.
ENABLE_COMPRESSION true ou false Contrôle la compression des journaux d'audit. Par défaut, la compression est activée (définie sur true).
RETENTION_TIME 0 sur 840 Durée de conservation (en heures) pendant laquelle les enregistrements d'audit SQL Server sont conservés sur votre instance RDS. Par défaut, la conservation est désactivée.

Ajout de SQL Server Audit aux options d'instance de base de données

L'activation de SQL Server Audit se fait en deux étapes : l'activation de l'option sur l'instance de base de données et l'activation de la fonction dans SQL Server. Le processus d'ajout de l'option SQL Server Audit à une instance de base de données est le suivant :

  1. Créer un groupe d'options ou copier ou modifier un groupe existant.

  2. Ajouter et configurer toutes les options requises.

  3. Associez le groupe d'options à l'instance de base de données.

Une fois que vous avez ajouté l'option SQL Server Audit, vous n'avez pas besoin de redémarrer votre instance de base de données. Dès que le groupe d'options est actif, vous pouvez créer des audits et stocker les journaux d'audit dans votre compartiment S3.

Pour ajouter et configurer SQL Server Audit sur le groupe d'options d'une instance de base de données
  1. Choisissez l'une des méthodes suivantes :

    • Utiliser un groupe d'options existant.

    • Créer un groupe d'options d'instance de base de données personnalisé et utiliser ce groupe d'options. Pour plus d'informations, consultez Création d'un groupe d'options.

  2. Ajoutez l'option SQLSERVER_AUDIT au groupe d'options et configurez les paramètres de l'option. Pour plus d'informations sur l'ajout d'options, consultez Ajout d'une option à un groupe d'options.

    • Pour Rôle IAM, si vous avez déjà un rôle IAM avec les stratégies requises, vous pouvez choisir ce rôle. Pour créer un nouveau rôle IAM choisissez Créer un rôle. Pour plus d'informations sur les stratégies requises, consultez Création manuelle d'un rôle IAM pour SQL Server Audit.

    • Pour Select S3 destination (Sélectionner une destination S3), si vous avez déjà un compartiment S3 que vous souhaitez utiliser, choisissez-le. Pour créer un compartiment S3, choisissez Create a New S3 Bucket (Créer un nouveau compartiment S3).

    • Pour Enable Compression (Activer la compression), laissez cette option cochée pour compresser les fichiers d'audit. La compression est activée par défaut. Pour désactiver la compression, désélectionnez Enable Compression (Activer la compression).

    • Pour Audit log retention (Rétention des journaux d'audit), pour conserver les enregistrement sue l'instance de base de données, choisissez cette option. Spécifiez une durée de rétention en heures. La durée de rétention maximale est de 35 jours.

  3. Appliquez le groupe d'options à une instance de base de données nouvelle ou existante. Choisissez l'une des méthodes suivantes :

    • Si vous créez une nouvelle instance de base de données, appliquez le groupe d'options lorsque vous lancez l'instance.

    • Sur une instance de base de données existante, appliquez le groupe d'options en modifiant l'instance et en attachant le nouveau groupe d'options. Pour plus d'informations, consultez Modification d'une instance de base de données Amazon RDS.

Modification de l'option SQL Server Audit

Une fois que vous avez activé l'option SQL Server Audit, vous pouvez modifier les paramètres. Pour de plus amples informations sur la modification des paramètres d'option, veuillez consulter Modification d'un paramètre d'option.

Suppression de SQL Server Audit des options d'instance de base de données

Vous pouvez désactiver la fonction SQL Server Audit en désactivant les audits, puis en supprimant l'option.

Pour supprimer les audits
  1. Désactivez tous les paramètres d'audit au sein de SQL Server. Pour savoir où les audits s'exécutent, interrogez les vues du catalogue de sécurité SQL Server. Pour plus d'informations, consultez Security Catalog Views dans la documentation Microsoft SQL Server.

  2. Supprimez l'option SQL Server Audit de l'instance de base de données. Choisissez l'une des méthodes suivantes :

    • Supprimez l'option SQL Server Audit du groupe d'options utilisé par l'instance de base de données. Ce changement affecte toutes les instances de bases de données qui utilisent le même groupe d'options. Pour plus d'informations, consultez Suppression d'une option d'un groupe d'options.

    • Modifiez l'instance de base de données, puis choisissez le groupe d'options sans l'option SQL Server Audit. Cette modification affecte uniquement l'instance de base de données que vous modifiez. Vous pouvez spécifier le groupe d'options (vide) par défaut, ou un groupe d'options personnalisées différent. Pour plus d'informations, consultez Modification d'une instance de base de données Amazon RDS.

  3. Après que vous avez supprimé l'option SQL Server Audit de l'instance de base de données, vous n'avez pas besoin de redémarrer l'instance. Supprimez les fichiers d'audit non requis de votre compartiment S3.

Utilisation de SQL Server Audit

Vous pouvez contrôler les audits de serveur, les spécifications d'audit de serveur et les spécifications d'audit de base de données, de la même manière que vous les contrôlez pour vos serveurs de base de données sur site.

Création d'audits

Vous pouvez créer des audits de serveur de la même manière que pour des serveurs de base de données sur site. Pour plus d'informations sur la création d'audits de serveur, consultez CREATE SERVER AUDIT dans la documentation Microsoft SQL Server.

Pour éviter les erreurs, respectez les limitations suivantes :

  • Ne dépassez pas le nombre maximal d'audits de serveur pris en charge par instance de 50.

  • Demandez à SQL Server d'écrire les données dans un fichier binaire.

  • N'utilisez pas RDS_ comme préfixe dans le nom de l'audit de serveur.

  • Pour FILEPATH, spécifiez D:\rdsdbdata\SQLAudit.

  • Pour MAXSIZE, spécifiez une taille comprise entre 2 Mo et 50 Mo.

  • Ne configurez pas MAX_ROLLOVER_FILES ou MAX_FILES.

  • Ne configurez pas SQL Server pour arrêter l'instance de bases de données s'il ne parvient pas à écrire l'enregistrement d'audit.

Création de spécifications d'audit

Vous créez des spécifications d'audit de serveur et des spécifications d'audit de base de données, de la même manière que vous les créez pour vos serveurs de base de données sur site. Pour plus d'informations sur la création de spécifications d'audit, consultez CREATE SERVER AUDIT SPECIFICATION et CREATE DATABASE AUDIT SPECIFICATION dans la documentation Microsoft SQL Server.

Pour éviter les erreurs, n'utilisez pas RDS_ comme préfixe dans le nom de la spécification d'audit de base de données ou la spécification d'audit de serveur.

Consultation des journaux d'audit

Vos journaux d'audit sont stockés dans D:\rdsdbdata\SQLAudit.

Après que SQL Server a fini d'écrire dans un fichier de journal d'audit (quand le fichier atteint sa limite de taille), Amazon RDS charge le fichier dans votre compartiment S3. Si la rétention est activée, Amazon RDS déplace le fichier vers le dossier de rétention : D:\rdsdbdata\SQLAudit\transmitted.

Pour plus d'informations sur la rétention, consultez Ajout de SQL Server Audit aux options d'instance de base de données.

Les enregistrements d'audit sont conservés sur l'instance de base de données jusqu'à ce que le fichier de journal soit chargé. Vous pouvez afficher les enregistrements d'audit en exécutant la commande suivante.

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\*.sqlaudit' , default , default )

Vous pouvez utiliser la même commande pour afficher les enregistrements d'audit de votre dossier de rétention en modifiant le filtre en D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit.

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit' , default , default )

Utilisation de SQL Server Audit avec des instances multi-AZ

Pour les instances multi-AZ, le processus d'envoi de fichiers de journal d'audit à Amazon S3 est similaire au processus utilisé pour les instances mono-AZ. Cependant, il existe quelques différences importantes :

  • Les objets de spécification d'audit de base de données sont répliqués vers tous les nœuds.

  • Les audits de serveur et les spécifications d'audit de serveur ne sont pas répliqués vers les nœuds secondaires. Vous devez les créer et les modifier manuellement.

Pour capturer des audits de serveur ou une spécification d'audit de serveur depuis les deux nœuds :

  1. Créez un audit de serveur ou une spécification d'audit de serveur sur le nœud primaire.

  2. Basculez vers le nœud secondaire, puis créez un audit de serveur ou une spécification d'audit de serveur avec les mêmes nom et GUID sur le nœud secondaire. Utilisez le paramètre AUDIT_GUID pour spécifier le GUID.

Configuration d'un compartiment S3

Les fichiers journaux d'audit sont chargés automatiquement depuis l'instance de base de données vers votre compartiment S3. Les restrictions suivantes s'appliquent au compartiment S3 que vous utilisez comme cible pour vos fichiers d'audit :

  • Elle doit se trouver dans la même AWS région que l'instance de base de données.

  • Il ne doit pas être ouvert au public.

  • Le propriétaire du compartiment doit également être le propriétaire du rôle IAM.

La clé cible qui est utilisée pour stocker les données suit ce schéma de dénomination : DOC-EXAMPLE-BUCKET/key-prefix/instance-name/audit-name/node_file-name.ext

Note

Vous définissez le nom du compartiment et les valeurs de préfixe de clé avec le paramètre d'option (S3_BUCKET_ARN).

Le schéma est composé des éléments suivants :

  • DOC-EXAMPLE-BUCKET — Le nom de votre compartiment S3.

  • key-prefix – Préfixe de clé personnalisé que vous souhaitez utiliser pour les journaux d'audit.

  • instance-name – Nom de votre instance Amazon RDS.

  • audit-name – Nom de l'audit.

  • node – Identifiant du nœud constituant la source des journaux d'audit (node1 or node2). Il existe un nœud pour une instance mono-AZ et deux nœuds de réplication pour une instance multi-AZ. Il ne s'agit pas des nœuds primaires et secondaires, car les rôles des nœuds primaires et secondaires au fil du temps. L'identificateur de nœud est une simple étiquette.

    • node1 – Premier nœud de la réplication (une instance mono-AZ ne comporte qu'un seul nœud).

    • node2 – Deuxième nœud de la réplication (une instance multi-AZ ne comporte deux nœuds).

  • file-name – Nom du fichier cible. Le nom du fichier est pris tel quel de SQL Server.

  • ext – Extension du fichier (zip ou sqlaudit):

    • zip – Si la compression est activée (par défaut).

    • sqlaudit – Si la compression est désactivée.

Création manuelle d'un rôle IAM pour SQL Server Audit

Généralement, lorsque vous créez une nouvelle option, le AWS Management Console rôle IAM et la politique de confiance IAM sont créés pour vous. Cependant, vous pouvez créer manuellement un rôle IAM à utiliser avec les audits SQL Server pour pouvoir le personnaliser avec les exigences supplémentaires que vous pourriez avoir. Pour ce faire, vous créez un rôle IAM et vous déléguez des autorisations pour que le service Amazon RDS puisse utiliser votre compartiment Amazon S3. Lorsque vous créez ce rôle IAM, vous attachez des politiques d'approbation et d'autorisation. La politique d'approbation permet à Amazon RDS d'assumer ce rôle. La politique d'autorisation définit les actions que ce rôle peut exécuter. Pour plus d'informations, consultez la section Création d'un rôle pour déléguer des autorisations à un AWS service dans le guide de l'utilisateur d'AWS Identity and Access Management.

Vous pouvez utiliser les exemples de cette section pour créer les relations d'approbation et les politiques d'autorisation dont vous avez besoin.

Voici un exemple de relation d'approbation de rôle pour SQL Server Audit. Elle utilise le principal de service rds.amazonaws.com pour autoriser RDS à écrire dans le compartiment S3. Un principal de service est un identifiant utilisé pour accorder des autorisations à un service. Chaque fois que vous autorisez l'accès à rds.amazonaws.com de cette manière, vous autorisez RDS à exécuter une action en votre nom. Pour en savoir plus sur les principaux de service, veuillez consulter Éléments de politique JSON d'AWS  : Principal.

Exemple relation d'approbation pour SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Nous vous recommandons d'utiliser les clés de contexte de condition globale aws:SourceArn et aws:SourceAccount dans des relations d'approbation basées sur les ressources pour limiter les autorisations du service à une ressource spécifique. C'est le moyen le plus efficace de se protéger contre le problème du député confus.

Vous pouvez utiliser les deux clés de contexte de condition globale et faire en sorte que la valeur aws:SourceArn contienne l'ID de compte. Dans ce cas, la valeur aws:SourceAccount et le compte dans la valeur aws:SourceArn doivent utiliser le même ID de compte lorsqu'ils sont utilisés dans la même instruction.

  • Utilisez aws:SourceArn si vous souhaitez un accès interservices pour une seule ressource.

  • Utilisez aws:SourceAccount si vous souhaitez autoriser une ressource de ce compte à être associée à l'utilisation interservices.

Dans la relation d'approbation, assurez-vous d'utiliser la clé de contexte de condition globale aws:SourceArn avec l'Amazon Resource Name (ARN) complet des ressources qui accèdent au rôle. Pour SQL Server Audit, veillez à inclure à la fois le groupe d'options de base de données et les instances de base de données, comme indiqué dans l'exemple suivant.

Exemple relation d'approbation avec la clé de contexte de condition globale pour SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier", "arn:aws:rds:Region:my_account_ID:og:option_group_name" ] } } } ] }

Dans l'exemple suivant de politique d'autorisation pour SQL Server Audit, nous spécifions un ARN pour le compartiment Amazon S3. Vous pouvez utiliser des ARN pour identifier un compte, un utilisateur ou un rôle spécifique auquel vous souhaitez accorder l'accès. Pour de plus amples informations sur l'utilisation des ARN, veuillez consulter Amazon Resource Names (ARN).

Exemple politique d'autorisations pour SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/key_prefix/*" } ] }
Note

L's3:ListAllMyBucketsaction est requise pour vérifier que le même AWS compte possède à la fois le compartiment S3 et l'instance de base de données SQL Server. L'action répertorie les noms des compartiments du compte.

Les espaces de noms de compartiment S3 sont globaux. Si vous supprimez accidentellement votre compartiment, un autre utilisateur peut créer un compartiment portant le même nom dans un compte différent. Ensuite, les données d'audit SQL Server sont écrites dans le nouveau compartiment.