Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:✅Database SQL di Microsoft Fabric
Anda dapat menggunakan Fabric REST API untuk melihat dan mengonfigurasi pengaturan audit database SQL secara terprogram. API pengaturan audit SQL adalah API tingkat database yang beroperasi pada database SQL individual. Dengan menggabungkan API dengan skrip PowerShell, Anda dapat mengelola audit secara konsisten di semua database di ruang kerja.
Artikel ini menunjukkan cara menggunakan PowerShell dan pengaturan audit SQL tingkat database REST API untuk mengambil dan memperbarui pengaturan audit untuk database SQL di ruang kerja Fabric.
Prasyarat
- Anda memerlukan kapasitas Fabric yang sudah ada. Jika tidak, mulailah uji coba Fabric.
- Anda dapat menggunakan ruang kerja yang ada atau membuat ruang kerja Fabric baru dengan satu atau beberapa database SQL.
- Anda harus menjadi anggota peran Admin, Anggota, atau Kontributor untuk ruang kerja guna mengelola pengaturan audit.
- PowerShell 5.1 atau PowerShell 7.4 dan yang lebih tinggi.
- Modul Az PowerShell. Jalankan
Install-Module azdi PowerShell untuk menginstal.
Mengaudit titik akhir REST API
API pengaturan audit SQL menyediakan dua operasi untuk mengelola audit pada database SQL individual:
| Pengoperasian | Metode | URI |
|---|---|---|
| Mendapatkan pengaturan audit SQL | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| Memperbarui pengaturan audit SQL | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
Operasi Ambil memerlukan SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.All, atau Item.ReadWrite.All cakupan yang didelegasikan. Operasi Pembaruan memerlukan cakupan SQLDatabase.ReadWrite.All atau Item.ReadWrite.All yang didelegasikan. Kedua operasi mendukung identitas pengguna, perwakilan layanan, dan identitas terkelola.
Properti pengaturan audit
Objek pengaturan audit mencakup properti berikut:
| Harta benda | Tipe | Deskripsi |
|---|---|---|
auditActionsAndGroups |
string[] | Mengaudit tindakan dan grup untuk ditangkap. Default: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP, SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP. |
predicateExpression |
string | Ekspresi predikat T-SQL yang digunakan untuk memfilter peristiwa audit. Misalnya, statement not like '[select ]%' mengecualikan pernyataan SELECT. |
retentionDays |
bilangan bulat | Jumlah hari untuk menyimpan log audit.
0 menunjukkan retensi yang tidak terbatas. |
state |
string | Status audit: Enabled atau Disabled. Saat Anda mengaktifkan audit untuk pertama kalinya tanpa menentukan properti lain, sistem menggunakan nilai default. |
storageEndpoint |
string | (Baca-saja) Titik akhir penyimpanan OneLake yang menyimpan log audit. |
Menampilkan pengaturan audit untuk semua database di ruang kerja
Skrip PowerShell berikut mencantumkan semua database SQL di ruang kerja dan mengambil konfigurasi audit untuk setiap database.
Dalam skrip berikut, ganti <your workspace id> dengan ID ruang kerja Fabric Anda. Anda dapat menemukan ID ruang kerja di URL, ini adalah string unik di dalam dua / karakter setelah /groups/ di jendela browser Anda. Misalnya, 00001111-aaaa-2222-bbbb-3333cccc4444 di 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
Mengonfigurasi audit untuk semua database di ruang kerja
Setelah Anda meninjau status audit saat ini, gunakan skrip berikut untuk mengonfigurasi audit secara konsisten di semua database di ruang kerja.
Ganti <your workspace id> dengan ID ruang kerja Fabric Anda.
$auditPayload Ubah objek agar sesuai dengan konfigurasi audit yang Anda inginkan.
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)"
}
}
Praktik terbaik
- Selalu dapatkan pengaturan audit saat ini dengan permintaan
GETsebelum memperbarui denganPATCH, untuk memahami konfigurasi yang ada. - Menangani kegagalan pada masing-masing database. Jika satu pembaruan database gagal, lanjutkan pemrosesan database yang tersisa.
- Coba lagi kegagalan sementara satu per satu alih-alih menjalankan ulang seluruh skrip pembaruan massal.
- Gunakan perwakilan layanan atau identitas terkelola untuk konfigurasi audit otomatis atau terjadwal di lingkungan produksi.