Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:✅База данных SQL в Microsoft Fabric
Rest API Fabric можно использовать для просмотра и настройки параметров аудита базы данных SQL программным способом. API настроек аудита SQL — это API уровня базы данных, который работает в отдельных базах данных SQL. Объединяя API с скриптами PowerShell, вы можете согласованно управлять аудитом во всех базах данных в рабочей области.
В этой статье показано, как использовать PowerShell и параметры аудита SQL уровня базы данных REST API для получения и обновления параметров аудита для баз данных SQL в рабочей области Fabric.
Необходимые условия
- Вам нужна действующая мощность Fabric. Если вы этого не сделали, запустите пробную версию Fabric.
- Вы можете использовать существующую рабочую область или создать новую рабочую область Fabric с одной или несколькими базами данных SQL.
- Для управления параметрами аудита необходимо быть членом одной из ролей администратора, участника или контрибьютора рабочей области.
- PowerShell 5.1 или PowerShell 7.4 и выше.
- Модуль Az PowerShell. Запустите
Install-Module azв PowerShell, чтобы установить.
Аудит конечных точек REST API
API параметров аудита SQL предоставляет две операции управления аудитом в отдельных базах данных SQL:
| Операция | Метод | URI |
|---|---|---|
| Получение параметров аудита SQL | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| Обновление параметров аудита SQL | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
Для операции Get требуется SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.All или Item.ReadWrite.All делегированная область. Для операции обновления требуется SQLDatabase.ReadWrite.All или Item.ReadWrite.All делегированная область. Обе операции поддерживают удостоверения пользователей, принципалы служб и управляемые удостоверения.
Свойства параметров аудита
Объект параметров аудита содержит следующие свойства:
| Недвижимость | Тип | Описание |
|---|---|---|
auditActionsAndGroups |
строка[] | Аудит действий и групп для фиксации. По умолчанию: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUPSUCCESSFUL_DATABASE_AUTHENTICATION_GROUP. |
predicateExpression |
струна | Выражение предиката T-SQL, используемое для фильтрации событий аудита. Например, statement not like '[select ]%' исключает инструкции SELECT. |
retentionDays |
целое число | Количество дней для хранения журналов аудита.
0 указывает неограниченное хранение. |
state |
струна | Состояние аудита: Enabled или Disabled. При первом включении аудита без указания других свойств система использует значения по умолчанию. |
storageEndpoint |
струна | (только для чтения) Конечная точка хранилища OneLake, в которой хранятся журналы аудита. |
Просмотр параметров аудита для всех баз данных в рабочей области
Следующий скрипт PowerShell содержит список всех баз данных SQL в рабочей области и извлекает конфигурацию аудита для каждой базы данных.
В следующем скрипте замените <your workspace id> на идентификатор рабочей области Fabric.
Идентификатор рабочей области можно найти в URL-адресе, это уникальная строка внутри двух / символов после /groups/ окна браузера. Например, 00001111-aaaa-2222-bbbb-3333cccc4444 в 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
Настройка аудита для всех баз данных в рабочей области
После просмотра текущего состояния аудита используйте следующий сценарий, чтобы настроить аудит согласованно во всех базах данных в рабочей области.
Замените <your workspace id> идентификатором рабочего пространства Fabric. Измените $auditPayload объект в соответствии с требуемой конфигурацией аудита.
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)"
}
}
Лучшие практики
- Всегда извлекайте текущие параметры аудита с помощью запроса
GETперед обновлением с помощьюPATCH, чтобы понять существующую конфигурацию. - Обработка сбоев для каждой базы данных. Если обновление одной базы данных завершается ошибкой, продолжайте обработку оставшихся баз данных.
- Повторите временные сбои отдельно вместо повторного запуска всего скрипта массового обновления.
- Используйте служебный принципал или управляемую идентификацию для автоматической или запланированной настройки аудита в производственных средах.