Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :✅Base de données SQL dans Microsoft Fabric
Vous pouvez utiliser l’API REST Fabric pour afficher et configurer les paramètres d’audit de base de données SQL par programmation. L’API des paramètres d’audit SQL est une API au niveau de la base de données qui fonctionne sur des bases de données SQL individuelles. En combinant l’API avec des scripts PowerShell, vous pouvez gérer l’audit de manière cohérente sur toutes les bases de données d’un espace de travail.
Cet article montre comment utiliser PowerShell et l’API REST des paramètres d’audit SQL au niveau de la base de données pour récupérer et mettre à jour les paramètres d’audit pour les bases de données SQL dans un espace de travail Fabric.
Prerequisites
- Vous avez besoin d’une capacité Fabric existante. Si ce n’est pas le cas, démarrez une version d’évaluation de Fabric.
- Vous pouvez utiliser un espace de travail existant ou créer un espace de travail Fabric avec une ou plusieurs bases de données SQL.
- Vous devez être membre des rôles Administrateur, Membre ou Contributeur de l’espace de travail pour gérer les paramètres d’audit.
- PowerShell 5.1 ou PowerShell 7.4 et versions ultérieures.
- Module Az PowerShell. Exécutez
Install-Module azdans PowerShell pour l’installer.
Audit des points de terminaison d’API REST
L’API des paramètres d’audit SQL fournit deux opérations pour la gestion de l’audit sur des bases de données SQL individuelles :
| Operation | Méthode | URI |
|---|---|---|
| Obtenir les paramètres d’audit SQL | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| Mettre à jour les paramètres d’audit SQL | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
L’opération Get nécessite une étendue déléguée SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.All, ou Item.ReadWrite.All. L'opération de mise à jour requiert une portée SQLDatabase.ReadWrite.All ou Item.ReadWrite.All déléguée. Les deux opérations prennent en charge les identités utilisateur, les principaux de service et les identités managées.
Propriétés des paramètres d’audit
L’objet paramètres d’audit inclut les propriétés suivantes :
| Propriété | Type | Description |
|---|---|---|
auditActionsAndGroups |
chaîne de caractères[] | Auditer les actions et les groupes à enregistrer. Valeur par défaut : BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP, SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP. |
predicateExpression |
ficelle | Expression de prédicat T-SQL utilisée pour filtrer les événements d’audit. Par exemple, statement not like '[select ]%' exclut les instructions SELECT. |
retentionDays |
entier | Nombre de jours pour conserver les journaux d’audit.
0 indique la rétention indéfinie. |
state |
ficelle | État d’audit : Enabled ou Disabled. Lorsque vous activez l’audit pour la première fois sans spécifier d’autres propriétés, le système utilise des valeurs par défaut. |
storageEndpoint |
ficelle | (Lecture seule) Point de terminaison de stockage OneLake qui stocke les journaux d’audit. |
Afficher les paramètres d’audit pour toutes les bases de données d’un espace de travail
Le script PowerShell suivant répertorie toutes les bases de données SQL d’un espace de travail et récupère la configuration d’audit pour chaque base de données.
Dans le script suivant, remplacez <your workspace id> par votre ID d’espace de travail Fabric. Vous trouverez l’ID d’un espace de travail dans l’URL, il s’agit de la chaîne unique à l’intérieur de deux / caractères après /groups/ la fenêtre de votre navigateur. Par exemple, 00001111-aaaa-2222-bbbb-3333cccc4444 dans https://fabric.microsoft.com/groups/00001111-aaaa-2222-bbbb-3333cccc4444/.
Import-Module Az.Accounts
Connect-AzAccount
$workspaceId = '<your workspace id>'
$baseUri = "https://api.fabric.microsoft.com"
# Obtain an access token
$token = (Get-AzAccessToken -ResourceUrl "https://api.fabric.microsoft.com")
$secureToken = $token.Token | ConvertFrom-SecureString -AsPlainText
$headers = @{
"Authorization" = "Bearer $secureToken"
"Content-Type" = "application/json"
}
# List all SQL databases in the workspace
$databasesUri = "$baseUri/v1/workspaces/$workspaceId/sqlDatabases"
$databases = @()
$continuationToken = $null
do {
$url = $databasesUri
if ($continuationToken) {
$encoded = [System.Web.HttpUtility]::UrlEncode($continuationToken)
$url = "$url`?continuationToken=$encoded"
}
$response = Invoke-RestMethod -Method GET -Uri $url -Headers $headers
if ($response.value) { $databases += $response.value }
$continuationToken = $response.continuationToken
} while ($continuationToken)
Write-Host "Found $($databases.Count) SQL databases."
# Retrieve audit settings for each database
$results = @()
foreach ($db in $databases) {
try {
$auditUri = "$baseUri/v1/workspaces/$workspaceId/sqlDatabases/$($db.id)/settings/sqlAudit"
$audit = Invoke-RestMethod -Method GET -Uri $auditUri -Headers $headers
$results += [PSCustomObject]@{
DatabaseName = $db.displayName
DatabaseId = $db.id
State = $audit.state
RetentionDays = $audit.retentionDays
AuditActionsAndGroups = ($audit.auditActionsAndGroups -join "; ")
PredicateExpression = $audit.predicateExpression
}
}
catch {
$results += [PSCustomObject]@{
DatabaseName = $db.displayName
DatabaseId = $db.id
State = "ERROR"
RetentionDays = ""
AuditActionsAndGroups = ""
PredicateExpression = $_.Exception.Message
}
}
}
$results | Format-Table -AutoSize
Configurer l’audit pour toutes les bases de données d’un espace de travail
Après avoir examiné l’état d’audit actuel, utilisez le script suivant pour configurer l’audit de manière cohérente sur toutes les bases de données d’un espace de travail.
Remplacez <your workspace id> par votre ID d’espace de travail Fabric. Modifiez l’objet pour qu’il $auditPayload corresponde à votre configuration d’audit souhaitée.
Import-Module Az.Accounts
Connect-AzAccount
$workspaceId = '<your workspace id>'
$baseUri = "https://api.fabric.microsoft.com"
# Obtain an access token
$token = (Get-AzAccessToken -ResourceUrl "https://api.fabric.microsoft.com")
$secureToken = $token.Token | ConvertFrom-SecureString -AsPlainText
$headers = @{
"Authorization" = "Bearer $secureToken"
"Content-Type" = "application/json"
}
# Define the audit configuration to apply
$auditPayload = @{
state = "Enabled"
auditActionsAndGroups = @(
"BATCH_COMPLETED_GROUP",
"FAILED_DATABASE_AUTHENTICATION_GROUP",
"SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP"
)
retentionDays = 10
predicateExpression = "statement not like '[select ]%'"
} | ConvertTo-Json -Depth 5
# List all SQL databases in the workspace
$databasesUri = "$baseUri/v1/workspaces/$workspaceId/sqlDatabases"
$databases = @()
$continuationToken = $null
do {
$url = $databasesUri
if ($continuationToken) {
$encoded = [System.Web.HttpUtility]::UrlEncode($continuationToken)
$url = "$url`?continuationToken=$encoded"
}
$response = Invoke-RestMethod -Method GET -Uri $url -Headers $headers
if ($response.value) { $databases += $response.value }
$continuationToken = $response.continuationToken
} while ($continuationToken)
Write-Host "Configuring auditing for $($databases.Count) SQL databases..."
foreach ($db in $databases) {
try {
$auditUri = "$baseUri/v1/workspaces/$workspaceId/sqlDatabases/$($db.id)/settings/sqlAudit"
Invoke-RestMethod -Method PATCH -Uri $auditUri -Headers $headers -Body $auditPayload | Out-Null
Write-Host "[OK] Updated auditing for: $($db.displayName)"
}
catch {
Write-Host "[FAIL] $($db.displayName): $($_.Exception.Message)"
}
}
Bonnes pratiques
- Récupérez toujours les paramètres d’audit actuels avec une
GETdemande avant la mise à jour avecPATCH, pour comprendre la configuration existante. - Gérer les échecs par base de données. Si une mise à jour de base de données échoue, poursuivez le traitement des bases de données restantes.
- Réessayez les échecs temporaires individuellement au lieu de réexécuter l’intégralité du script de mise à jour en bloc.
- Utilisez un principal de service ou une identité managée pour la configuration d’audit automatisée ou planifiée dans les environnements de production.