Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:✅SQL-adatbázis a Microsoft Fabricben
A Fabric REST API használatával programozott módon tekintheti meg és konfigurálhatja az SQL Database naplózási beállításait. Az SQL naplózási beállítások API egy adatbázisszintű API, amely egyes SQL-adatbázisokon működik. Az API és a PowerShell-szkriptek kombinálásával konzisztensen kezelheti a naplózást a munkaterület összes adatbázisában.
Ez a cikk bemutatja, hogyan használható a PowerShell és az adatbázisszintű SQL-naplózási beállítások REST API-ja az SQL-adatbázisok naplózási beállításainak lekérésére és frissítésére a Fabric-munkaterületen.
Előfeltételek
- Meglévő Fabric kapacitásra van szüksége. Ha nem tette meg, kezdje el a Fabric próbaverzióját.
- Használhat meglévő munkaterületet, vagy létrehozhat egy új Fabric-munkaterületet egy vagy több SQL-adatbázissal.
- A naplózási beállítások kezeléséhez a munkaterület rendszergazdai, tagi vagy közreműködői szerepköreinek tagjának kell lennie.
- PowerShell 5.1 vagy PowerShell 7.4 vagy újabb.
- Az PowerShell-modul. A telepítéshez futtassa
Install-Module aza PowerShellben.
REST API-végpontok naplózása
Az SQL naplózási beállítások API két műveletet biztosít az egyes SQL-adatbázisok naplózásának kezeléséhez:
| Operation | Módszer | URI |
|---|---|---|
| SQL-naplózási beállítások lekérése | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| SQL-naplózási beállítások frissítése | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
A Get művelethez , , SQLDatabase.Read.AllSQLDatabase.ReadWrite.Allvagy Item.Read.All delegált hatókörre van szükségItem.ReadWrite.All. A frissítési művelethez szükség van SQLDatabase.ReadWrite.All vagy Item.ReadWrite.All delegált hatókörre. Mindkét művelet támogatja a felhasználói identitásokat, a szolgáltatásneveket és a felügyelt identitásokat.
Naplózási beállítások tulajdonságai
A naplózási beállítások objektum a következő tulajdonságokat tartalmazza:
| Ingatlan | Típus | Leírás |
|---|---|---|
auditActionsAndGroups |
karakterlánc[] | Ellenőrzendő műveletek és csoportok rögzítése. Alapértelmezett: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP. SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP |
predicateExpression |
karakterlánc | A naplózási események szűrésére használt T-SQL predikátumkifejezés. Például kizárja a statement not like '[select ]%' SELECT utasításokat. |
retentionDays |
egész szám | Az auditnaplók megőrzésére vonatkozó napok száma.
0 határozatlan idejű megőrzést jelez. |
state |
karakterlánc | Ellenőrzési állapot: Enabled vagy Disabled. Ha először engedélyezi a naplózást más tulajdonságok megadása nélkül, a rendszer alapértelmezett értékeket használ. |
storageEndpoint |
karakterlánc | (Írásvédett) Az auditnaplókat tároló OneLake storage-végpont. |
A munkaterület összes adatbázisának naplózási beállításainak megtekintése
A következő PowerShell-szkript felsorolja a munkaterület összes SQL-adatbázisát, és lekéri az egyes adatbázisok naplózási konfigurációját.
Az alábbi szkriptben cserélje le a <your workspace id>-t a Fabric-munkaterület azonosítójával. A munkaterület azonosítóját az URL-címben találja, a /groups/ után, a böngészőablakban két / karakter között található egyedi sztring. Például a 00001111-aaaa-2222-bbbb-3333cccc4444https://fabric.microsoft.com/groups/00001111-aaaa-2222-bbbb-3333cccc4444/-ben.
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
Az ellenőrzés konfigurálása a munkaterületen lévő minden adatbázisra.
Az aktuális naplózási állapot áttekintése után az alábbi szkripttel konfigurálja a naplózást a munkaterület összes adatbázisában.
Cserélje le <your workspace id> a Fabric-munkaterület azonosítóját. Módosítsa az $auditPayload objektumot a kívánt auditálási konfigurációnak megfelelően.
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)"
}
}
Bevált gyakorlatok
- A meglévő konfiguráció megértéséhez mindig kérje le az aktuális naplózási beállításokat egy
GETkérésselPATCHa frissítés előtt. - Adatbázisonkénti hibák kezelése. Ha egy adatbázis frissítése sikertelen, folytassa a fennmaradó adatbázisok feldolgozását.
- A teljes tömeges frissítési szkript újrafuttatása helyett próbálkozzon újra az átmeneti hibák egyenkénti újrafuttatásával.
- Szolgáltatásnév vagy felügyelt identitás használata automatizált vagy ütemezett naplózási konfigurációhoz éles környezetekben.