Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:✅База данных 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, чтобы понять существующую конфигурацию. - Обработка сбоев для каждой базы данных. Если обновление одной базы данных завершается ошибкой, продолжайте обработку оставшихся баз данных.
- Повторите временные сбои отдельно вместо повторного запуска всего скрипта массового обновления.
- Используйте служебный принципал или управляемую идентификацию для автоматической или запланированной настройки аудита в производственных средах.