Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:✅databáze SQL v Microsoft Fabric
Rozhraní REST API fabric můžete použít k zobrazení a konfiguraci nastavení auditování databáze SQL prostřednictvím kódu programu. Rozhraní API pro nastavení auditu SQL je rozhraní API na úrovni databáze, které pracuje s jednotlivými databázemi SQL. Kombinací rozhraní API se skripty PowerShellu můžete spravovat auditování konzistentně napříč všemi databázemi v pracovním prostoru.
Tento článek ukazuje, jak pomocí PowerShellu a rozhraní REST API pro nastavení auditu SQL na úrovni databáze načíst a aktualizovat nastavení auditování pro databáze SQL v pracovním prostoru Fabric.
Předpoklady
- Potřebujete existující kapacitu Fabric. Pokud ne, spusťte zkušební verzi Fabric.
- Můžete použít existující pracovní prostor nebo vytvořit nový pracovní prostor Fabric s jednou nebo více databázemi SQL.
- Abyste mohli spravovat nastavení auditování, musíte být členem role správce, člena nebo přispěvatele pracovního prostoru .
- PowerShell 5.1 nebo PowerShell 7.4 a vyšší
- Modul Az PowerShell. Spusťte
Install-Module azv PowerShellu a nainstalujte ho.
Auditování koncových bodů rozhraní REST API
Rozhraní API pro nastavení auditu SQL poskytuje dvě operace pro správu auditování jednotlivých databází SQL:
| Operation | Metoda | identifikátor URI |
|---|---|---|
| Získání nastavení auditu SQL | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| Aktualizace nastavení auditu SQL | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
Operace Get vyžaduje SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.Allnebo Item.ReadWrite.All delegovaný obor. Operace Aktualizace vyžaduje buď SQLDatabase.ReadWrite.All nebo Item.ReadWrite.All oprávnění pro delegovaný přístup. Obě operace podporují identity uživatelů, služby zástupců a spravované identity.
Vlastnosti nastavení auditu
Objekt nastavení auditu obsahuje následující vlastnosti:
| Vlastnictví | Typ | Description |
|---|---|---|
auditActionsAndGroups |
řetězec[] | Auditujte akce a skupiny, které se mají zachytit. Výchozí hodnota: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP, SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP. |
predicateExpression |
řetězec | Výraz predikátu T-SQL sloužící k filtrování událostí auditu. Vyloučí například statement not like '[select ]%' příkazy SELECT. |
retentionDays |
integer | Počet dnů, po které se mají uchovávat protokoly auditu
0 označuje neomezenou dobu uchování. |
state |
řetězec | Stav auditu: Enabled nebo Disabled. Když auditování povolíte poprvé bez zadání dalších vlastností, systém použije výchozí hodnoty. |
storageEndpoint |
řetězec | (Jen pro čtení) Koncový bod úložiště OneLake, který ukládá protokoly auditu. |
Zobrazení nastavení auditování pro všechny databáze v pracovním prostoru
Následující skript PowerShellu zobrazí seznam všech databází SQL v pracovním prostoru a načte konfiguraci auditování pro každou databázi.
V tomto skriptu nahraďte <your workspace id> za ID vašeho pracovního prostoru Fabric.
ID pracovního prostoru najdete v adrese URL. Jedná se o jedinečný řetězec uvnitř dvou / znaků za /groups/ oknem prohlížeče. Například 00001111-aaaa-2222-bbbb-3333cccc4444 v 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
Konfigurace auditování pro všechny databáze v pracovním prostoru
Po kontrole aktuálního stavu auditování pomocí následujícího skriptu konzistentně nakonfigurujte auditování napříč všemi databázemi v pracovním prostoru.
Nahraďte <your workspace id> ID pracovního prostoru Fabric.
$auditPayload Upravte objekt tak, aby odpovídal požadované konfiguraci auditování.
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)"
}
}
Osvědčené postupy
- Vždy načtěte aktuální nastavení auditu s požadavkem
GETpřed aktualizací pomocíPATCH, abyste porozuměli stávající konfiguraci. - Řešení selhání pro každou databázi. Pokud selže jedna aktualizace databáze, pokračujte ve zpracování zbývajících databází.
- Opakování přechodných selhání jednotlivě místo opakovaného spuštění celého skriptu hromadné aktualizace
- Použijte aplikační objekt nebo spravovanou identitu pro automatizovanou nebo plánovanou konfiguraci auditu v produkčních prostředích.