Journalisation des audits de base de données - Amazon Redshift

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.

Journalisation des audits de base de données

Amazon Redshift consigne dans un journal les informations sur les connexions et les activités de l'utilisateur dans votre base de données. Ces journaux vous permettent de contrôler la base de données à des fins de sécurité et de résolution des problèmes, ce qui est un processus souvent appelé audit de la base de données. Les journaux peuvent être stockés dans :

  • Compartiments Amazon S3 : ils fournissent un accès pratique aux fonctions de sécurité des données pour les utilisateurs qui sont responsables de la surveillance des activités de la base de données.

  • Amazon CloudWatch - Vous pouvez consulter les données d'enregistrement des audits à l'aide des fonctionnalités intégrées CloudWatch, telles que les fonctionnalités de visualisation et les actions de configuration.

Note

SYS_CONNECTION_LOG collecte les données de journal de connexion pour Amazon Redshift sans serveur. Notez que lorsque vous collectez des données de journalisation d'audit pour Amazon Redshift Serverless, elles ne peuvent pas être envoyées vers des fichiers journaux, mais uniquement vers. CloudWatch

Journaux Amazon Redshift

Amazon Redshift enregistre les informations dans les fichiers journaux suivants :

  • Journal de connexion : consigne les tentatives d'authentification, les connexions et les déconnexions.

  • Journal de l'utilisateur : consigne les informations sur les modifications apportées aux définitions d'utilisateur de base de données.

  • Journal d'activité utilisateur : consigne chaque requête avant qu'elle soit exécutée sur la base de données.

Les journaux de connexion et utilisateur sont utiles principalement à des fins de sécurité. Vous pouvez utiliser le journal de connexion pour contrôler les informations sur les utilisateurs qui se connectent à la base de données ainsi que les informations de connexion associées. Il peut s'agir de leur adresse IP, du moment où la demande a été effectuée, du type d'authentification utilisé, etc. Vous pouvez utiliser le journal utilisateur pour surveiller les modifications apportées aux définitions des utilisateurs de base de données.

Le journal d'activité utilisateur est utile principalement à des fins de résolution de problèmes. Il effectue le suivi d'informations sur les types de requêtes exécutées par les utilisateurs et le système dans la base de données.

Les journaux de connexion et utilisateur correspondent aux informations stockées dans les tables système de votre base de données. Vous pouvez utiliser les tables système pour obtenir les mêmes informations, mais les fichiers journaux constituent un mécanisme de récupération et de vérification plus simple. Les fichiers journaux s'appuient sur les autorisations Amazon S3 plutôt que sur les autorisations de base de données pour exécuter des requêtes sur les tables de base de données. En outre, le fait d'afficher les informations dans des fichiers journaux plutôt que d'interroger les tables système vous permet de limiter l'impact de l'interaction avec la base de données.

Note

Les fichiers journaux ne sont pas aussi courants que les tables des journaux système que sont STL_USERLOG et STL_CONNECTION_LOG. Les enregistrements qui sont plus anciens que les derniers enregistrements, mais ne les incluent pas, sont copiés dans les fichiers journaux.

Note

Pour Amazon Redshift sans serveur, SYS_CONNECTION_LOG collecte les données de journal de connexion. Lorsque vous collectez des données de journalisation d'audit pour Amazon Redshift Serverless, elles ne peuvent pas être envoyées vers des fichiers journaux, mais uniquement vers. CloudWatch

Journal de connexion

Enregistre les tentatives d'authentification, ainsi que les connexions et déconnexions. Le tableau suivant décrit les informations contenues dans le journal de connexion. Pour plus d'informations sur ces champs, veuillez consulter STL_CONNECTION_LOG dans le Guide du développeur de base de données Amazon Redshift. Pour en savoir plus sur les données de journal de connexion collectées pour Amazon Redshift sans serveur, consultez SYS_CONNECTION_LOG.

Nom de la colonne Description
event Connexion ou événement d'authentification.
recordtime Heure de l'événement.
remotehost Nom ou adresse IP de l'hôte distant.
remoteport Numéro de port de l'hôte distant.
pid ID de processus associé à l'instruction.
dbname Nom de la base de données.
nom d’utilisateur Nom d'utilisateur.
authmethod Méthode d'authentification.
duration Durée de connexion en microsecondes.
sslversion Version du protocole SSL (Secure Sockets Layer).
sslcipher Chiffrement SSL.
mtu Unité de transmission maximale (MTU).
sslcompression Type de compression SSL.
sslexpansion Type d'extension SSL.
iamauthguid L'ID d'authentification AWS Identity and Access Management (IAM) pour la AWS CloudTrail demande. Il s'agit de l'identifiant de l'appel d'GetClusterCredentialsAPI destiné à créer les informations d'identification utilisées pour une connexion donnée.
application_name Nom initial ou mis à jour de l’application pour une séance.
os_version La version du système d’exploitation de la machine cliente qui se connecte à votre cluster Amazon Redshift.
driver_version Version du pilote ODBC ou JDBC qui se connecte à votre cluster Amazon Redshift à partir de vos outils clients SQL tiers.
plugin_name Le nom du plugin utilisé pour se connecter à votre cluster Amazon Redshift.
protocol_version La version du protocole interne que le pilote Amazon Redshift utilise pour établir sa connexion avec le serveur.
sessionid Identifiant unique au niveau mondial pour la session en cours.
compression Algorithme de compression utilisé pour la connexion.

Journal utilisateur

Enregistre les détails des modifications suivantes apportées à un utilisateur de base de données :

  • Créer un utilisateur

  • Supprimer un utilisateur

  • Modifier un utilisateur (renommer)

  • Modifier un utilisateur (modifier les propriétés)

Nom de la colonne Description
userid ID de l'utilisateur affecté par la modification.
nom d’utilisateur Nom d'utilisateur de l'utilisateur affecté par la modification.
oldusername Pour une action d’attribution d’un nouveau nom, le nom original de l’utilisateur. Pour toute autre action, ce champ est vide.
action Action qui s’est produite. Valeurs valides :
  • Alter

  • Création

  • Drop

  • Rename

usecreatedb Si true (1), indique que l'utilisateur a créé des autorisations de base de données.
usesuper Si true (1), indique que l'utilisateur est un super-utilisateur.
usecatupd Si true (1), indique que l'utilisateur peut mettre à jour les catalogues système.
valuntil Date d'expiration du mot de passe.
pid ID du processus.
xid ID de transaction.
recordtime Heure au format UTC du début de la requête.

Interrogez la vue système SYS_USERLOG pour trouver des informations supplémentaires sur les modifications apportées aux utilisateurs. Cette vue comprend les données de journal d'Amazon Redshift sans serveur.

Journal d'activité utilisateur

Consigne chaque requête avant qu'elle soit exécutée sur la base de données.

Nom de la colonne Description
recordtime Heure de l'événement.
db Nom de la base de données.
utilisateur Nom d'utilisateur.
pid ID de processus associé à l'instruction.
userid ID de l'utilisateur.
xid ID de transaction.
query Préfixe LOG: suivi du texte de la requête incluant les sauts de ligne.

Activation de la journalisation

La journalisation des audits n'est pas activée par défaut dans Amazon Redshift. Lorsque vous activez la journalisation sur votre cluster, Amazon Redshift exporte les journaux vers Amazon CloudWatch, ou crée et télécharge des journaux vers Amazon S3, qui capturent les données depuis le moment où la journalisation des audits est activée jusqu'à aujourd'hui. Chaque mise à jour de journalisation constitue la suite des journaux précédents.

La journalisation des audits vers CloudWatch ou vers Amazon S3 est un processus facultatif. La journalisation dans les tables système n'est pas facultative et se fait automatiquement. Pour plus d'informations sur la journalisation dans les tables système, veuillez consulter la rubrique Référence des tables système dans le Guide du développeur de la base de données Amazon Redshift.

Le journal de connexion, le journal utilisateur et le journal d'activité utilisateur sont activés ensemble à l' AWS Management Console aide de la référence d'API Amazon Redshift ou du AWS Command Line Interface ()AWS CLI. Pour le journal d'activité utilisateur, vous devez également activer le paramètre de base de données enable_user_activity_logging. Si vous activez uniquement la fonction de journalisation des audits, mais pas le paramètre associé, les journaux d'audit de base de données enregistrent des informations uniquement pour les journaux de connexion et utilisateur, mais pas pour le journal d'activité utilisateur. Le paramètre enable_user_activity_logging n'est pas activé (false) par défaut. Vous pouvez le définir sur true pour activer le journal d'activité de l'utilisateur. Pour plus d’informations, consultez Groupes de paramètres Amazon Redshift.

Envoi de journaux d'audit à Amazon CloudWatch

Lorsque vous activez la connexion à CloudWatch, Amazon Redshift exporte les données de connexion au cluster, d'utilisateur et d'activité des utilisateurs vers un groupe de CloudWatch journaux Amazon Logs. Les données du journal ne changent pas, en termes de schéma. CloudWatch est conçu pour surveiller les applications et vous pouvez l'utiliser pour effectuer des analyses en temps réel ou le configurer pour qu'il prenne des mesures. Vous pouvez également utiliser Amazon CloudWatch Logs pour stocker vos enregistrements de journal dans un espace de stockage durable.

L'utilisation CloudWatch pour afficher les journaux est une alternative recommandée au stockage des fichiers journaux dans Amazon S3. Cela ne nécessite pas beaucoup de configuration et peut répondre à vos exigences de surveillance, surtout si vous l'utilisez déjà pour surveiller d'autres services et d’autres applications.

Groupes de journaux et événements de journalisation sur Amazon CloudWatch

Après avoir sélectionné les journaux Amazon Redshift à exporter, vous pouvez surveiller les événements des journaux dans Amazon CloudWatch Logs. Un nouveau groupe de journaux est automatiquement créé pour Amazon Redshift Serverless sous le préfixe suivant, dans lequel log_type représente le type de journal.

/aws/redshift/cluster/<cluster_name>/<log_type>

Par exemple, si vous choisissez d'exporter le journal des connexions, les données du journal sont stockées dans le groupe de journaux suivant.

/aws/redshift/cluster/cluster1/connectionlog

Les événements de journal sont exportés vers un groupe de journaux à l'aide du flux de journaux. Pour rechercher des informations dans les événements de journal de votre point de terminaison sans serveur, utilisez la console Amazon CloudWatch Logs AWS CLI, ou l'API Amazon CloudWatch Logs. Pour de plus amples informations sur la recherche et le filtrage des données de journaux, veuillez consulter Création de métriques à partir d'événements du journal à l'aide de filtres.

Dans CloudWatch, vous pouvez rechercher les données de votre journal à l'aide d'une syntaxe de requête garantissant granularité et flexibilité. Pour plus d'informations, consultez la section Syntaxe de requête CloudWatch Logs Insights.

Migration vers la journalisation des CloudWatch audits Amazon

Dans tous les cas où vous envoyez des journaux à Amazon S3 et que vous modifiez la configuration, par exemple pour envoyer des journaux à CloudWatch, les journaux qui restent dans Amazon S3 ne sont pas affectés. Vous pouvez toujours interroger les données de journaux dans les compartiments Simple Storage Service (Amazon S3) où elles se trouvent.

Gestion des fichiers journaux dans Simple Storage Service (Amazon S3)

Le nombre et la taille des fichiers journaux Amazon Redshift dans Amazon S3 dépendent fortement de l'activité de votre cluster. Si vous avez un cluster actif qui génère un grand nombre de journaux, Amazon Redshift peut générer des fichiers journaux plus fréquemment. Vous pouvez disposer d'une série de fichiers journaux pour le même type d'activité, par exemple plusieurs journaux de connexion au cours de la même heure.

Lorsqu’Amazon Redshift utilise Amazon S3 pour stocker les journaux, vous devez payer des frais pour le stockage que vous utilisez dans Amazon S3. Avant de configurer la journalisation dans Amazon S3, vous devez avoir planifié la durée de stockage des fichiers journaux. Dans le cadre de ce plan, déterminez quand les fichiers journaux peuvent être supprimés ou archivés en fonction de vos besoins en audit. Le plan que vous créez dépend fortement du type de données que vous stockez, telles que les données soumises à des exigences réglementaires ou de conformité. Pour de plus amples informations sur la tarification d'Amazon S3, veuillez consulter la tarification Amazon Simple Storage Service (S3).

Limites lorsque vous activez la journalisation sur Amazon S3

La journalisation d'audit présente les contraintes suivantes :

  • Vous pouvez seulement utiliser le chiffrement des clés gérées par Amazon S3 (SSE-S3) (AES-256).

  • Les compartiments Amazon S3 doivent avoir la fonction Verrouillage des objets S3 désactivée.

Autorisations du compartiment pour la journalisation des audits Amazon Redshift

Lorsque vous activez la journalisation dans Amazon S3, Amazon Redshift collecte des informations de journalisation et les charge dans les fichiers journaux stockés dans Amazon S3. Vous ou utiliser un compartiment existant ou créer un compartiment. Amazon Redshift requiert les autorisations IAM suivantes pour le compartiment :

  • s3:GetBucketAcl Le service nécessite des autorisations de lecture pour le compartiment Amazon S3 afin de pouvoir identifier le propriétaire du compartiment.

  • s3:PutObject Le service nécessite des autorisations de placement d'objet pour charger les journaux. De plus, l'utilisateur ou le rôle IAM qui permet la journalisation doit avoir les autorisations s3:PutObject pour le compartiment Amazon S3. Chaque fois que les journaux sont chargés, le service détermine si le propriétaire actuel du compartiment correspond au propriétaire du compartiment au moment de l'activation de la journalisation. Si ces propriétaires ne correspondent pas, vous recevez une erreur.

Si, lorsque vous activez la journalisation d'audit, vous sélectionnez l'option permettant de créer un compartiment, les autorisations correctes sont appliquées à celui-ci. Toutefois, si vous créez votre propre compartiment dans Amazon S3 ou que vous utilisez un compartiment existant, veillez à ajouter une politique de compartiment incluant le nom du compartiment. Les journaux sont fournis à l'aide des informations d'identification du principal du service. Dans la plupart des cas Régions AWS, vous ajoutez le nom principal du service Redshift, redshift.amazonaws.com.

La politique de compartiment utilise le format suivant. ServiceNameet BucketNamesont des espaces réservés à vos propres valeurs. Spécifiez également les actions et les ressources associées dans la politique de compartiment.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "ServiceName" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::BucketName", "arn:aws:s3:::BucketName/*" ] } ] }

L'exemple suivant présente une politique de compartiment pour la région USA Est (Virginie du Nord) et le compartiment nommé AuditLogs.

{ "Version": "2008-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::AuditLogs", "arn:aws:s3:::AuditLogs/*" ] } ] }

Les régions qui ne sont pas activées par défaut, également appelées régions « opt-in », nécessitent un nom de principal du service spécifique à une région. Pour cela, le nom du principal du service inclut la région, au format redshift.region.amazonaws.com. Par exemple,redshift.ap-east-1.amazonaws.com pour la région Asie-Pacifique (Hong Kong). Pour obtenir une liste des régions qui ne sont pas activées par défaut, consultez la section Gestion des Régions AWS dans Références générales AWS.

Note

Le nom du principal du service spécifique à la région correspond à la région où se trouve le cluster.

Bonnes pratiques relatives aux fichiers journaux

Lorsque Redshift charge des fichiers journaux sur Amazon S3, les fichiers volumineux peuvent être téléchargés en plusieurs parties. Si un chargement partitionné ne réussit pas, il est possible que certaines parties d'un fichier restent dans le compartiment Amazon S3. Cela peut entraîner des coûts de stockage supplémentaires. Il est donc important de comprendre ce qui se produit lorsqu'un chargement partitionné échoue. Pour obtenir des explications détaillées sur le chargement partitionné pour les journaux d'audit, veuillez consulter Chargement et copie d'objets à l'aide d'un chargement partitionné et Interruption d'un chargement partitionné.

Pour plus d'informations sur la création de compartiments Amazon S3 et l'ajout de politiques de compartiments, veuillez consulter la rubrique Création d'un compartiment et Modification des autorisations de compartiment dans le Guide de l'utilisateur Amazon Simple Storage Service.

Structure du compartiment pour la journalisation d'audit Amazon Redshift

Par défaut, Amazon Redshift organise les fichiers journaux dans le compartiment Amazon S3 en utilisant la structure de compartiment et d'objet suivante :

AWSLogs/AccountID/ServiceName/Region/Year/Month/Day/AccountID_ServiceName_Region_ClusterName_LogType_Timestamp.gz

Voici un exemple : AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz.

Si vous fournissez un préfixe de clé Amazon S3, placez-le au début de la clé.

Par exemple, si vous spécifiez un préfixe « myprefix » : myprefix/AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz

Le préfixe de clé Amazon S3 ne doit pas dépasser 512 caractères. Il ne peut pas contenir d'espaces ( ), de guillemets doubles ("), d'apostrophes (') et de barre oblique inverse (\). Un certain nombre de caractères spéciaux et de caractères de contrôle ne sont pas autorisés non plus. Les codes hexadécimaux de ces caractères sont les suivants :

  • x00 à x20

  • x22

  • x27

  • x5c

  • x7f ou plus

Dépannage de la journalisation des audits Amazon Redshift dans Amazon S3

La journalisation d'audit Amazon Redshift peut être interrompue pour les raisons suivantes :

  • Amazon Redshift n'a pas l'autorisation de télécharger les journaux vers le compartiment Amazon S3. Vérifiez que le compartiment est configuré avec la bonne stratégie IAM. Pour plus d’informations, consultez Autorisations du compartiment pour la journalisation des audits Amazon Redshift.

  • Le propriétaire du compartiment a changé. Quand Amazon Redshift charge les journaux, il vérifie que le propriétaire du compartiment est le même que lors de l'activation de la journalisation. Si le propriétaire du compartiment a changé, Amazon Redshift ne peut pas charger les journaux tant que vous ne configurez pas d'autre compartiment à utiliser pour la journalisation d'audit.

  • Impossible de trouver le compartiment. Si le compartiment est supprimé dans Amazon S3, Amazon Redshift ne peut pas télécharger les journaux. Vous devez recréer le compartiment ou configurer Amazon Redshift pour charger les journaux dans un autre compartiment.

Journalisation des appels d'API Amazon Redshift avec AWS CloudTrail

Amazon Redshift est intégré à AWS CloudTrail un service qui fournit un enregistrement des actions effectuées par un utilisateur, un rôle ou un AWS service dans Amazon Redshift. CloudTrail capture tous les appels d'API pour Amazon Redshift sous forme d'événements. Pour plus d'informations sur l'intégration d'Amazon Redshift avec AWS CloudTrail, consultez Logging with. CloudTrail

Vous pouvez utiliser la journalisation des audits de base de données Amazon Redshift CloudTrail indépendamment ou en complément de celle-ci.

Pour en savoir plus CloudTrail, consultez le guide de AWS CloudTrail l'utilisateur.