Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:✅bazy danych SQL w Microsoft Fabric
Interfejs Fabric REST API umożliwia programowe wyświetlanie i konfigurowanie ustawień audytowania bazy danych SQL. Interfejs API ustawień inspekcji SQL to interfejs API na poziomie bazy danych, który działa w poszczególnych bazach danych SQL. Łącząc interfejs API ze skryptami programu PowerShell, można spójnie zarządzać inspekcją we wszystkich bazach danych w obszarze roboczym.
W tym artykule pokazano, jak używać PowerShell i interfejsu API REST do ustawień audytu SQL na poziomie bazy danych do pobierania i aktualizowania ustawień audytu dla baz danych SQL w obszarze roboczym Fabric.
Wymagania wstępne
- Potrzebujesz istniejącej przepustowości Fabryki. Jeśli tego nie zrobisz, uruchom wersję próbną usługi Fabric.
- Możesz użyć istniejącego obszaru roboczego lub utworzyć nowy obszar roboczy usługi Fabric z co najmniej jedną bazą danych SQL.
- Aby zarządzać ustawieniami inspekcji, musisz być członkiem obszaru roboczego w roli Administrator, Użytkownik lub Kontrybutor.
- PowerShell 5.1 lub PowerShell 7.4 lub nowszy.
- Moduł Az programu PowerShell. Uruchom polecenie
Install-Module azw programie PowerShell, aby zainstalować.
Inspekcja punktów końcowych interfejsu API REST
Interfejs API ustawień inspekcji SQL udostępnia dwie operacje zarządzania inspekcją w poszczególnych bazach danych SQL:
| Operation | Metoda | URI |
|---|---|---|
| Pobierz ustawienia audytu SQL | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| Aktualizowanie ustawień inspekcji SQL | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
Operacja Get wymaga SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.All lub Item.ReadWrite.All delegowanego zakresu. Operacja aktualizacji wymaga SQLDatabase.ReadWrite.All lub Item.ReadWrite.All delegowanego zakresu. Obie operacje obsługują tożsamości użytkowników, jednostki usługi i tożsamości zarządzane.
Właściwości ustawień audytu
Obiekt ustawień inspekcji zawiera następujące właściwości:
| Majątek | Typ | Opis |
|---|---|---|
auditActionsAndGroups |
string[] | Akcje inspekcji i grupy do przechwytywania. Ustawienie domyślne: BATCH_COMPLETED_GROUP, , FAILED_DATABASE_AUTHENTICATION_GROUPSUCCESSFUL_DATABASE_AUTHENTICATION_GROUP. |
predicateExpression |
ciąg | Wyrażenie predykatu języka T-SQL używane do filtrowania zdarzeń inspekcji. Na przykład statement not like '[select ]%' wyklucza instrukcje SELECT. |
retentionDays |
liczba całkowita | Liczba dni przechowywania dzienników inspekcji.
0 wskazuje czas przechowywania na czas nieokreślony. |
state |
ciąg | Stan inspekcji: Enabled lub Disabled. Po włączeniu inspekcji po raz pierwszy bez określania innych właściwości system używa wartości domyślnych. |
storageEndpoint |
ciąg | (Tylko do odczytu) Punkt końcowy magazynu OneLake, który przechowuje dzienniki inspekcji. |
Wyświetlanie ustawień inspekcji dla wszystkich baz danych w obszarze roboczym
Poniższy skrypt programu PowerShell wyświetla listę wszystkich baz danych SQL w obszarze roboczym i pobiera konfigurację inspekcji dla każdej bazy danych.
W poniższym skrypcie zastąp <your workspace id> element identyfikatorem obszaru roboczego usługi Fabric.
Identyfikator obszaru roboczego można znaleźć w adresie URL. Jest to unikatowy ciąg w dwóch / znakach po /groups/ w oknie przeglądarki. Na przykład 00001111-aaaa-2222-bbbb-3333cccc4444 w 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
Konfigurowanie inspekcji dla wszystkich baz danych w obszarze roboczym
Po przejrzeniu bieżącego stanu inspekcji użyj następującego skryptu, aby skonfigurować inspekcję spójnie we wszystkich bazach danych w obszarze roboczym.
Zastąp <your workspace id> identyfikatorem obszaru roboczego Fabric. Zmodyfikuj obiekt $auditPayload tak, aby był zgodny z żądaną konfiguracją inspekcji.
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)"
}
}
Najlepsze rozwiązania
- Zawsze pobieraj bieżące ustawienia inspekcji za pomocą żądania
GETprzed aktualizacją za pomocąPATCH, aby zrozumieć istniejącą konfigurację. - Obsługa błędów dla każdej bazy danych. Jeśli jedna aktualizacja bazy danych zakończy się niepowodzeniem, kontynuuj przetwarzanie pozostałych baz danych.
- Ponów próbę błędów przejściowych indywidualnie zamiast ponownego uruchamiania całego skryptu aktualizacji zbiorczej.
- Użyj podmiotu usługi lub tożsamości zarządzanej do automatycznej lub zaplanowanej konfiguracji audytu w środowiskach produkcyjnych.