Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:✅Base de datos SQL en Microsoft Fabric
Puede usar la API REST de Fabric para ver y configurar las opciones de auditoría de SQL Database mediante programación. La API de configuración de auditoría de SQL es una API de nivel de base de datos que funciona en bases de datos SQL individuales. Al combinar la API con scripts de PowerShell, puede administrar la auditoría de forma coherente en todas las bases de datos de un área de trabajo.
En este artículo se muestra cómo usar PowerShell y la API REST de la configuración de auditoría de SQL de nivel de base de datos para recuperar y actualizar la configuración de auditoría de las bases de datos SQL en un área de trabajo de Fabric.
Prerrequisitos
- Necesita una capacidad de Fabric existente. Si no lo hace, inicie una versión de prueba de Fabric.
- Puede usar un área de trabajo existente o crear una nueva área de trabajo de Fabric con una o varias bases de datos SQL.
- Debe ser miembro de los roles Administrador, Miembro o Colaborador del área de trabajo para administrar la configuración de auditoría.
- PowerShell 5.1 o PowerShell 7.4 y versiones posteriores.
- El módulo Az de PowerShell. Ejecute
Install-Module azen PowerShell para instalar.
Auditoría de puntos de conexión de la API REST
La API de configuración de auditoría de SQL proporciona dos operaciones para administrar la auditoría en bases de datos SQL individuales:
| Operación | Método | URI |
|---|---|---|
| Obtención de la configuración de auditoría de SQL | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| Actualización de la configuración de auditoría de SQL | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
La operación Get requiere SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.All o Item.ReadWrite.All, alguno de los siguientes ámbitos delegados. La operación de actualización requiere SQLDatabase.ReadWrite.All o Item.ReadWrite.All ámbito delegado. Ambas operaciones admiten identidades de usuario, entidades de servicio e identidades administradas.
Propiedades de configuración de auditoría
El objeto de configuración de auditoría incluye las siguientes propiedades:
| Propiedad | Tipo | Descripción |
|---|---|---|
auditActionsAndGroups |
string[] | Auditar acciones y grupos para capturar. Valor predeterminado: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP, SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP. |
predicateExpression |
cuerda / cadena | Expresión de predicado de T-SQL que se usa para filtrar eventos de auditoría. Por ejemplo, statement not like '[select ]%' excluye instrucciones SELECT. |
retentionDays |
entero | Número de días para conservar los registros de auditoría.
0 indica la retención indefinida. |
state |
cuerda / cadena | Estado de auditoría: Enabled o Disabled. Al habilitar la auditoría por primera vez sin especificar otras propiedades, el sistema usa valores predeterminados. |
storageEndpoint |
cuerda / cadena | (Solo lectura) El punto de conexión de almacenamiento de OneLake que almacena los registros de auditoría. |
Visualización de la configuración de auditoría de todas las bases de datos de un área de trabajo
El siguiente script de PowerShell enumera todas las bases de datos SQL de un área de trabajo y recupera la configuración de auditoría de cada base de datos.
En el script siguiente, reemplace por <your workspace id> el identificador del área de trabajo de Fabric. Puede encontrar el identificador de un área de trabajo en la dirección URL, es la cadena única dentro de dos / caracteres después /groups/ en la ventana del explorador. Por ejemplo, 00001111-aaaa-2222-bbbb-3333cccc4444 en 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
Configuración de la auditoría de todas las bases de datos de un área de trabajo
Después de revisar el estado de auditoría actual, use el siguiente script para configurar la auditoría de forma coherente en todas las bases de datos de un área de trabajo.
Reemplace por <your workspace id> el identificador del área de trabajo de Fabric. Modifique el $auditPayload objeto para que coincida con la configuración de auditoría deseada.
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)"
}
}
procedimientos recomendados
- Recupere siempre la configuración de auditoría actual con una
GETsolicitud antes de actualizar conPATCH, para comprender la configuración existente. - Controlar errores por base de datos. Si se produce un error en una actualización de la base de datos, continúe procesando las bases de datos restantes.
- Vuelva a intentar errores transitorios individualmente en lugar de volver a ejecutar todo el script de actualización masiva.
- Utilice un principal de servicio o una identidad administrada para la configuración de auditoría automatizada o programada en entornos de producción.
Contenido relacionado
- Auditoría de la base de datos SQL en Fabric
- Configuración de auditoría de SQL: obtener la configuración de auditoría de SQL
- Configuración de auditoría de SQL: actualización de la configuración de auditoría de SQL
- Seguridad en la base de datos SQL en Microsoft Fabric
- Creación de una base de datos SQL con la API REST