Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Soveltaa:✅SQL-tietokanta Microsoft Fabric
Voit käyttää Fabric REST API :ta SQL-tietokannan auditointiasetusten tarkasteluun ja konfigurointiin ohjelmallisesti. SQL-auditointiasetusten API on tietokantatason API, joka toimii yksittäisillä SQL-tietokannoilla. Yhdistämällä API:n PowerShell-skripteihin voit hallita auditointia johdonmukaisesti kaikissa tietokannoissa työtilassa.
Tässä artikkelissa näytetään, miten PowerShelliä ja tietokantatason SQL-auditointiasetuksia REST API:ta käytetään SQL-tietokantojen auditointiasetusten hakemiseen ja päivittämiseen Fabric-työtilassa.
Edellytykset
- Tarvitset olemassa olevan Fabric-kapasiteetin. Aloita Fabric-kokeilu, jos et tee niin.
- Voit käyttää olemassa olevaa työtilaa tai luoda uuden Fabric-työtilan , jossa on yksi tai useampi SQL-tietokanta.
- Sinun täytyy olla jäsenenä työtilan ylläpitäjä-, jäsen- tai avustajan rooleissa hallitaksesi auditointiasetuksia.
- PowerShell 5.1 tai PowerShell 7.4 ja uudemmat.
- Az PowerShell -moduuli. Asenna suorittamalla
Install-Module azPowerShellissä.
REST API -päätepisteiden auditointi
SQL-auditointiasetusten API tarjoaa kaksi toimintoa yksittäisten SQL-tietokantojen auditoinnin hallintaan:
| Toiminto | Menetelmä | URI |
|---|---|---|
| Hanki SQL-auditointiasetukset | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| Päivitä SQL-auditointiasetukset | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
Get-operaatio vaatii SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.All, eli Item.ReadWrite.All delegoidun laajuuden.
Päivitystoiminto vaatii SQLDatabase.ReadWrite.All tai Item.ReadWrite.All delegoi laajuuden. Molemmat toiminnot tukevat käyttäjäidentiteettejä, palveluperiaatteita ja hallittuja identiteettejä.
Auditointiasetusten ominaisuudet
Auditointiasetusten objekti sisältää seuraavat ominaisuudet:
| Ominaisuus | Tyyppi | Description |
|---|---|---|
auditActionsAndGroups |
string[] | Auditointitoimet ja ryhmät, joita voi kerätä. Oletuksena: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP, SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP. |
predicateExpression |
merkkijono | T-SQL-predikaattilauseke, jota käytetään auditointitapahtumien suodattamiseen. Esimerkiksi poissulkee statement not like '[select ]%' SELECT-lauseet. |
retentionDays |
kokonaisluku | Päivien määrä tilintarkastuslokien säilyttämiseen.
0 tarkoittaa määräämätöntä säilytystä. |
state |
merkkijono | Tilintarkastustila: Enabled tai Disabled. Kun otat auditoinnin käyttöön ensimmäistä kertaa ilman muiden ominaisuuksien määrittelyä, järjestelmä käyttää oletusarvoja. |
storageEndpoint |
merkkijono | (Vain luku) OneLake-tallennuspäätepiste, joka tallentaa auditointilokit. |
Näytä auditointiasetukset kaikille tietokannoille työtilassa
Seuraava PowerShell-skripti listaa kaikki SQL-tietokannat työtilassa ja hakee kunkin tietokannan auditointiasetukset.
Korvaa <your workspace id> seuraavassa komentosarjassa Fabric-työtilatunnuksellasi.
Löydät työtilan ID:n URL-osoitteesta, se on ainutlaatuinen merkkijono, joka on kahden / merkin sisällä selaimen ikkunassa/groups/. Esimerkiksi 00001111-aaaa-2222-bbbb-3333cccc4444 kohdassa 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
Määritä auditointi kaikille tietokannoille työtilassa
Kun olet tarkastellut nykyistä auditointitilaa, käytä seuraavaa skriptiä konfiguroidaksesi auditoinnin johdonmukaisesti kaikissa tietokannoissa työtilassa.
Korvaa <your workspace id> se Fabric-työtilan tunnuksellasi. Muokkaa objektia $auditPayload vastaamaan haluamaasi auditointikonfiguraatiota.
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)"
}
}
Parhaat käytännöt
- Hae aina nykyiset auditointiasetukset pyynnöllä
GETennen kuin päivität ,PATCHjotta ymmärrät nykyisen konfiguraation. - Käsittele vikat per tietokanta. Jos yksi tietokantapäivitys epäonnistuu, jatka jäljellä olevien tietokantojen käsittelyä.
- Kokeile tilapäisiä epäonnistumisia yksitellen sen sijaan, että ajaisit koko massapäivitysskriptin uudelleen.
- Käytä palvelupäätä tai hallittua identiteettiä automatisoituun tai ajoitettuun auditointikonfiguraatioon tuotantoympäristöissä.