Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Platí na: ✅SQL databázu v Microsoft Fabric
Môžete použiť Fabric REST API na programové zobrazenie a konfiguráciu nastavení auditu SQL databázy. API pre nastavenia auditu SQL je API na úrovni databázy, ktoré pracuje na jednotlivých SQL databázach. Kombináciou API s PowerShell skriptami môžete riadiť audit konzistentne naprieč všetkými databázami v pracovnom priestore.
Tento článok ukazuje, ako použiť PowerShell a REST API pre audit SQL na úrovni databázy na získanie a aktualizáciu nastavení auditu pre SQL databázy v pracovnom priestore Fabric.
Predpoklady
- Potrebujete existujúcu kapacitu služby Fabric. Ak nie, spustite skúšobnú verziu služby Fabric.
- Môžete použiť existujúci pracovný priestor alebo vytvoriť nový Fabric pracovný priestor s jednou alebo viacerými SQL databázami.
- Musíte byť členom rolí administrátora, člena alebo prispievateľa do pracovného priestoru, aby ste mohli spravovať nastavenia auditu.
- PowerShell 5.1 alebo PowerShell 7.4 a vyššie.
- Modul Az PowerShell. Nainštalujte
Install-Module azju spustením prostredia PowerShell.
Auditovanie koncových bodov REST API
API pre nastavenia auditu SQL poskytuje dve operácie na správu auditu jednotlivých SQL databáz:
| Operation | Metóda | URI |
|---|---|---|
| Získajte nastavenia SQL auditu | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| Aktualizujte nastavenia SQL auditu | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
Operácia Get vyžaduje SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.All, alebo Item.ReadWrite.All delegovaný rozsah. Operácia Update vyžaduje alebo Item.ReadWrite.All deleguje SQLDatabase.ReadWrite.All rozsah. Obe operácie podporujú používateľské identity, princípy služieb a spravované identity.
Vlastnosti nastavení auditu
Objekt nastavení auditu obsahuje nasledujúce vlastnosti:
| Vlastnosť | Typ | Description |
|---|---|---|
auditActionsAndGroups |
reťazec[] | Auditné akcie a skupiny na zachytenie. Predvolené: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP, . SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP |
predicateExpression |
reťazec | T-SQL predikátový výraz používaný na filtrovanie auditných udalostí. Napríklad vylučuje statement not like '[select ]%' SELECT príkazy. |
retentionDays |
typ Integer | Počet dní na uchovávanie auditných záznamov.
0 označuje neobmedzené udržanie. |
state |
reťazec | Audit stav: Enabled alebo Disabled. Keď prvýkrát zapnete audit bez špecifikácie iných vlastností, systém použije predvolené hodnoty. |
storageEndpoint |
reťazec | (Iba na čítanie) OneLake endpoint na ukladanie, ktorý uchováva auditné logy. |
Zobraziť nastavenia auditu pre všetky databázy v pracovnom priestore
Nasledujúci PowerShell skript uvádza všetky SQL databázy v pracovnom priestore a získava auditnú konfiguráciu pre každú databázu.
V nasledujúcom skripte nahraďte <your workspace id> svoje ID pracovného priestoru služby Fabric.
ID pracovného priestoru nájdete v URL, je to jedinečný reťazec v dvoch / znakoch v /groups/ okne prehliadača. Naprí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
Nastavte auditovanie pre všetky databázy v pracovnom priestore
Po preskúmaní aktuálneho stavu auditu použite nasledujúci skript na konzistentnú konfiguráciu auditu vo všetkých databázach v pracovnom priestore.
Nahraďte <your workspace id> ho identifikátorom pracovného priestoru služby Fabric. Upravte $auditPayload objekt tak, aby zodpovedal vašej požadovanej konfigurácii auditu.
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)"
}
}
Osvedčené postupy
- Vždy si pred aktualizáciou
PATCHpomocou , aby ste pochopili existujúcu konfiguráciu, vždy obnovte aktuálne nastavenia auditu s požiadavkouGET. - Riešenie zlyhaní v každej databáze. Ak jedna aktualizácia databázy zlyhá, pokračujte v spracovaní zostávajúcich databáz.
- Opakovane skúšajte prechodné zlyhania jednotlivo namiesto opakovania celého hromadného aktualizáciového skriptu.
- Použite service principal alebo spravovanú identitu pre automatizovanú alebo plánovanú auditnú konfiguráciu v produkčných prostrediach.