Exercice : Gérez votre sécurité

Effectué

Une fois votre instance Azure SQL Database sécurisée au niveau de la mise en réseau, de l’authentification et de la protection des données, la dernière étape consiste à comprendre comment gérer la sécurité de façon continue. La gestion de la sécurité comprend l’audit, le monitoring et la classification des données.

Audit

L’audit permet de rester en conformité avec les réglementations, de comprendre l’activité des bases de données et d’obtenir des informations sur les écarts et anomalies qui pourraient indiquer des violations potentielles de sécurité. Dans cette activité, vous avez mis en place l’audit au niveau du serveur, mais il est également disponible au niveau de la base de données.

Comme alternative à l’audit de SQL Server, Azure SQL Database comprend une fonction d’audit Azure SQL. Celle-ci est optimisée par l’audit de SQL Server et, comme SQL Server, prend en charge des groupes d’actions et des actions d’audit. La fonctionnalité d’audit suit les événements de base de données et de serveur, et les écrit dans un journal d’audit se trouvant dans un stockage Azure, dans Log Analytics ou dans une ressource Azure Event Hubs. Si vous pointez sur un compte de Stockage Blob Azure, vous pouvez stocker et analyser vos résultats dans des fichiers XEvents. Avec Log Analytics, vous déverrouillez la possibilité d’interroger vos journaux avec le langage de requête Kusto (KQL) et de tirer parti des tableaux de bord d’audit Log Analytics.

Configurer l’audit

Dans un exercice précédent concernant le déploiement de SQL Database, vous avez configuré l’audit au niveau du serveur, mais il est également disponible au niveau de la base de données. Dans un prochain exercice, vous allez voir comment accéder aux fichiers envoyés au Stockage Blob Azure, à KQL et aux tableaux de bord de Log Analytics afin de les exploiter.

Effectuez les étapes suivantes pour configurer un espace de travail Log Analytics :

  1. Dans la barre de recherche du portail Azure, entrez Log Analytics, puis sélectionnez Espaces de travail Log Analytics dans les résultats. Le volet Espaces de travail Log Analytics s’affiche.

  2. Sélectionnez Create (Créer). Le menu Créer un espace de travail Log Analytics s’affiche.

  3. Sous l’onglet Informations de base, entrez les valeurs suivantes pour chaque paramètre.

    Paramètre Valeur
    Détails du projet
    Abonnement Abonnement Concierge
    Groupe de ressources Dans la liste déroulante, sélectionnez [Groupe de ressources de bac à sable].
    Détails de l’instance
    Nom Entrez azuresql-la
    Région Sélectionner l’emplacement le plus proche dans la liste suivante

    Le bac à sable gratuit vous permet de créer des ressources dans certaines régions Azure du monde. Sélectionnez une région dans la liste suivante au moment où vous créez des ressources :

    • USA Ouest 2
    • États-Unis - partie centrale méridionale
    • USA Centre
    • USA Est
    • Europe Ouest
    • Asie Sud-Est
    • Japon Est
    • Brésil Sud
    • Australie Sud-Est
    • Inde centrale
  4. Sélectionnez Vérifier + créer, attendez que vos entrées soient validées, puis sélectionnez Créer. Attendez que la ressource soit déployée.

  5. Sélectionnez Accéder à la ressource. Le volet Vue d’ensemble de votre espace de travail Log Analytics s’affiche.

  6. Dans le portail Azure, accédez à votre base de données AdventureWorks.

  7. Dans le menu, sous Sécurité, sélectionnez audit. Passez en revue les options.

    Vous pouvez appliquer l’audit au niveau du serveur, ce qui permet de l’appliquer à toutes les bases de données du serveur logique Azure SQL Database. Si vous appliquez également l’audit au niveau de la base de données (ce que vous allez faire dans cette unité), les deux audits se produisent en parallèle : l’un ne remplace pas l’autre.

  8. Sélectionnez le bouton bascule pour Activer l’audit Azure SQL.

  9. Sélectionnez la case à cocher Stockage, puis renseignez les champs obligatoires :

    • Pour Abonnement, dans la liste déroulante, sélectionnez l’Abonnement Concierge.
    • Pour Compte de stockage, dans la liste déroulante, sélectionnez le compte qui commence par sql suivi d’une chaîne aléatoire de lettres et de chiffres.
    • Laissez le Type d’authentification du stockage comme option par défaut des Clés d’accès du stockage.

    Le compte de stockage sql est utilisé pour collecter les fichiers journaux XEvent qui sont enregistrés sous forme de collection de fichiers blob dans un conteneur nommé sqldbauditlogs. Dans une prochaine activité, vous passerez en revue le conteneur pour voir en quoi les fichiers journaux diffèrent de Log Analytics.

    Conseil

    Si vous ne voyez aucun compte de stockage, créez un compte. Vous allez peut-être devoir actualiser votre page après quelques minutes pour faire apparaître votre compte.

    Si vous comptez effectuer un audit de votre environnement de production, créez un compte de stockage distinct pour les journaux d’audit.

  10. Sélectionnez Propriétés avancées pour développer la section, puis définissez les éléments de configuration suivants :

    • Pour Conservation (jours), entrez 7
    • Pour Clé d’accès de stockage, sélectionnez Primaire.

    Remarque

    Si vous ne voyez pas Propriétés avancées, sélectionnez Enregistrer dans la barre de commandes et répétez les instructions de configuration pour cette page.

  11. Sélectionnez la case à cocher Log Analytics, puis renseignez les champs obligatoires :

    • Pour Abonnement, sélectionnez Abonnement Concierge dans la liste déroulante.
    • Pour Log Analytics, sélectionnez l’espace de travail Log Analytics que vous avez créé dans cet exercice (asuresql-la).
  12. Sélectionnez Enregistrer.

    Le traitement de la configuration peut prendre quelques minutes.

Vous avez à présent activé l’audit pour un compte de stockage et un espace de travail Azure Log Analytics. Plus tard, vous approfondirez les fonctionnalités d’audit dans Azure SQL. Vous verrez comment analyser les journaux d’audit pour voir toutes les modifications que vous avez apportées tout au long du module, ainsi que d’autres cas d’usage intéressants.

Registre pour Azure SQL Database

La fonctionnalité de registre fournit une preuve de falsification et une preuve de chiffrement des capacités d’intégrité des données dans votre base de données. Cette preuve peut aider à rationaliser le processus d’audit.

Le registre vous aide à protéger les données contre les attaquants ou les utilisateurs dotés de privilèges élevés, tels que des administrateurs de base de données, des administrateurs système et des administrateurs cloud. Comme avec un registre traditionnel, la fonctionnalité préserve les données historiques. Quand une transaction dans une table du registre modifie les données, l’événement est haché SHA-256 par chiffrement à l’aide d’une structure arborescente de données Merkle qui crée un hachage racine représentant toutes les lignes de la transaction. Les transactions traitées par la base de données font l’objet d’un code de hachage SHA-256 à l’aide d’une structure de données arborescente Merkle. Le résultat est un code de hachage racine qui forme un bloc. Le bloc est ensuite soumis à un hachage SHA-256 utilisant le code de hachage racine du bloc, ainsi que le code de hachage racine du bloc précédent comme entrée de la fonction de hachage. Ce hachage forme une blockchain. Si une ligne est mise à jour dans la base de données, sa valeur précédente est conservée et protégée dans une table d’historique. Le registre tient une chronique de toutes les modifications apportées à la base de données au fil du temps.

La fonctionnalité de registre est introduite dans les tables sous deux formes différentes :

  • Tables de registre pouvant être mises à jour qui vous permettent de mettre à jour et supprimer des lignes dans vos tables
  • Tables de registre d’ajout uniquement qui n’autorisent que les insertions dans vos tables

Tant les tables de registre pouvant être mises à jour que les tables de registre pour ajout uniquement fournissent des fonctionnalités de preuve de fraude et d’investigation numérique.

Exercice sur l’utilisation d’un registre pour Azure SQL Database

Dans l’exercice de création de l’instance Azure SQL Database, nous avons ajouté une base de données appelée myLedgerDatabase et créé une table appelée Account.Balance. Dans cet exercice, nous allons insérer des données, effectuer des mises à jour des données et interroger la table d’historique et les vues de registre pour consulter le suivi en cours et la relation entre les tables.

  1. Ouvrez SSMS et connectez-vous à votre serveur logique Azure SQL Database.

  2. Cliquez avec le bouton droit sur la base de données myLedgerDatabase et sélectionnez Nouvelle requête.

  3. Insérez le nom de Nick Jones en tant que nouveau client avec un solde d’ouverture de 50 USD.

    INSERT INTO [Account].[Balance]
    VALUES (1, 'Jones', 'Nick', 50);
    
  4. Insérez les noms de John Smith, Joe Smith et Mary Michaels en tant que nouveaux clients avec des soldes d’ouverture de 500 USD, 30 USD et 200 USD respectivement.

    INSERT INTO [Account].[Balance]
    VALUES (2, 'Smith', 'John', 500),
    (3, 'Smith', 'Joe', 30),
    (4, 'Michaels', 'Mary', 200);
    
  5. Affichez la table de registre pouvant être mise à jour [Account].[Balance] et spécifiez les colonnes GENERATED ALWAYS ajoutées à la table. Sélectionnez Exécuter pour exécuter votre requête.

    SELECT [CustomerID]
       ,[LastName]
       ,[FirstName]
       ,[Balance]
       ,[ledger_start_transaction_id]
       ,[ledger_end_transaction_id]
       ,[ledger_start_sequence_number]
       ,[ledger_end_sequence_number]
     FROM [Account].[Balance];  
    

    Dans la fenêtre des résultats, vous verrez d’abord les valeurs insérées par vos commandes T-SQL, ainsi que les métadonnées système utilisées pour la traçabilité des données.

    • La colonne ledger_start_transaction_id indique l’ID de transaction unique associé à la transaction qui a inséré les données. Comme John, Joe et Mary ont été insérés lors de la même transaction, ils partagent le même ID de transaction.
    • La colonne ledger_start_sequence_number indique l’ordre dans lequel les valeurs ont été insérées par la transaction.
  6. Mettez à jour le solde de Nick de 50 à 100.

    UPDATE [Account].[Balance] SET [Balance] = 100
    WHERE [CustomerID] = 1;
    
  7. Affichez l’affichage des registres [Account].[Balance], ainsi que l’affichage système des registres de transactions pour identifier les utilisateurs qui ont apporté les modifications. Sélectionnez Exécuter pour exécuter la requête.

     SELECT
     t.[commit_time] AS [CommitTime] 
     , t.[principal_name] AS [UserName]
     , l.[CustomerID]
     , l.[LastName]
     , l.[FirstName]
     , l.[Balance]
     , l.[ledger_operation_type_desc] AS Operation
     FROM [Account].[Balance_Ledger] l
     JOIN sys.database_ledger_transactions t
     ON t.transaction_id = l.ledger_transaction_id
     ORDER BY t.commit_time DESC;
    

    Le solde du compte de Nick a été mis à jour avec succès dans la table de registre pouvant être mise à jour avec la valeur 100.
    La vue du registre indique que la mise à jour de la table du registre est une opération DELETE sur la ligne d’origine contenant 50. Le solde avec l’opération INSERT correspondante d’une nouvelle ligne contenant 100 montre le nouveau solde de Nick.

Supervision

Le monitoring et la gestion de la sécurité comportent deux aspects :

  • Le niveau Azure
  • Le niveau de la base de données ou du serveur

Dans Azure, vous pouvez appliquer des outils comme des journaux d’activité et l’audit du contrôle d’accès en fonction du rôle.

Dans votre instance Azure SQL Database, vous pouvez configurer l’audit Azure SQL et appliquer des vues de gestion dynamique, des métriques et des alertes pour superviser les événements liés à la sécurité. Par exemple, sys.event_log vous permet de suivre le nombre de connexions ayant échoué et abouti, ainsi que le nombre de connexions bloquées par le pare-feu.

Microsoft vous recommande de configurer Microsoft Defender pour le cloud, notamment de définir des alertes pour Advanced Threat Protection. Nous abordons ces éléments de sécurité dans la section et l’exercice qui suivent. Enfin, vous pouvez utiliser Microsoft Defender pour le cloud afin de surveiller, gérer et recevoir des recommandations sur toutes les ressources de votre patrimoine Azure.

Découverte et classification des données

Le service Découverte et classification des données constitue un nouveau paradigme de protection des informations pour Azure SQL Database. Le service vise à protéger les données, et non uniquement la base de données. Ce paradigme inclut ce qui suit :

  • Découverte des données potentiellement sensibles à classifier et suggestions les concernant
  • Possibilité d’ajouter de manière permanente des étiquettes aux colonnes à l’aide d’attributs de métadonnées
  • Possibilité d’auditer et d’interroger l’accès aux données sensibles

Azure SQL offre à la fois une stratégie Information Protection SQL ou Microsoft dans la classification des données et vous pouvez en choisir une en fonction de vos besoins.

La vue du portail est uniquement disponible pour Azure SQL, mais SQL Server prend en charge une fonctionnalité similaire grâce à un Assistant dans SQL Server Management Studio.

Pour plus d’informations, consultez Découverte et classification des données.

Microsoft Defender pour le cloud

Microsoft Defender pour le cloud est un package unifié de fonctionnalités de sécurité SQL avancées. Il vous permet d’activer et de gérer deux fonctionnalités principales à partir d’un seul et même emplacement :

  • Évaluation des vulnérabilités
  • Advanced Threat Protection

Évaluation des vulnérabilités

Au plus haut niveau, l’évaluation des vulnérabilités SQL est un service d’analyse offrant une visibilité sur l’état de votre sécurité et proposant des actions pour résoudre les problèmes potentiels. Lorsque vous configurez des analyses récurrentes périodiques, vous permettez au service d’analyser vos bases de données tous les sept jours et de vérifier les éventuelles vulnérabilités. Vous pouvez ensuite choisir d’envoyer ces rapports aux administrateurs, aux propriétaires d’abonnement ou à toute autre personne devant être informée des modifications. Pour que ce service fonctionne, vous devez spécifier un compte de stockage dans lequel stocker les résultats.

Advanced Threat Protection

Avec Advanced Threat Protection, vous pouvez détecter les menaces potentielles et y répondre dès qu’elles se produisent en recevant des alertes de sécurité sur les activités anormales. Advanced Threat Protection s’appuie sur des technologies avancées de supervision et de Machine Learning pour détecter si l’une des menaces suivantes existe :

  • Injection de code SQL
  • Vulnérabilité à l’injection de code SQL
  • Exfiltration de données
  • Action non sécurisée
  • Tentative d’attaque par force brute
  • Connexion cliente anormale

Les deux prochains exercices vont vous plonger dans les fonctionnalités que fournit Microsoft Defender pour le cloud, et Azure SQL en général, et dans les scénarios contre lesquels elles protègent.

Sécurité de niveau ligne

La sécurité au niveau des lignes vous permet d'utiliser l'appartenance à un groupe ou le contexte d'exécution pour contrôler l'accès aux lignes dans une table de base de données.

La sécurité au niveau des lignes vous aide à implémenter des restrictions sur l’accès aux lignes des données. Par exemple, vous pouvez vous assurer que les collaborateurs accèdent uniquement aux lignes de données qui sont pertinentes pour leur département. Un autre exemple consiste à restreindre l’accès aux données de clients aux seules données relatives à leur entreprise.

La logique de la restriction d'accès est située dans la couche de base de données plutôt que loin des données d'une autre couche Application. Le système de base de données applique les restrictions d'accès chaque fois que cet accès aux données est tenté à partir d'une couche quelconque. Cela rend votre système de sécurité plus fiable et robuste en réduisant sa surface d’exposition.

La sécurité au niveau des lignes prend en charge deux types de prédicats de sécurité.

  • Les prédicats de filtre filtrent de manière silencieuse les lignes disponibles pour les opérations de lecture (SELECT, UPDATE et DELETE)
  • Les prédicats BLOCK bloquent de manière explicite les opérations d’écriture (AFTER INSERT, AFTER UPDATE, BEFORE UPDATE et BEFORE DELETE) qui violent le prédicat

Contrôle des connaissances

1.

Parmi les méthodes suivantes, laquelle vous permet de superviser les événements liés à la sécurité pour Azure SQL Database ?