Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
si applica a:✅database SQL in Microsoft Fabric
È possibile usare l'API REST Fabric per visualizzare e configurare le impostazioni di controllo del database SQL programmaticamente. L'API delle impostazioni di controllo SQL è un'API a livello di database che opera su singoli database SQL. Combinando l'API con gli script di PowerShell, è possibile gestire il controllo in modo coerente in tutti i database in un'area di lavoro.
Questo articolo illustra come usare PowerShell e l'API REST delle impostazioni di audit SQL a livello di database per recuperare e aggiornare le impostazioni di audit per i database SQL in un workspace Fabric.
Prerequisiti
- Hai bisogno di una capacità di Fabric esistente. Se non lo fai, avvia una versione di prova di Fabric.
- È possibile usare un'area di lavoro esistente o creare una nuova area di lavoro Fabric con uno o più database SQL.
- Per gestire le impostazioni di controllo, è necessario essere membri dei ruoli Amministratore, Membro o Collaboratore per l'area di lavoro .
- PowerShell 5.1 o PowerShell 7.4 e versioni successive.
- Modulo Az PowerShell. Eseguire
Install-Module azin PowerShell per l'installazione.
Controllo degli endpoint dell'API REST
L'API delle impostazioni di controllo SQL offre due operazioni per la gestione del controllo nei singoli database SQL:
| Operation | metodo | URI (Identificatore Uniforme delle Risorse) |
|---|---|---|
| Recuperare le impostazioni di controllo SQL | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| Aggiornare le impostazioni di controllo SQL | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
L'operazione Get richiede uno tra SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.All o Item.ReadWrite.All come ambiti delegati. L'operazione di aggiornamento richiede l'ambito delegato SQLDatabase.ReadWrite.All o Item.ReadWrite.All. Entrambe le operazioni supportano identità utente, entità servizio e identità gestite.
Proprietà delle impostazioni di controllo
L'oggetto impostazioni di controllo include le proprietà seguenti:
| Proprietà | Tipo | Descrizione |
|---|---|---|
auditActionsAndGroups |
string[] | Controlla azioni e gruppi da acquisire. Impostazione predefinita: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP, SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP. |
predicateExpression |
corda | Espressione di predicato T-SQL usata per filtrare gli eventi di controllo. Ad esempio, statement not like '[select ]%' esclude le istruzioni SELECT. |
retentionDays |
numero intero | Numero di giorni per conservare i log di controllo.
0 indica la conservazione illimitata. |
state |
corda | Stato di controllo: Enabled o Disabled. Quando si abilita il controllo per la prima volta senza specificare altre proprietà, il sistema usa i valori predefiniti. |
storageEndpoint |
corda | (Sola lettura) Endpoint di archiviazione OneLake in cui sono archiviati i log di controllo. |
Visualizzare le impostazioni di controllo per tutti i database in un'area di lavoro
Lo script di PowerShell seguente elenca tutti i database SQL in un'area di lavoro e recupera la configurazione di controllo per ogni database.
Nel seguente script, sostituire <your workspace id> con l'ID dell'area di lavoro Fabric. È possibile trovare l'ID di un'area di lavoro nell'URL, è la stringa univoca all'interno di due / caratteri dopo /groups/ nella finestra del browser. Ad esempio, 00001111-aaaa-2222-bbbb-3333cccc4444 in 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
Configurare il controllo per tutti i database in un'area di lavoro
Dopo aver esaminato lo stato di controllo corrente, usare lo script seguente per configurare il controllo in modo coerente in tutti i database in un'area di lavoro.
Sostituire <your workspace id> con l'ID dell'area di lavoro Fabric. Modificare l'oggetto $auditPayload in modo che corrisponda alla configurazione di controllo desiderata.
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)"
}
}
Procedure consigliate
- Recuperare sempre le impostazioni di controllo correnti con una
GETrichiesta prima di eseguire l'aggiornamento conPATCHper comprendere la configurazione esistente. - Gestire gli errori per ogni database. Se un aggiornamento del database non riesce, continuare a elaborare i database rimanenti.
- Ripetere singolarmente i tentativi per errori temporanei invece di eseguire nuovamente l'intero script di aggiornamento in blocco.
- Usare un'entità servizio o un'identità gestita per la configurazione di controllo automatizzata o pianificata negli ambienti di produzione.