Sécurisation des bases de données (SQL Server)
m (a déplacé Mise en oeuvre de TDE (SQL Server) vers Sécurisation des bases de données (SQL Server)) |
(→Schéma personnalisé) |
||
(17 révisions intermédiaires par un utilisateur sont masquées) | |||
Ligne 1 : | Ligne 1 : | ||
− | == | + | ==Schéma personnalisé== |
− | + | A partir de la version 910 il est possible d'utiliser un schéma personnalisé pour les bases de données à la place du schéma par défaut (dbo). | |
− | + | Lorsqu'un schéma personnalisé est utilisé, associé à un utilisateur, l'assistant exécute les actions suivantes : | |
− | {{tip|TDE n'est disponible qu'à partir de la version SQL Enterprise | + | Dans le contexte du serveur : |
+ | * Création d'un Login (L) | ||
+ | |||
+ | Dans le contexte de la base de données : | ||
+ | * Création d'un utilisateur (U) pour le login (L) ayant comme schéma par défaut le schéma personnalisé (S) | ||
+ | * Création du schéma personnalisé (S) autorisé par l'utilisateur (U) | ||
+ | * Ajout du droit ALTER à l'utilisateur (U) | ||
+ | |||
+ | {{warning|Il n'est pas possible d'utiliser des schémas différents par utilisateur, le schéma doit être commun à tous les utilisateurs}} | ||
+ | |||
+ | ==Rôle et Droits des utilisateurs== | ||
+ | |||
+ | Les droits minimaux pour un utilisateur Sage FRP 1000 sont : | ||
+ | |||
+ | * Pour un schéma personnalisé : rôle PUBLIC et droit ALTER | ||
+ | * Pour le schéma par défaut dbo : rôle db_owner | ||
+ | |||
+ | L'utilisateur doit avoir défini le schéma comme le schéma par défaut. | ||
+ | |||
+ | Pour créer un login et un utilisateur pour une base Sage FRP 1000 utilisant le schéma par défaut dbo : | ||
+ | <pre> | ||
+ | USE MASTER | ||
+ | GO | ||
+ | CREATE LOGIN mylogin WITH PASSWORD='mysecretpassword' | ||
+ | GO | ||
+ | |||
+ | USE SAGEFRP1000DATABASE | ||
+ | GO | ||
+ | |||
+ | CREATE USER mylogin FOR LOGIN mylogin WITH DEFAULT_SCHEMA=dbo | ||
+ | GO | ||
+ | |||
+ | EXEC sp_addrolemember 'db_owner', 'mylogin' | ||
+ | GO | ||
+ | |||
+ | USE MASTER | ||
+ | GO | ||
+ | </pre> | ||
+ | |||
+ | Pour un schéma personnalisé : | ||
+ | |||
+ | <pre> | ||
+ | USE MASTER | ||
+ | GO | ||
+ | CREATE LOGIN mylogin WITH PASSWORD='mysecretpassword' | ||
+ | GO | ||
+ | |||
+ | USE SAGEFRP1000DATABASE | ||
+ | GO | ||
+ | |||
+ | CREATE USER mylogin FOR LOGIN mylogin WITH DEFAULT_SCHEMA=myschema | ||
+ | GO | ||
+ | |||
+ | GRANT ALTER TO mylogin | ||
+ | GO | ||
+ | |||
+ | CREATE SCHEMA myschema AUTHORIZATION mylogin | ||
+ | GO | ||
+ | |||
+ | USE MASTER | ||
+ | GO | ||
+ | </pre> | ||
+ | |||
+ | ==Encryptage des données sur disque== | ||
+ | TDE est une technologie de Microsoft SQL Server qui permet d'encrypter les données sur disques de manière transparente pour les Applications. | ||
+ | |||
+ | [https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption Voir ici : Transparent data encryption] | ||
+ | |||
+ | {{tip|TDE n'est disponible qu'à partir de la version SQL Enterprise ainsi que sur SQL Azure}} | ||
A titre d'exemple la mise en oeuvre de TDE peut être réalisée sur la base des scripts suivants : | A titre d'exemple la mise en oeuvre de TDE peut être réalisée sur la base des scripts suivants : | ||
Ligne 37 : | Ligne 105 : | ||
</pre> | </pre> | ||
− | === | + | ===Alternative à TDE=== |
+ | Il existe des solutions alternatives à la mise en oeuvre de TDE. | ||
+ | |||
+ | * Bitlocker | ||
+ | : Bitlocker est une solution de cryptage de disque mais n'offre pas le même niveau de sécurité que TDE, en particulier un utilisateur connecté sur le serveur peut accéder aux fichiers de données de SQL non cryptés. Il n'est pas recommandé d'utiliser Bitlocker. | ||
+ | |||
+ | * SQL Server always encrypted (A partir SQL Server 2016 SP1) | ||
+ | : SQL Server always encrypted nécessite des modifications de l'application et n'est pas supporté. | ||
+ | |||
+ | * [https://www.database-encryption.com/index.html dbdefence] | ||
+ | : dbdefence est une solution tiers équivalente à TDE. dbdefence a été testé avec succès mais n'est pas supporté. | ||
+ | |||
+ | ==Sécurisation des connexions== | ||
SSL permet d'encrypter les connexions clientes et de chiffrer les données échangées entre le serveur et les clients. | SSL permet d'encrypter les connexions clientes et de chiffrer les données échangées entre le serveur et les clients. | ||
− | [https://technet.microsoft.com/en-us/library/ms189067(v=sql.105).aspx Encrypting connections] | + | [https://technet.microsoft.com/en-us/library/ms189067(v=sql.105).aspx Voir ici : Encrypting connections] |
{{tip|SSL est activé par défaut sur SQL Azure}} | {{tip|SSL est activé par défaut sur SQL Azure}} | ||
Ligne 46 : | Ligne 126 : | ||
SSL peut être configuré coté serveur pour forcer toutes les connexions à utiliser SSL, ou bien coté client pour n'encrypter que certaines connexions. | SSL peut être configuré coté serveur pour forcer toutes les connexions à utiliser SSL, ou bien coté client pour n'encrypter que certaines connexions. | ||
− | + | ===Coté serveur :=== | |
[[image:sql_server_ssl_server.png]] | [[image:sql_server_ssl_server.png]] | ||
− | + | ===Coté client :=== | |
[[image:sql_server_ssl_client.png]] | [[image:sql_server_ssl_client.png]] | ||
− | + | ===Vérification de la connexion=== | |
Il est possible de vérifier que le chiffrement est bien activé sur une connexion avec les requêtes suivantes : | Il est possible de vérifier que le chiffrement est bien activé sur une connexion avec les requêtes suivantes : | ||
Ligne 63 : | Ligne 143 : | ||
[[image:sql_server_ssl_check.png]] | [[image:sql_server_ssl_check.png]] | ||
− | |||
[[Category:Base de données]] | [[Category:Base de données]] | ||
+ | [[Category:Version800]] | ||
+ | [[Category:Version910]] |
Version actuelle en date du 10 février 2023 à 09:08
Sommaire |
Schéma personnalisé
A partir de la version 910 il est possible d'utiliser un schéma personnalisé pour les bases de données à la place du schéma par défaut (dbo).
Lorsqu'un schéma personnalisé est utilisé, associé à un utilisateur, l'assistant exécute les actions suivantes :
Dans le contexte du serveur :
- Création d'un Login (L)
Dans le contexte de la base de données :
- Création d'un utilisateur (U) pour le login (L) ayant comme schéma par défaut le schéma personnalisé (S)
- Création du schéma personnalisé (S) autorisé par l'utilisateur (U)
- Ajout du droit ALTER à l'utilisateur (U)
Attention : Il n'est pas possible d'utiliser des schémas différents par utilisateur, le schéma doit être commun à tous les utilisateurs |
Rôle et Droits des utilisateurs
Les droits minimaux pour un utilisateur Sage FRP 1000 sont :
- Pour un schéma personnalisé : rôle PUBLIC et droit ALTER
- Pour le schéma par défaut dbo : rôle db_owner
L'utilisateur doit avoir défini le schéma comme le schéma par défaut.
Pour créer un login et un utilisateur pour une base Sage FRP 1000 utilisant le schéma par défaut dbo :
USE MASTER GO CREATE LOGIN mylogin WITH PASSWORD='mysecretpassword' GO USE SAGEFRP1000DATABASE GO CREATE USER mylogin FOR LOGIN mylogin WITH DEFAULT_SCHEMA=dbo GO EXEC sp_addrolemember 'db_owner', 'mylogin' GO USE MASTER GO
Pour un schéma personnalisé :
USE MASTER GO CREATE LOGIN mylogin WITH PASSWORD='mysecretpassword' GO USE SAGEFRP1000DATABASE GO CREATE USER mylogin FOR LOGIN mylogin WITH DEFAULT_SCHEMA=myschema GO GRANT ALTER TO mylogin GO CREATE SCHEMA myschema AUTHORIZATION mylogin GO USE MASTER GO
Encryptage des données sur disque
TDE est une technologie de Microsoft SQL Server qui permet d'encrypter les données sur disques de manière transparente pour les Applications.
Voir ici : Transparent data encryption
A titre d'exemple la mise en oeuvre de TDE peut être réalisée sur la base des scripts suivants :
USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MySecretPassword'; go CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate'; go USE dbMaster800TDESSL; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE MyServerCert; GO ALTER DATABASE dbMaster800TDESSL SET ENCRYPTION ON; GO USE dbDemoSF800; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE MyServerCert; GO ALTER DATABASE dbDemoSF800 SET ENCRYPTION ON; GO
Alternative à TDE
Il existe des solutions alternatives à la mise en oeuvre de TDE.
- Bitlocker
- Bitlocker est une solution de cryptage de disque mais n'offre pas le même niveau de sécurité que TDE, en particulier un utilisateur connecté sur le serveur peut accéder aux fichiers de données de SQL non cryptés. Il n'est pas recommandé d'utiliser Bitlocker.
- SQL Server always encrypted (A partir SQL Server 2016 SP1)
- SQL Server always encrypted nécessite des modifications de l'application et n'est pas supporté.
- dbdefence est une solution tiers équivalente à TDE. dbdefence a été testé avec succès mais n'est pas supporté.
Sécurisation des connexions
SSL permet d'encrypter les connexions clientes et de chiffrer les données échangées entre le serveur et les clients.
Voir ici : Encrypting connections
SSL peut être configuré coté serveur pour forcer toutes les connexions à utiliser SSL, ou bien coté client pour n'encrypter que certaines connexions.
Coté serveur :
Coté client :
Vérification de la connexion
Il est possible de vérifier que le chiffrement est bien activé sur une connexion avec les requêtes suivantes :
SELECT session_id, encrypt_option FROM sys.dm_exec_connections