Version : 1.2 · Date : 2026-10-21 · Domaine 2 de l'examen : Stockage sécurisé, bases de données et mise en réseau (25 à 30 %)
En une phrase : une base Azure SQL se protège par couches : le réseau décide qui peut atteindre la passerelle, Microsoft Entra ID décide qui peut se connecter, le chiffrement (TDE, Always Encrypted) et le masquage protègent la donnée elle-même, et l'audit plus Defender for Databases voient et signalent ce qui se passe.

Ce que l'examen demande#
Repris mot pour mot du guide d'étude SC-500, version anglaise :
| # | Compétence mesurée (guide officiel, en anglais) | Section de ce chapitre |
|---|---|---|
| 1 | Implement platform-level security configurations in Azure SQL | 1 à 5 |
| 2 | Configure database auditing for Azure SQL Database and Azure SQL Managed Instance | 6 |
| 3 | Configure Defender for Databases protection across Azure database services | 7 |
Les compléments de l'ancienne AZ-500 (Cosmos DB, PostgreSQL et MySQL, sauvegardes, SQL Server sur VM) sont en section 8.
1. Les bases à maîtriser#
1.1 La famille Azure SQL#
| Azure SQL Database | Azure SQL Managed Instance | SQL Server on Azure VMs | |
|---|---|---|---|
| Modèle | PaaS : base (ou elastic pool) sur un logical server | PaaS : instance quasi complète de SQL Server | IaaS : vous gérez l'OS et SQL Server |
| Réseau | Public endpoint (IP firewall, virtual network rules) et/ou private endpoint | Déployée dans votre VNet (sous-réseau dédié) ; public endpoint optionnel (port 3342) | Network interface de la VM, NSG |
| IP firewall du service | Oui (serveur et base) | Non : on filtre avec le NSG du sous-réseau | Non (Windows Firewall, NSG) |
| Authentification | SQL, Microsoft Entra | SQL, Microsoft Entra, Windows (Kerberos pour principaux Entra) | SQL, Windows, Entra (SQL Server 2022 et plus) |
| Audit | Azure SQL Auditing (serveur ou base) | SQL Server Audit (T-SQL : CREATE SERVER AUDIT) |
SQL Server Audit classique |
| Plan Defender | Defender for Azure SQL | Defender for Azure SQL | Defender for SQL servers on machines |
Le logical server n'est pas une machine : c'est un point d'administration commun (firewall, Microsoft Entra admin, audit, TDE protector) pour un ensemble de bases, joignable à
<serveur>.database.windows.net.
1.2 Plan de contrôle et plan de données#
C'est la clé de beaucoup de questions :
| Plan de contrôle (gestion) | Plan de données (contenu) | |
|---|---|---|
| Ce qu'on fait | Créer le serveur, régler le firewall, l'audit, TDE, Defender | Lire, écrire, créer des utilisateurs et des rôles dans la base |
| Qui autorise | Azure RBAC | Principaux SQL : connexions, utilisateurs, rôles de base (db_owner, db_datareader…) |
| Où | Azure Resource Manager (portail, CLI, API) | Connexion TDS au moteur SQL (port 1433) |
Être Owner de l'abonnement ne donne pas le droit de lire les tables : il faut être un principal dans la base (ou le server admin).
1.3 Les rôles Azure intégrés pour SQL et la séparation des tâches#
| Rôle Azure | Peut | Ne peut pas |
|---|---|---|
| SQL DB Contributor | Gérer les bases | Gérer la sécurité du serveur |
| SQL Server Contributor | Gérer les serveurs et les bases, définir le Microsoft Entra admin | Activer ou désactiver le Microsoft Entra-only authentication |
| SQL Managed Instance Contributor | Gérer les instances managées | Activer ou désactiver le Microsoft Entra-only authentication |
| SQL Security Manager | Gérer les paramètres de sécurité : audit, firewall, masquage, Defender, Microsoft Entra-only | Définir ou supprimer le Microsoft Entra admin |
| Contributor, Owner | Tout ce qui précède | — |
Séparation des tâches voulue par Microsoft : celui qui crée le serveur ou le Microsoft Entra admin ne peut pas désactiver les protections, et celui qui règle la sécurité ne peut pas changer l'administrateur.
2. Sécuriser le réseau#

2.1 Les IP firewall rules (SQL Database)#
À la création, le firewall bloque tout accès au public endpoint. On ouvre par des règles :
| Règles au niveau du serveur | Règles au niveau de la base | |
|---|---|---|
| Portée | Toutes les bases du serveur | Une seule base (y compris master) |
| Stockage | Base master |
Dans la base elle-même (portable avec elle) |
| Outils | Portail, PowerShell, CLI, REST, T-SQL | T-SQL uniquement (sp_set_database_firewall_rule) |
| Limite | 256 par serveur | 256 par base |
| Prérequis | Owner ou Contributor, SQL Server Contributor ou SQL Security Manager | Une première règle serveur doit exister ; CONTROL DATABASE |
| Recommandation | Pour les administrateurs, ou quand beaucoup de bases ont le même besoin | À privilégier : meilleure isolation et portabilité |
Ordre d'évaluation d'une connexion venant d'Internet :
flowchart TD
A[Connexion TDS vers monserveur.database.windows.net] --> B{IP dans une règle<br/>au niveau de la base demandée ?}
B -- Oui --> OK[Connexion autorisée à cette base]
B -- Non --> C{IP dans une règle<br/>au niveau du serveur ?}
C -- Oui --> OK2[Connexion autorisée à toutes les bases]
C -- Non --> KO[Connexion refusée]
OK --> AUTH[Puis authentification SQL ou Entra]
OK2 --> AUTH
Points d'examen :
- « Allow Azure services and resources to access this server » crée la règle
0.0.0.0 - 0.0.0.0(AllowAllWindowsAzureIps). Elle autorise tous les services Azure, y compris ceux d'autres clients. Elle est sur Non par défaut à la création depuis le portail. Préférer les virtual network rules ou un private endpoint. - Une modification du firewall peut mettre jusqu'à 5 minutes à s'appliquer (sauf base contenue sans partenaire de
basculement) ;
DBCC FLUSHAUTHCACHEforce l'actualisation. - Le firewall n'authentifie personne : il permet seulement d'essayer de se connecter.
# Règle au niveau du serveur (CLI)
az sql server firewall-rule create --resource-group rg-data-prd --server sql-app-prd \
-n AdminBureau --start-ip-address 203.0.113.10 --end-ip-address 203.0.113.10
-- Règle au niveau de la base (T-SQL, dans la base concernée)
EXECUTE sp_set_database_firewall_rule @name = N'AppFront',
@start_ip_address = '198.51.100.20', @end_ip_address = '198.51.100.20';
2.2 Les virtual network rules (service endpoints)#
Une virtual network rule autorise un sous-réseau précis. Elle s'appuie sur un service endpoint de
type Microsoft.Sql activé sur le sous-réseau : le trafic reste sur la dorsale Azure et le serveur reconnaît le sous-réseau
d'origine.
- Le portail propose d'activer le service endpoint s'il manque.
- Le drapeau
IgnoreMissingVNetServiceEndpointpermet de créer la règle avant le service endpoint (pour limiter la coupure du sous-réseau pendant l'activation), mais la règle ne protège rien tant que le service endpoint n'est pas actif. - Le serveur reste joignable par son public IP : la règle ne fait que filtrer.
2.3 Le private endpoint (Private Link)#
Un private endpoint donne au serveur une IP privée dans votre VNet ; on peut alors fermer le public.
| Point clé | Détail |
|---|---|
| Private DNS zone | privatelink.database.windows.net ; les clients gardent le FQDN <serveur>.database.windows.net |
| Accès public | Pas bloqué automatiquement quand on ajoute un private endpoint : cocher « Deny public network access » |
| Exfiltration | Le private endpoint est lié à une ressource : un initié ne peut pas joindre une autre base de la région (contrairement à une règle NSG sur le service tag Sql.<région>) |
| Sur site | Accessible par VPN ou ExpressRoute (peering privé), sans aucune règle de IP firewall |
| Approbation | L'admin réseau crée le private endpoint, l'admin SQL approuve la connexion (séparation des tâches) |
2.4 Public network access, TLS et connection policy#
Onglet Networking du logical server :
| Paramètre | Valeurs | Effet |
|---|---|---|
| Public network access | Disabled (valeur par défaut selon Microsoft Learn) · Selected networks | Disabled : seules les connexions par private endpoint passent (erreur 47073 sinon) et on ne peut plus modifier les firewall rules (erreur 42101). En IaC, ne pas compter sur un défaut : Terraform met public_network_access_enabled = true si on ne le fixe pas |
| Minimum TLS version | 1.2 (défaut : 1.2 et plus), 1.3 | TLS 1.0 et 1.1 sont retirés ; une fois une version imposée, impossible de revenir au réglage par défaut ; erreur 47072 si le client est trop ancien |
| Connection policy | Default · Redirect · Proxy | Redirect (recommandée) : le client parle directement au nœud, ports 11000 à 11999 en sortie ; Proxy : tout passe par la passerelle sur 1433 ; Default : Redirect depuis Azure, Proxy depuis l'extérieur |
| Network security perimeter | Préversion | Frontière logique autour des PaaS (SQL Database seulement, pas Managed Instance) |
Chiffrement en transit : le service impose toujours TLS (ForceEncryption = Yes). Côté client : Encrypt=True et
TrustServerCertificate=False (ne jamais faire confiance aveuglément au certificat en production), ou le chiffrement strict
de TDS 8.0.
2.5 Le réseau de SQL Managed Instance#

| Exigence | Détail |
|---|---|
| Sous-réseau dédié | Uniquement des instances managées ; ni GatewaySubnet ni autre ressource |
| Subnet delegation | À Microsoft.Sql/managedInstances |
| NSG et route table | Obligatoires ; le service y ajoute ses règles et routes (préfixe Microsoft.Sql-managedInstances_UseOnly_mi-) par une network intent policy qui refuse les changements non conformes |
| Taille | Au moins 32 adresses IP |
| VNet-local endpoint | Port 1433, filtré par le NSG |
| Public endpoint | Port 3342 (non modifiable), désactivé par défaut ; activation en deux étapes : l'administrateur de l'instance l'active, puis l'administrateur réseau ouvre le NSG |
| Private endpoint | Seul moyen d'avoir une IP fixe ; utile depuis un autre réseau |
Le IP firewall de SQL Database ne s'applique pas à Managed Instance : tout passe par le NSG.
3. Authentification et autorisation#
3.1 Authentification SQL ou Microsoft Entra#
| SQL authentication | Microsoft Entra authentication | |
|---|---|---|
| Identifiant | Nom + mot de passe stockés dans SQL | Identité Entra (utilisateur, groupe, principal de service, managed identity) |
| MFA, Conditional Access | Non | Oui |
| Secrets | Mots de passe à gérer et faire tourner | Aucun avec une managed identity |
| Administrateur | Server admin (créé avec le serveur, membre de db_owner) |
Microsoft Entra admin (un utilisateur ou, mieux, un groupe) |
À retenir :
- Il faut définir un Microsoft Entra admin pour utiliser l'authentification Entra.
- Seuls des utilisateurs Entra peuvent créer d'autres utilisateurs Entra ; au départ, c'est le Microsoft Entra admin.
- Les connexions Entra échouées n'apparaissent pas dans l'audit SQL : elles sont dans les journaux de connexion Entra.
-- Utilisateur de base contenu (sans connexion dans master) pour un groupe, puis une managed identity
CREATE USER [GRP-App-Lecteurs] FROM EXTERNAL PROVIDER;
CREATE USER [app-web-prd] FROM EXTERNAL PROVIDER; -- nom d'affichage de la managed identity
ALTER ROLE db_datareader ADD MEMBER [GRP-App-Lecteurs];
ALTER ROLE db_datawriter ADD MEMBER [app-web-prd];
Les contained database users sont portables avec la base (geo-replication, déplacement). On peut aussi créer des
connexions Entra au niveau serveur (CREATE LOGIN [..] FROM EXTERNAL PROVIDER) puis des utilisateurs FROM LOGIN.
3.2 Microsoft Entra-only authentication#
Elle désactive l'authentification SQL pour tout le serveur ou l'instance (y compris le server admin).
| Point | Détail |
|---|---|
| Prérequis | Le Microsoft Entra admin doit être défini ; sinon le réglage est grisé et l'API échoue |
| Comptes SQL existants | Ni supprimés ni modifiés, seulement empêchés de se connecter |
| Qui peut l'activer ou la désactiver | Owner, Contributor, SQL Security Manager ; pas SQL Server Contributor ni SQL Managed Instance Contributor |
| Microsoft Entra admin | Impossible de le supprimer tant que l'option est active |
| Serveur créé directement en « Microsoft Entra-only » | Un administrateur CloudSA… est généré avec un mot de passe aléatoire détruit : il ne sert pas de compte de secours |
| Vérification T-SQL | SELECT SERVERPROPERTY('IsExternalAuthenticationOnly') → 1 |
| Limites | Elastic jobs, SQL Data Sync, réplication transactionnelle… ne sont pas prises en charge |
Azure Policy intégrée : Azure SQL Database should have Microsoft Entra-only authentication enabled (et l'équivalent pour Managed Instance ; noms parfois encore en « Azure Active Directory Only »). Effets : Audit (défaut), Deny, Disabled.
Piège : la stratégie Deny agit à la création. Si quelqu'un désactive l'option ensuite, Azure Policy ne l'empêche pas : le serveur apparaît Non conforme dans le rapport.
az sql server ad-only-auth enable --resource-group rg-data-prd --name sql-app-prd
az sql mi ad-only-auth get --resource-group rg-data-prd --name sqlmi-app-prd
Terraform (fournisseur azurerm, ressource azurerm_mssql_server, arguments vérifiés dans le registre) :
resource "azurerm_mssql_server" "app" {
name = "sql-app-prd"
resource_group_name = "rg-data-prd"
location = "francecentral"
version = "12.0"
minimum_tls_version = "1.2"
public_network_access_enabled = false # accès uniquement par private endpoint
connection_policy = "Redirect"
azuread_administrator {
login_username = "GRP-SQL-Admins"
object_id = "<id-objet-du-groupe>" # datasource (groupe Entra existant)
azuread_authentication_only = true # pas d'administrateur SQL ni de mot de passe à gérer
}
identity {
type = "SystemAssigned" # identité du serveur : TDE avec clé client, audit vers le stockage
}
}
3.3 Les autorisations dans la base#
- Donner les droits à des rôles de base, jamais directement aux utilisateurs ; créer des rôles personnalisés au plus juste.
db_owner(et le server admin) : réservé à très peu de personnes.EXECUTE ASpour restreindre le contexte d'exécution d'un module.- Managed Instance offre aussi des rôles au niveau serveur (fixes ou personnalisés).
- Row-Level Security (RLS) : filtre les lignes selon l'utilisateur (5.2).
4. Chiffrer les données#
4.1 Les trois états de la donnée#
| État | Mécanisme | Protège contre |
|---|---|---|
| En transit | TLS (imposé par le service, 1.2 minimum) | Écoute, interception sur le réseau |
| Au repos | TDE (Transparent Data Encryption) | Vol des fichiers, des sauvegardes, des disques |
| En cours d'utilisation | Always Encrypted (avec ou sans secure enclave) | Les administrateurs et opérateurs à hauts privilèges, les logiciels malveillants sur le serveur |
4.2 TDE with service-managed key#
- Activé par défaut sur toutes les nouvelles bases.
- Chiffre toute la base (AES) : fichiers de données, journaux et sauvegardes, sans modification de l'application.
- La clé de chiffrement de la base (DEK) est protégée par un built-in server certificate, géré et renouvelé par Microsoft.
4.3 TDE avec customer-managed key (CMK, BYOK)#

Le TDE protector devient une clé à vous, dans Azure Key Vault (FIPS 140-2 niveau 2) ou Azure Key Vault Managed HSM (FIPS 140-2 niveau 3). Il chiffre la DEK de chaque base du serveur (ou de l'instance) ; on peut aussi définir une CMK au niveau d'une base (SQL Database).
| Exigence ou comportement | Détail |
|---|---|
| Identité | Server managed identity (système ou utilisateur) |
| Droits sur le Key Vault | Rôle Key Vault Crypto Service Encryption User (modèle RBAC), ou access policy get, wrapKey, unwrapKey |
| Key Vault | Soft delete et purge protection obligatoires (sinon la configuration échoue) ; « Allow trusted Microsoft services » si le firewall est actif (sauf private endpoint) |
| Clé | RSA ou RSA-HSM 2048 ou 3072 bits ; AES 128 à 256 en préversion (SQL Database) ; état activé, date d'expiration future |
| Bascule service → client | En ligne, sans rechiffrer la base : seule la DEK est rechiffrée |
| Rotation | Manuelle ou automatique : nouvelle version détectée et appliquée sous 24 h ; identifiant de clé sans version possible (SQL Database) |
| Sauvegardes | Restent chiffrées avec l'ancien protecteur : conserver toutes les anciennes versions de clé |
| Perte d'accès | En 10 minutes environ, la base refuse les connexions et passe Inaccessible ; erreur 4XX du Key Vault → Inaccessible après 30 min ; panne réseau (5XX) : tampon de 24 h |
| Retour | Accès rendu dans les 30 min : retour automatique dans l'heure ; au-delà, procédure manuelle et perte de certains paramètres de la base |
| Délai de propagation | Un changement de droits sur le Key Vault peut mettre ≈ 10 minutes à s'appliquer |
| Bonnes pratiques | Key Vault dédié à Azure SQL (≤ 500 bases usage général ou ≤ 200 bases critiques par Key Vault), resource lock, alertes sur la perte d'accès (Resource Health, Activity log), journaux AuditEvent |
stateDiagram-v2
[*] --> EnLigne
EnLigne --> AccesPerdu: clé, droit ou Key Vault supprimé
AccesPerdu --> Inaccessible: environ 10 min (30 min si erreur 4XX)
Inaccessible --> EnLigne: accès rendu en moins de 30 min (retour automatique)
Inaccessible --> Restauration: accès rendu après 30 min
Restauration: Procédure dans le portail
Restauration --> EnLigne
Piège : pour révoquer une clé compromise sans perte, on fait d'abord la rotation vers une nouvelle clé, on vérifie que toutes les bases l'utilisent, puis on désactive l'ancienne.
4.4 Always Encrypted#

Les colonnes sensibles (carte bancaire, numéro de sécurité sociale) sont chiffrées par le pilote côté client. Le moteur SQL ne voit jamais ni la donnée ni les clés : un DBA ou un opérateur cloud ne lit que du chiffré.
| Clé | Rôle | Où |
|---|---|---|
| Column encryption key (CEK) | Chiffre les données de la colonne | Stockée chiffrée dans les métadonnées de la base |
| Column master key (CMK) | Protège (chiffre) les CEK | Hors de la base : Azure Key Vault (recommandé), Windows Certificate Store, HSM |
| Type de chiffrement | Opérations possibles | Sécurité |
|---|---|---|
| Deterministic | Égalité (=, IN), jointure d'égalité, GROUP BY, DISTINCT, index ; collation binaire BIN2 pour les chaînes |
Moins sûr : motifs devinables si peu de valeurs (Oui/Non, Nord/Sud) |
| Randomized | Aucun calcul (sans enclave) | Plus sûr |
| Randomized + secure enclave | Comparaisons, BETWEEN, LIKE, ORDER BY, GROUP BY, jointures, in-place encryption |
Type recommandé avec enclave |
Secure enclaves dans SQL Database : VBS (logiciel, toutes les offres, propriété preferredEnclaveType = VBS) ou
Intel SGX (série DC). Les CMK compatibles enclave sont dans Key Vault ou le Windows Certificate Store.
sequenceDiagram
participant App as Application (pilote AE)
participant SQL as Azure SQL
participant KV as Key Vault
App->>SQL: Requête paramétrée
SQL-->>App: Métadonnées : colonne chiffrée, CEK chiffrée, emplacement de la CMK
App->>KV: Déchiffrer la CEK avec la CMK
KV-->>App: CEK en clair (gardée en cache côté client)
App->>SQL: Paramètres chiffrés avec la CEK
SQL-->>App: Résultats chiffrés
Note over App: Le pilote déchiffre les résultats
Un utilisateur qui a le droit
SELECTmais pas accès à la CMK récupère le texte chiffré, pas la donnée.
5. Protéger la donnée elle-même#
5.1 Le Dynamic Data Masking (DDM)#
Masque la donnée dans le résultat de la requête, sans la modifier dans la base. Ce n'est pas du chiffrement : la donnée reste en clair dans la base et les administrateurs la voient ; c'est une protection contre l'exposition aux utilisateurs sans privilège.
| Fonction | Résultat |
|---|---|
Par défaut (default()) |
XXXX pour les chaînes, 0 pour les nombres, 1900-01-01 pour les dates |
| Carte de crédit | XXXX-XXXX-XXXX-1234 |
E-mail (email()) |
[email protected] |
Nombre aléatoire (random(a, b)) |
Valeur aléatoire dans la plage |
Texte personnalisé (partial(préfixe, "remplissage", suffixe)) |
Premiers et derniers caractères visibles |
Date et heure (datetime("Y")…) |
Masque l'année, le mois, le jour, l'heure… |
- Les administrateurs (server admin, Microsoft Entra admin,
db_owner) voient toujours en clair. GRANT UNMASKau niveau base, schéma, table ou colonne pour un utilisateur ou un rôle.- Portail : SQL Database seulement ; Managed Instance : par T-SQL.
- Rôles Azure qui peuvent configurer : SQL Security Manager, SQL DB Contributor, SQL Server Contributor.
ALTER TABLE Data.Membership ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()');
GRANT UNMASK ON Data.Membership (Email) TO ServiceLead; -- démasquage au niveau colonne
5.2 La Row-Level Security#
La RLS restreint les lignes selon l'utilisateur qui interroge (appartenance à un groupe, SESSION_CONTEXT) : par exemple un
commercial ne voit que ses clients. Le prédicat est une fonction table inline, appliquée par une security policy
(CREATE SECURITY POLICY), avec deux types de prédicats :
- filter predicate : retire silencieusement les lignes des lectures (
SELECT,UPDATE,DELETE) ; - block predicate : refuse avec une erreur les écritures qui violent la règle (
AFTER INSERT,AFTER UPDATE,BEFORE UPDATE,BEFORE DELETE).
Piège : la RLS s'applique aussi à
dbo,db_owneret au propriétaire de la table ; ce n'est pas un chiffrement et elle ne protège pas contre un administrateur qui désactive la stratégie (ALTER SECURITY POLICY … WITH (STATE = OFF)).
CREATE SECURITY POLICY Security.SalesFilter
ADD FILTER PREDICATE Security.fn_securitypredicate(AppUserId) ON dbo.Sales,
ADD BLOCK PREDICATE Security.fn_securitypredicate(AppUserId) ON dbo.Sales AFTER INSERT
WITH (STATE = ON);
5.3 Ledger#
Le ledger apporte une preuve cryptographique que les données n'ont pas été falsifiées (y compris par un DBA).
| Point | Détail |
|---|---|
| Tables | Modifiables (historique des mises à jour et suppressions) ou en ajout seul (APPEND_ONLY = ON) |
| Mécanisme | Hachage SHA-256 en arbre de Merkle, blocs chaînés |
| Digests | Générés toutes les 30 secondes (s'il y a eu des transactions) et stockés hors de la base : immutable blob storage (conteneur sqldbledgerdigests, identité du serveur avec Storage Blob Data Contributor) ou Azure Confidential Ledger |
| Vérification | Recalcule les hachages et les compare aux digests : toute falsification est détectée (pas empêchée) |
| Irréversible | Une base ledger ne peut pas redevenir une base normale |
5.4 Data Discovery & Classification#
Intégrée à SQL Database et Managed Instance :
- Discovery & recommendations : le moteur repère les colonnes sensibles ;
- Labeling persistant des colonnes (étiquette + type d'information), stratégie SQL Information Protection (personnalisable dans Defender for Cloud) ou sensitivity labels Microsoft Purview ;
- Audit de la sensibilité : le champ
data_sensitivity_informationdu journal d'audit indique la sensibilité des données renvoyées par chaque requête.
État au 21/10/2026 : le contrôle d'accès par sensitivity labels Microsoft Purview Information Protection pour Azure SQL est retiré (les stratégies existantes ne sont plus appliquées). La classification et l'audit de sensibilité restent disponibles ; Microsoft encourage Microsoft Purview pour la gouvernance avancée.
5.5 Quelle protection pour quel besoin ?#
| Besoin | Fonctionnalité |
|---|---|
| Un disque ou une sauvegarde volés ne doivent rien révéler | TDE |
| Garder la maîtrise et la révocation de la clé | TDE avec CMK |
| Le DBA ou l'hébergeur ne doivent jamais voir les numéros de carte | Always Encrypted |
| Le support doit voir seulement les 4 derniers chiffres | Dynamic Data Masking |
| Chaque agence ne voit que ses lignes | Row-Level Security |
| Prouver à un auditeur qu'aucune ligne n'a été modifiée | Ledger |
| Savoir où sont les données personnelles et qui les lit | Classification + audit |
6. Azure SQL Auditing#

6.1 SQL Database : auditing policy de serveur ou de base#
- Server-level auditing policy : s'applique aux bases existantes et futures du serveur, toujours, quels que soient les réglages de la base.
- Database-level auditing policy : s'ajoute (ne remplace pas) ; la base est alors auditée deux fois.
- Recommandation Microsoft : audit au niveau serveur seulement, sauf besoin d'une destination, d'une rétention ou d'événements différents pour une base précise. Pour les grosses charges OLTP avec beaucoup de bases, l'audit par base accélère l'exploitation des journaux.
- Les copies, restaurations et géoréplications ne conservent pas une database-level auditing policy envoyée vers Log Analytics ou Event Hubs.
Audit action groups par défaut (requêtes, procédures stockées, connexions réussies et échouées) :
BATCH_COMPLETED_GROUP, SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP.
6.2 Les destinations#
| Destination | Ce qu'il faut savoir |
|---|---|
| Storage account | Fichiers .xel (append blobs) lisibles avec SSMS ou sys.fn_get_audit_file ; authentification par managed identity (recommandée) ou clés d'accès ; rétention 0 = illimitée ; un passage de 0 à N jours ne s'applique qu'aux journaux écrits ensuite ; derrière un firewall ou un VNet : compte StorageV2 |
| Log Analytics | Table / catégorie SQLSecurityAuditEvents ; requêtes KQL, Microsoft Sentinel |
| Event Hubs | Diffusion vers un SIEM tiers ou un traitement maison |
- Vers Log Analytics ou Event Hubs, le service crée un diagnostic setting
SQLSecurityAuditEvents_…: s'il est supprimé, l'audit échoue silencieusement → créer une alerte sur la suppression des diagnostic settings. - Immutable storage possible : l'option « Allow protected append writes » doit être sur Append blobs (ou Block and append blobs) ; la rétention de l'immutability policy doit être plus courte que la rétention de l'audit SQL.
- Si les Outbound networking restrictions du serveur sont actives, autoriser le FQDN du storage account d'audit.
- Limites : champs
statementetdata_sensitivity_informationtronqués à 4 000 caractères ; les tables temporaires detempdbne sont pas auditées ; en charge extrême, des événements peuvent manquer. - Lire les journaux d'audit exige
VIEW DATABASE SECURITY AUDITdans la base.
# Audit de serveur vers Log Analytics (CLI)
az sql server audit-policy update --resource-group rg-data-prd --name sql-app-prd --state Enabled \
--log-analytics-target-state Enabled \
--log-analytics-workspace-resource-id /subscriptions/<sub>/resourceGroups/rg-sec-prd/providers/Microsoft.OperationalInsights/workspaces/law-sec-prd
# Terraform : audit de serveur vers Azure Monitor (le paramètre de diagnostic de la base master est créé à part)
resource "azurerm_mssql_server_extended_auditing_policy" "app" {
server_id = azurerm_mssql_server.app.id
log_monitoring_enabled = true
}
// Activité auditée des dernières 24 h, par action, adresse IP cliente et connexion
AzureDiagnostics
| where Category == "SQLSecurityAuditEvents" and TimeGenerated > ago(24h)
| summarize Evenements = count() by action_name_s, client_ip_s, server_principal_name_s
| order by Evenements desc
// Échecs de connexion SQL (groupe FAILED_DATABASE_AUTHENTICATION_GROUP)
AzureDiagnostics
| where Category == "SQLSecurityAuditEvents" and action_name_s == "DATABASE AUTHENTICATION FAILED"
| summarize Echecs = count() by client_ip_s, server_principal_name_s, bin(TimeGenerated, 1h)
6.3 Auditing of Microsoft support operations#
Trace ce que font les ingénieurs du support Microsoft quand ils accèdent à votre serveur pendant une demande de support.
- SQL Database : bascule « Enable Auditing of Microsoft support operations » sur la page Audit du serveur ; mêmes
destinations ; requête
AzureDiagnostics | where Category == "DevOpsOperationsAudit". - Managed Instance : créer un audit de serveur séparé avec
OPERATOR_AUDIT = ON(cocher la case sur un audit existant le remplace et ne journalise plus que le support) ; catégorie de diagnostic DevOps operations Audit Logs.
6.4 L'audit de SQL Managed Instance#
Managed Instance utilise SQL Server Audit :
-- Vers un conteneur blob : informations d'identification SAS, puis audit, spécification et activation
CREATE CREDENTIAL [https://stauditprd.blob.core.windows.net/sqlaudit]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<jeton SAS sans le ?>';
CREATE SERVER AUDIT [Audit-Prd] TO URL (PATH = 'https://stauditprd.blob.core.windows.net/sqlaudit', RETENTION_DAYS = 90);
-- Ou vers Log Analytics / Event Hubs : paramètre de diagnostic SQLSecurityAuditEvents, puis
CREATE SERVER AUDIT [Audit-Monitor] TO EXTERNAL_MONITOR;
CREATE SERVER AUDIT SPECIFICATION [Spec-Prd] FOR SERVER AUDIT [Audit-Monitor]
ADD (SUCCESSFUL_LOGIN_GROUP), ADD (FAILED_LOGIN_GROUP), ADD (BATCH_COMPLETED_GROUP) WITH (STATE = ON);
ALTER SERVER AUDIT [Audit-Monitor] WITH (STATE = ON);
- Le jeton SAS expire : le renouveler sinon l'audit échoue (SSMS crée l'information d'identification automatiquement).
RETENTION_DAYSabsent = 0 = conservation illimitée.
7. Defender for Databases#

7.1 Les quatre plans#
Dans Defender for Cloud > Environment settings, le plan Databases active d'un coup quatre plans, facturés séparément (bouton Select types pour choisir) :
| Plan | Ressources protégées | Fonctions |
|---|---|---|
Defender for Azure SQL (SqlServers) |
SQL Database et elastic pools, SQL Managed Instance, Synapse dedicated SQL pools | Vulnerability Assessment + Advanced Threat Protection ; facturation par nœud (serveur ou instance) |
Defender for SQL servers on machines (SqlServerVirtualMachines) |
SQL Server sur VM Azure, SQL Server enabled by Azure Arc (sur site, AWS, GCP) | Les mêmes ; analyse toutes les 12 h ; extension Defender for SQL et SQL IaaS Agent extension ; compte du service SQL sysadmin |
Defender for open-source relational databases (OpenSourceRelationalDatabases) |
PostgreSQL et Azure Database for MySQL flexible server (tous niveaux), Amazon RDS (Aurora, PostgreSQL, MySQL, MariaDB) ; pas les machines Arc | Alertes : force brute (réussie ou non), accès et requêtes anormaux, activité suspecte |
Defender for Azure Cosmos DB (CosmosDbs) |
Cosmos DB API NoSQL seulement (pas Cassandra, MongoDB, Table, Gremlin) | Injection SQL, Tor, IP suspectes, extraction de données, identités compromises ; n'accède pas aux données, sans impact de performance |
Activation : au niveau abonnement (recommandé : les nouvelles ressources sont protégées automatiquement) ou par ressource (désactiver au niveau abonnement puis activer serveur par serveur : Security > Microsoft Defender for Cloud > Enable Microsoft Defender for SQL). Rôle : SQL Security Manager ou server admin, Owner de l'abonnement pour le plan sur machines (il déploie des stratégies).
az security pricing create -n SqlServers --tier standard
az security pricing create -n OpenSourceRelationalDatabases --tier standard
7.2 SQL Vulnerability Assessment#
Analyse en lecture seule fondée sur les bonnes pratiques Microsoft : configurations, autorisations excessives, données sensibles non protégées, firewall rules. Chaque constat donne une correction (souvent un script). On définit une baseline pour accepter les écarts voulus.
| Express configuration (recommandée) | Classic configuration | |
|---|---|---|
| Stockage des résultats | Géré par Microsoft (même région que le serveur) | Storage account à vous |
| Étendue | Abonnement, serveur | Abonnement, serveur, base |
| Analyse périodique | Toujours active | Désactivable |
| Baseline | Par lot, effet sans nouvelle analyse | Règle par règle, effet après une nouvelle analyse |
| Droits pour modifier | SQL Security Manager (ou Security Admin) | SQL Security Manager et Storage Blob Data Reader et Owner du storage account |
| Exportation | CSV, Azure Resource Graph | Excel, Azure Resource Graph |
Les API classiques de le Vulnerability Assessment et de la protection avancée sont retirées le 16 août 2027 : migrer vers la express configuration. En Terraform :
express_vulnerability_assessment_enabled = truesurazurerm_mssql_server.
7.3 Advanced Threat Protection#
Alertes exploitables (détail de l'activité, tactique MITRE ATT&CK, actions recommandées) dans Defender for Cloud, exportables vers Microsoft Sentinel ou un SIEM :
- injection SQL potentielle (y compris une application qui génère une requête défectueuse) ;
- force brute (nombreux échecs avec des identifiants différents) ;
- accès depuis un emplacement, un centre de données ou un principal inhabituel, application potentiellement dangereuse ;
- activité suspecte, par exemple depuis une machine compromise qui parle à un serveur de commande et contrôle.
Le pilotage global (Secure Score, recommandations, conformité) est au chapitre 10.
8. Compléments AZ-500#
8.1 Azure Cosmos DB#
- Désactiver l'authentification par clés (
disableLocalAuth = true, option Key-based authentication: Disable à la création) : seule Microsoft Entra authentication reste possible. - Data plane RBAC propre à Cosmos DB : rôles intégrés Cosmos DB Built-in Data Reader et Cosmos DB Built-in Data
Contributor, rôles personnalisés par
dataActions(notDataActionsnon pris en charge) ; ces attributions ne se gèrent pas dans le portail (CLI, PowerShell, Bicep). - Réseau : IP firewall, réseaux virtuels, private endpoint (zone
privatelink.documents.azure.com). - Defender for Azure Cosmos DB : 7.1.
az resource update --resource-group rg-data-prd --name cosmos-app-prd \
--resource-type "Microsoft.DocumentDB/databaseAccounts" --set properties.disableLocalAuth=true
8.2 Azure Database for PostgreSQL et MySQL flexible server#
| Sujet | Azure Database for PostgreSQL flexible server (même logique pour MySQL) |
|---|---|
| Authentification | PostgreSQL et Microsoft Entra ou Microsoft Entra-only authentication ; Microsoft Entra admin : utilisateur, groupe, principal de service ou managed identity ; SCRAM pour les comptes locaux |
| Réseau, choix à la création | Accès privé (VNet integration, sous-réseau délégué) ou accès public (IP autorisées) + private endpoint |
| Piège | Pas de private endpoint sur un serveur créé en VNet integration |
| Entra en accès privé | Autoriser la sortie vers le service tag AzureActiveDirectory (NSG, routes) |
| Chiffrement | TLS imposé ; customer-managed key possible |
| Menaces | Defender for open-source relational databases |
8.3 Sauvegardes et rétention#
| Valeur | |
|---|---|
| Point-in-time restore (PITR) | 1 à 35 jours (7 par défaut sur Managed Instance) |
| Long-term retention (LTR) | Sauvegardes complètes hebdomadaires, mensuelles, annuelles, jusqu'à 10 ans |
| Immutability des LTR (WORM) | SQL Database seulement ; protège même contre un administrateur |
| Backup storage redundancy | LRS, ZRS ou GRS (geo-restore dans la région jumelée) |
| Suppression du logical server | Supprime les bases (non récupérables) mais pas les sauvegardes LTR |
8.4 SQL Server on Azure VMs#
- SQL IaaS Agent extension : fait apparaître les recommandations de sécurité sur la ressource SQL virtual machine.
- Defender for SQL servers on machines pour les vulnérabilités et les menaces.
- Authentification Entra (SQL Server 2022 et plus) : la managed identity choisie doit avoir le rôle Directory Readers ou les
rôles d'application Graph
User.Read.All,GroupMember.Read.All,Application.Read.All. - Le reste relève de la sécurité des VM : chiffrement de disque, Bastion, JIT (chapitre 08).
9. Labs conseillés#
À faire dans un abonnement de test, avec une base SQL Database du niveau le moins cher (ou serverless).
Lab 1 · Microsoft Entra-only et managed identity
- Créer un logical server avec un groupe Entra comme Microsoft Entra admin.
- Se connecter avec SSMS ou Azure Data Studio en Microsoft Entra MFA ; créer
CREATE USER [<managed identity>] FROM EXTERNAL PROVIDERet lui donnerdb_datareader. - Activer Microsoft Entra-only ; tenter une connexion avec l'administrateur SQL : refus.
SELECT SERVERPROPERTY('IsExternalAuthenticationOnly')renvoie 1.
Lab 2 · Firewall, règle de base et private endpoint
- Ajouter une firewall rule serveur pour votre IP ; se connecter.
- Dans une base,
sp_set_database_firewall_rulepour une autre IP ; vérifier danssys.database_firewall_rules. - Créer un private endpoint et la zone
privatelink.database.windows.net; depuis une VM du VNet,nslookup <serveur>.database.windows.netrenvoie l'IP privée. - Passer Public network access sur Disabled : votre poste reçoit l'erreur 47073, la VM se connecte toujours.
Lab 3 · Masquage, RLS et Always Encrypted
- Masquer une colonne
Emailavecemail(), se connecter avec un utilisateur sansUNMASK: valeur masquée. - Créer une stratégie RLS avec filter predicate : chaque utilisateur ne voit que ses lignes, même
db_owner. - Chiffrer une colonne avec l'assistant Always Encrypted de SSMS (CMK dans Key Vault) ; la lire sans
Column Encryption Setting=Enabled: texte chiffré.
Lab 4 · Audit vers Log Analytics
- Activer l'audit au niveau serveur vers un espace Log Analytics.
- Provoquer des échecs de connexion (mauvais mot de passe) et quelques requêtes.
- Lancer la requête KQL de la section 6.2 : les événements
DATABASE AUTHENTICATION FAILEDapparaissent après quelques minutes.
Lab 5 · Defender for Azure SQL
- Activer Defender for Azure SQL sur le serveur (express configuration de le Vulnerability Assessment).
- Lancer une analyse, ouvrir un constat, appliquer le script de correction ou l'ajouter à la baseline.
- Observer la recommandation disparaître sans nouvelle analyse (comportement de la express configuration).
10. Les pièges d'examen#
| Situation dans la question | Réponse attendue | Pourquoi |
|---|---|---|
| Isoler une base des autres bases du même serveur au niveau réseau | Firewall rule au niveau de la base (T-SQL) | Une règle serveur ouvre toutes les bases |
| Créer une firewall rule de base depuis le portail | Impossible : T-SQL uniquement | — |
| « Allow Azure services » activé | Risque : tous les services Azure, d'autres clients compris | Préférer règle VNet ou private endpoint |
| Private endpoint créé, mais Internet passe encore | Cocher Deny public network access | Pas bloqué par défaut |
| Filtrer l'accès à une Managed Instance | NSG du sous-réseau | Pas de IP firewall sur MI |
| Port du point public de MI | 3342 (point local : 1433) | Non modifiable |
| Interdire l'authentification SQL partout | Microsoft Entra-only authentication + Azure Policy Deny à la création | La stratégie n'empêche pas une désactivation ultérieure (non conforme) |
| Un SQL Server Contributor n'arrive pas à activer « Microsoft Entra-only » | Normal : il faut SQL Security Manager (ou Contributor, Owner) | Séparation des tâches |
| Le DBA ne doit pas voir les numéros de carte | Always Encrypted | TDE et DDM ne protègent pas des administrateurs |
Recherche LIKE ou tri sur colonne chiffrée |
Always Encrypted avec secure enclave et chiffrement randomized | Le deterministic ne fait que l'égalité |
| Configurer TDE avec CMK échoue | Activer soft delete + purge protection sur le Key Vault | Exigence vérifiée par Azure SQL |
| Clé du Key Vault supprimée par erreur | La base devient Inaccessible en ≈ 10 min ; restaurer l'accès en moins de 30 min | Retour automatique sinon procédure longue |
| Restaurer une vieille sauvegarde après rotation de la CMK | Conserver les anciennes versions de clé | Les sauvegardes gardent leur protecteur |
| Audit activé au serveur et à la base | La base est auditée deux fois | Les deux coexistent |
| Journaux d'audit qui n'arrivent plus dans Log Analytics | Diagnostic setting SQLSecurityAuditEvents supprimé : échec silencieux |
Créer une alerte |
| Audit vers un stockage derrière firewall | Managed identity du serveur + Storage Blob Data Contributor, compte StorageV2 | Les clés d'accès sont déconseillées |
| Échecs de connexion Entra introuvables dans l'audit SQL | Les chercher dans les journaux de connexion Entra | La passerelle les refuse avant la base |
| Tracer ce que fait le support Microsoft | Auditing of Microsoft support operations | Sur MI : audit séparé OPERATOR_AUDIT = ON |
| Protéger SQL Server sur site | Defender for SQL servers on machines via Azure Arc | Pas Defender for Azure SQL |
| Protéger un compte Cosmos DB API MongoDB avec Defender | Non pris en charge | API NoSQL seulement |
| Vulnerability Assessment sans storage account | Express configuration | La classique exige un stockage |
11. Scénarios d'entraînement#
1. Une application App Service se connecte à Azure SQL Database avec un compte SQL dont le mot de passe est dans les paramètres de l'application. Le RSSI veut supprimer ce secret et interdire tout compte SQL. Que faire ?
Activer le managed identity d'App Service, définir un groupe Entra comme Microsoft Entra admin du serveur, créer le contained database user
CREATE USER [app] FROM EXTERNAL PROVIDERavec les rôles nécessaires, puis activer Microsoft Entra-only authentication (par un SQL Security Manager) et l'imposer à la création des futurs serveurs avec la stratégie Azure Policy en Deny.
2. Le logical server doit n'être joignable que depuis le VNet de production et le site de Lyon (relié par ExpressRoute), sans aucune exposition Internet. Quelle configuration ?
Private endpoint dans le VNet (zone DNS
privatelink.database.windows.netreliée et résolue depuis le site), Public network access : Disabled. Pas de règle de IP firewall nécessaire.
3. Une équipe a activé « Allow Azure services and resources to access this server » pour qu'une Function App se connecte. Quel est le risque et quelle alternative ?
La règle
0.0.0.0laisse passer n'importe quelle ressource Azure, y compris d'autres abonnements et clients. Alternative : VNet integration de la Function App puis virtual network rule (service endpointMicrosoft.Sql) ou private endpoint.
4. La conformité exige que l'entreprise puisse rendre les données illisibles à tout moment, y compris pour Microsoft. Que proposer ?
TDE avec customer-managed key dans un Key Vault (ou Managed HSM) dédié, soft delete et protection contre la purge, server managed identity avec Key Vault Crypto Service Encryption User, rotation automatique. Révoquer l'accès à la clé rend les bases Inaccessibles.
5. Les conseillers du centre d'appels doivent confirmer un client avec les 4 derniers chiffres de sa carte, sans voir le reste. Les développeurs ne doivent rien voir en production. Que faire ?
Dynamic Data Masking : fonction Carte de crédit sur la colonne, aucun
UNMASKpour les conseillers ni les développeurs. Si la menace inclut les DBA, ajouter Always Encrypted (le masquage ne les arrête pas).
6. L'équipe sécurité veut tous les événements d'audit de 40 bases dans Microsoft Sentinel, sans double journalisation.
Server-level auditing policy (toutes les bases, y compris les futures) vers Log Analytics (l'espace de travail Sentinel), audit au niveau base désactivé, alerte sur la suppression du diagnostic setting
SQLSecurityAuditEvents.
7. Une Managed Instance doit écrire son audit dans un storage account. Quelles étapes ?
Créer un conteneur privé, une SAS (service Blob), puis en T-SQL
CREATE CREDENTIAL(URL du conteneur, SAS sans le?),CREATE SERVER AUDIT … TO URL, une audit specification serveur ou base, etALTER SERVER AUDIT … WITH (STATE = ON). Renouveler la SAS avant son expiration. (Ou bienTO EXTERNAL_MONITORavec un diagnostic setting vers Log Analytics.)
8. Le RSSI veut être alerté d'une injection SQL et connaître les droits excessifs sur 200 serveurs Azure SQL et 30 serveurs SQL sur site.
Activer Defender for Azure SQL au niveau abonnement (Vulnerability Assessment en express configuration + protection avancée) et Defender for SQL servers on machines après avoir connecté les serveurs sur site à Azure Arc.
9. Après une rotation manuelle du TDE protector, un administrateur supprime l'ancienne clé du Key Vault. Une restauration à un instant donné d'il y a 10 jours échoue. Pourquoi ?
Les sauvegardes antérieures à la rotation sont chiffrées avec l'ancien protecteur : il fallait conserver toutes les versions de clé. La restaurer depuis le soft delete du Key Vault (d'où l'intérêt de la purge protection).
10. Une application de comptabilité doit prouver aux commissaires aux comptes qu'aucune écriture n'a été modifiée a posteriori, même par un DBA.
Tables ledger (en ajout seul pour le grand livre), automatic digest storage dans un immutable blob storage verrouillé ou Azure Confidential Ledger, et vérification périodique du ledger.
12. Pour aller plus loin (au-delà de l'examen)#
- Conditional Access : l'authentification Entra vers Azure SQL profite de la MFA et de le Conditional Access (chapitre 01) ; à tester sur les comptes d'administration des bases.
- Failover groups et geo-replication : les firewall rules au niveau base et les utilisateurs contenus sont stockés dans la base et la suivent ; vérifier la configuration de sécurité du serveur secondaire (règles serveur, connexions, accès à la clé TDE).
- Outbound networking restrictions du logical server (
outbound_network_restriction_enabled) : limite les FQDN que le moteur peut joindre (anti-exfiltration). - Microsoft Purview : catalogue, classification et gouvernance des données au-delà de la base.
- Azure Policy pour SQL : imposer TLS 1.2, l'audit, Defender, l'accès public désactivé (chapitre 03).
- Hyperscale avec CMK : chaque serveur de pages compte dans la limite par Key Vault (500 au plus), à surveiller quand la base grossit.
13. Fiche à retenir#
- Plan de contrôle = Azure RBAC ; plan de données = utilisateurs et rôles SQL.
- SQL Server Contributor définit le Microsoft Entra admin mais pas « Microsoft Entra-only » ; SQL Security Manager l'inverse.
- Firewall : règles base (T-SQL seulement, prioritaires, portables) et serveur (256 max,
master) ; jusqu'à 5 min. -
0.0.0.0« Allow Azure services » = tout Azure, autres clients compris. - Règle VNet = service endpoint
Microsoft.Sql; private endpoint = IP privée + Refuser l'accès public à cocher. - Connection policy : Redirect (11000-11999) recommandée, Proxy (1433) ; TLS 1.2 minimum.
- Managed Instance : sous-réseau dédié délégué, NSG + route table obligatoires, point public 3342 désactivé par défaut.
- Microsoft Entra-only : Microsoft Entra admin obligatoire, comptes SQL bloqués (non supprimés), Policy Deny à la création.
-
CREATE USER [x] FROM EXTERNAL PROVIDER= utilisateur contenu Entra (groupe, managed identity). - TDE par défaut ; CMK : identité du serveur, wrapKey/unwrapKey, soft delete + purge, perte d'accès → Inaccessible (≈ 10 min, 30 min pour revenir seul).
- Always Encrypted : CEK (dans la base, chiffrée) + CMK (hors base) ; deterministic = égalité ; enclave = LIKE, tri, in-place encryption.
- DDM masque le résultat (pas un chiffrement) ;
UNMASKgranulaire ; RLS filtre les lignes ; ledger prouve l'intégrité. - Auditing : policy serveur (toujours appliquée) recommandée ; base en plus = double ; 3 groupes par défaut ; Stockage / Log Analytics / Event Hubs ; rétention 0 = illimitée.
- MI :
CREATE SERVER AUDIT TO URL(SAS) ouTO EXTERNAL_MONITOR; support Microsoft : audit séparéOPERATOR_AUDIT = ON. - Defender bases de données = 4 plans : Azure SQL, SQL sur machines (VM, Arc), open source (PostgreSQL, MySQL flexible servers, RDS), Cosmos DB (NoSQL seulement).
- VA express (sans stockage, recommandée) ; API classiques retirées le 16/08/2027.
Références#
Toutes lues le 21/10/2026 sur Microsoft Learn :
- Guide d'étude de l'examen SC-500
- Vue d'ensemble des capacités de sécurité d'Azure SQL Database et SQL Managed Instance
- IP firewall rules Azure SQL Database
- Service endpoints et virtual network rules pour Azure SQL Database
- Azure Private Link pour Azure SQL Database
- Paramètres de connectivité (accès public, TLS minimal, connection policy)
- Architecture de connectivité d'Azure SQL Database
- Architecture de connectivité de SQL Managed Instance
- Configurer le public endpoint de SQL Managed Instance
- Configurer l'authentification Microsoft Entra avec Azure SQL
- Microsoft Entra-only authentication avec Azure SQL
- Azure Policy pour Microsoft Entra-only authentication
- TDE avec customer-managed key
- Always Encrypted
- Always Encrypted avec secure enclaves
- Row-Level Security
- Format du journal d'audit SQL Database
- Dynamic Data Masking
- Vue d'ensemble du registre (ledger)
- Gestion des condensats du registre
- Data Discovery & Classification
- Audit d'Azure SQL Database
- Configurer l'audit pour Azure SQL Database
- Stratégie d'audit au niveau du serveur et de la base de données
- Auditing of Microsoft support operations
- Commencer l'audit d'Azure SQL Managed Instance
- Protéger vos bases de données avec Defender for Databases
- Vue d'ensemble de Defender for Azure SQL
- Vulnerability Assessment SQL (configurations express et classique)
- Defender for SQL servers on machines
- Defender for open-source relational databases
- Defender for Azure Cosmos DB
- Cosmos DB : RBAC et Microsoft Entra ID
- Sécuriser Azure Database pour Azure Database for PostgreSQL flexible server
- Sauvegardes à Long-term retention
- Registre Terraform :
azurerm_mssql_server,azurerm_mssql_server_extended_auditing_policy(fournisseur hashicorp/azurerm 5.10.0)