Διαχείριση ελέγχου βάσης δεδομένων SQL με το REST API

Ισχύει για:βάση δεδομένων SQL σε Microsoft Fabric

Μπορείτε να χρησιμοποιήσετε το Fabric REST API για να προβάλετε και να ρυθμίσετε τις παραμέτρους ελέγχου βάσης δεδομένων SQL μέσω προγραμματισμού. Το API ρυθμίσεων ελέγχου SQL είναι ένα API σε επίπεδο βάσης δεδομένων που λειτουργεί σε μεμονωμένες βάσεις δεδομένων SQL. Συνδυάζοντας το API με δέσμες ενεργειών PowerShell, μπορείτε να διαχειριστείτε τον έλεγχο με συνέπεια σε όλες τις βάσεις δεδομένων σε έναν χώρο εργασίας.

Αυτό το άρθρο παρουσιάζει τον τρόπο χρήσης του PowerShell και των ρυθμίσεων ελέγχου SQL σε επίπεδο βάσης δεδομένων REST API για την ανάκτηση και ενημέρωση ρυθμίσεων ελέγχου για βάσεις δεδομένων SQL σε έναν χώρο εργασίας Fabric.

Προϋποθέσεις

Έλεγχος τελικών σημείων 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

Η λειτουργία Λήψη απαιτεί SQLDatabase.Read.All, SQLDatabase.ReadWrite.All, Item.Read.Allή Item.ReadWrite.All πεδίο ανάθεσης. Η λειτουργία Ενημέρωση απαιτεί SQLDatabase.ReadWrite.All ή Item.ReadWrite.All έχει ανατεθεί εμβέλεια. Και οι δύο λειτουργίες υποστηρίζουν ταυτότητες χρηστών, αρχές υπηρεσιών και διαχειριζόμενες ταυτότητες.

Ιδιότητες ρυθμίσεων ελέγχου

Το αντικείμενο ρυθμίσεων ελέγχου περιλαμβάνει τις ακόλουθες ιδιότητες:

Ιδιοκτησία Τύπος Περιγραφή
auditActionsAndGroups string[] Ενέργειες και ομάδες ελέγχου που πρέπει να καταγραφούν. Προεπιλογή: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP, SUCCESSFUL_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, για να κατανοήσετε την υπάρχουσα ρύθμιση παραμέτρων.
  • Χειρισμός αστοχιών ανά βάση δεδομένων. Εάν αποτύχει μία ενημέρωση βάσης δεδομένων, συνεχίστε την επεξεργασία των υπόλοιπων βάσεων δεδομένων.
  • Δοκιμάστε ξανά τις παροδικές αποτυχίες μεμονωμένα αντί να εκτελέσετε ξανά ολόκληρο το σενάριο μαζικής ενημέρωσης.
  • Χρησιμοποιήστε μια κύρια υπηρεσία ή μια διαχειριζόμενη ταυτότητα για αυτοματοποιημένη ή προγραμματισμένη ρύθμιση παραμέτρων ελέγχου σε περιβάλλοντα παραγωγής.