Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:✅Microsoft Fabric'te SQL veritabanı
Doku REST API'sini kullanarak SQL veritabanı denetim ayarlarını program aracılığıyla görüntüleyebilir ve yapılandırabilirsiniz. SQL denetim ayarları API'si, tek tek SQL veritabanlarında çalışan veritabanı düzeyinde bir API'dir. API'yi PowerShell betikleriyle birleştirerek, çalışma alanı içindeki tüm veritabanlarında denetimi tutarlı bir şekilde yönetebilirsiniz.
Bu makalede, Bir Yapı çalışma alanında SQL veritabanları için denetim ayarlarını almak ve güncelleştirmek için PowerShell ve veritabanı düzeyinde SQL denetim ayarları REST API'sinin nasıl kullanılacağı gösterilmektedir.
Önkoşullar
- Mevcut bir Fabric kapasitesine ihtiyacınız vardır. Aksi takdirde bir Fabric deneme sürümü başlatın.
- Mevcut bir çalışma alanını kullanabilir veya bir veya daha fazla SQL veritabanıyla yeni bir Doku çalışma alanı oluşturabilirsiniz .
- Denetim ayarlarını yönetmek için çalışma alanının Yönetici, Üye veya Katkıda Bulunan rollerinin üyesi olmanız gerekir.
- PowerShell 5.1 veya PowerShell 7.4 ve üzeri.
- Az PowerShell modülü. Yüklemek için PowerShell'de komutunu çalıştırın
Install-Module az.
REST API uç noktalarını denetleme
SQL denetim ayarları API'si, tek tek SQL veritabanlarında denetimi yönetmek için iki işlem sağlar:
| Operation | Yöntem | URI |
|---|---|---|
| SQL denetim ayarlarını alma | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| SQL denetim ayarlarını güncelleştirme | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
Get işlemi için SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.All, veya Item.ReadWrite.All temsilci kapsamı gerekir.
Güncelleştirme işlemi için SQLDatabase.ReadWrite.All veya Item.ReadWrite.All tarafından yetkilendirilmiş kapsam gerekir. Her iki işlem de kullanıcı kimliklerini, hizmet sorumlularını ve yönetilen kimlikleri destekler.
Denetim ayarları özellikleri
Denetim ayarları nesnesi aşağıdaki özellikleri içerir:
| Mülkiyet | Türü | Açıklama |
|---|---|---|
auditActionsAndGroups |
string[] | Denetlenecek eylemleri ve tutulacak grupları yakala. Varsayılan: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP, SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP. |
predicateExpression |
string | Denetim olaylarını filtrelemek için kullanılan bir T-SQL koşulu ifadesi. Örneğin, statement not like '[select ]%' SELECT deyimlerini dışlar. |
retentionDays |
tamsayı | Denetim günlüklerinin tutulacak gün sayısı.
0 süresiz saklamayı gösterir. |
state |
string | Denetim durumu: Enabled veya Disabled. Denetimi diğer özellikleri belirtmeden ilk kez etkinleştirdiğinizde sistem varsayılan değerleri kullanır. |
storageEndpoint |
string | (Salt okunur) Denetim günlüklerini depolayan OneLake depolama uç noktası. |
Çalışma alanında tüm veritabanları için denetim ayarlarını görüntüleme
Aşağıdaki PowerShell betiği çalışma alanında tüm SQL veritabanlarını listeler ve her veritabanı için denetim yapılandırmasını alır.
Aşağıdaki betikte <your workspace id> ifadesini Doku çalışma alanı kimliğinizle değiştirin. Url'de bir çalışma alanının kimliğini bulabilirsiniz ; bu, tarayıcı pencerenizde iki / karakterden sonraki /groups/ benzersiz dizedir. Örneğin, 00001111-aaaa-2222-bbbb-3333cccc4444 içinde 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
Çalışma alanı içindeki tüm veritabanları için denetimi yapılandırma
Geçerli denetim durumunu gözden geçirdikten sonra, çalışma alanı içindeki tüm veritabanlarında denetimi tutarlı bir şekilde yapılandırmak için aşağıdaki betiği kullanın.
<your workspace id> ifadesini Fabric çalışma alanı kimliğiniz ile değiştirin.
$auditPayload Nesneyi istediğiniz denetim yapılandırmasıyla eşleşecek şekilde değiştirin.
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)"
}
}
En iyi uygulamalar
- Daima geçerli denetim ayarlarını var olan yapılandırmayı anlamak için güncellemeyi
PATCHyapmadan önce birGETisteğiyle alın. - Hataları, veritabanı başına işleme. Bir veritabanı güncelleştirmesi başarısız olursa kalan veritabanlarını işlemeye devam edin.
- Toplu güncelleme betiğinin tamamını yeniden çalıştırmak yerine geçici hata türlerini her birini tek tek yeniden deneyin.
- Üretim ortamlarında otomatik veya zamanlanmış denetim yapılandırması için hizmet sorumlusu veya yönetilen kimlik kullanın.