Konfigurieren des sicheren Zugriffs auf KI-Dienste

Abgeschlossen

KI-fähige Datenbanklösungen machen häufig Modellendpunkte verfügbar, die Anwendungen aufrufen, um Vorhersagen, Einbettungen oder andere KI-basierte Antworten zu generieren. Die Sicherung dieser Endpunkte schützt sowohl Ihre KI-Modelle als auch die Daten, die sie verarbeiten. Verwaltete Identität bietet eine sichere, anmeldefreie Möglichkeit, Anwendungen zum Modellieren von Endpunkten zu authentifizieren.

Wenn Anwendungen Azure OpenAI, Azure Machine Learning oder andere KI-Dienste aus Ihrer Datenbankumgebung aufrufen, müssen Sie steuern, wer diese Aufrufe aufrufen und den Kommunikationskanal schützen kann. Sehen wir uns Strategien zum Sichern von Modellendpunkten in SQL Server-, Azure SQL- und SQL-Datenbanken in Microsoft Fabric an.

Grundlegendes zu Sicherheitsbedenken beim Modellendpunkt

Modellendpunkte stellen im Vergleich zu herkömmlichen Datenbankvorgängen eindeutige Sicherheitsprobleme dar. Diese Endpunkte verarbeiten häufig vertrauliche Daten, können erhebliche Kosten pro Anruf verursachen und möglicherweise geistiges Eigentum in fein abgestimmten Modellen verfügbar machen.

Was geschieht, wenn jemand unbefugten Zugriff erhält? Sie könnten Daten durch sorgfältig gestaltete Eingabeaufforderungen exfiltrieren, unerwartete Kosten durch übermäßige API-Aufrufe verursachen oder Ihr proprietäres Modellverhalten erforschen. Deshalb erfordert der Schutz dieser Endpunkte Authentifizierung, Autorisierung und Überwachung.

In Azure SQL- und SQL-Datenbanken in Microsoft Fabric können Sie externe KI-Dienste mithilfe gespeicherter Prozeduren oder Funktionen aufrufen, die HTTP-Anforderungen stellen. Diese Aufrufe müssen sich beim KI-Dienst authentifizieren, in der Regel mit API-Schlüsseln oder verwalteter Identität.

Konfigurieren der verwalteten Identität für KI-Dienste

Verwaltete Identität beseitigt die Notwendigkeit, API-Schlüssel in Ihrer Datenbank oder ihrem Anwendungscode zu speichern. Stattdessen verwaltet Azure die Identitätsanmeldeinformationen automatisch, und Sie gewähren dieser Identität Zugriff auf KI-Dienste.

Für eine Azure SQL-Datenbank, die Azure OpenAI aufrufen muss, aktivieren Sie zunächst die vom System zugewiesene verwaltete Identität:

-- The managed identity is enabled in Azure portal or via Azure CLI
-- Verify the identity exists
SELECT * FROM sys.dm_external_provider_certificate_store;

Gewähren Sie als Nächstes den verwalteten Identitätszugriff auf Azure OpenAI mithilfe der rollenbasierten Zugriffssteuerung von Azure:

# Get the managed identity principal ID from Azure SQL
$sqlIdentity = (Get-AzSqlServer -ServerName myserver -ResourceGroupName myrg).Identity.PrincipalId

# Assign Cognitive Services User role on the Azure OpenAI resource
New-AzRoleAssignment -ObjectId $sqlIdentity `
    -RoleDefinitionName "Cognitive Services User" `
    -Scope "/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.CognitiveServices/accounts/{aoai-name}"

Erstellen Sie eine datenbankbezogene Anmeldeinformation, die eine verwaltete Identität verwendet:

CREATE DATABASE SCOPED CREDENTIAL AzureOpenAICredential
WITH IDENTITY = 'Managed Identity',
SECRET = '{"resourceId": "https://cognitiveservices.azure.com/"}';

Diese Anmeldeinformationen weisen SQL an, ein Token für den Cognitive Services-Ressourcenbereich mittels der verwalteten Identität abzurufen.

Implementieren sicherer Endpunktanrufe

Lassen Sie uns nun alles zusammensetzen. Verwenden Sie den Aufruf des externen REST-Endpunkts, um KI-Dienste sicher aufzurufen. Erstellen Sie zunächst eine externe Datenquelle, die auf Ihren KI-Endpunkt verweist:

CREATE EXTERNAL DATA SOURCE AzureOpenAI
WITH (
    TYPE = REST,
    LOCATION = 'https://myopenai.openai.azure.com',
    CREDENTIAL = AzureOpenAICredential
);

Erstellen Sie dann eine gespeicherte Prozedur, die den KI-Endpunkt aufruft:

CREATE PROCEDURE dbo.GetEmbedding
    @InputText nvarchar(max),
    @Embedding nvarchar(max) OUTPUT
AS
BEGIN
    DECLARE @payload nvarchar(max) = JSON_OBJECT('input': @InputText);
    DECLARE @response nvarchar(max);
    
    EXEC sp_invoke_external_rest_endpoint
        @url = 'https://myopenai.openai.azure.com/openai/deployments/text-embedding/embeddings?api-version=2024-02-01',
        @method = 'POST',
        @payload = @payload,
        @credential = AzureOpenAICredential,
        @response = @response OUTPUT;
    
    SET @Embedding = JSON_VALUE(@response, '$.data[0].embedding');
END;

Erteilen Sie der Ausführungsberechtigung nur Benutzern, die auf KI-Funktionen zugreifen sollten:

-- Create a role for AI feature access
CREATE ROLE AIFeatureUsers;
GRANT EXECUTE ON dbo.GetEmbedding TO AIFeatureUsers;

-- Add specific users to the role
ALTER ROLE AIFeatureUsers ADD MEMBER [app-service-identity];

Von Bedeutung

Beschränken Sie, welche Datenbankbenutzer KI-Endpunkte aufrufen können. KI-Aufrufe verursachen häufig Kosten und können sensible Daten verarbeiten. Verwenden Sie rollenbasierten Zugriff, um zu steuern, welche Anwendungen und Benutzer diese Features verwenden können.

Sichere Azure Machine Learning-Endpunkte

Azure Machine Learning-Modellendpunkte folgen ähnlichen Mustern. Konfigurieren Sie den Zugriff auf verwaltete Identitäten, und erstellen Sie Anmeldeinformationen für die Authentifizierung.

So richten Sie den Zugriff auf Echtzeit-Inferenzendpunkte ein:

CREATE DATABASE SCOPED CREDENTIAL AMLCredential
WITH IDENTITY = 'Managed Identity',
SECRET = '{"resourceId": "https://ml.azure.com/"}';

CREATE EXTERNAL DATA SOURCE AMLEndpoint
WITH (
    TYPE = REST,
    LOCATION = 'https://myworkspace.region.inference.ml.azure.com',
    CREDENTIAL = AMLCredential
);

Für Batch-Ableitungsendpunkte übermitteln Sie in der Regel Daten an den Speicher und lösen eine Pipeline aus. Stellen Sie sicher, dass Sie diesen Speicherzugriff mithilfe der verwalteten Identität sichern.

Implementieren der Endpunktüberwachung

Sie können die KI-Endpunktnutzung überwachen, um Anomalien zu erkennen und die Kosten unter Kontrolle zu halten. Hier ist ein einfacher Protokollierungsansatz:

-- Create a logging table for AI calls
CREATE TABLE dbo.AIEndpointLog (
    LogID int IDENTITY PRIMARY KEY,
    CallTimestamp datetime2 DEFAULT SYSUTCDATETIME(),
    CallerPrincipal nvarchar(128) DEFAULT ORIGINAL_LOGIN(),
    EndpointName nvarchar(256),
    InputLength int,
    ResponseStatus int,
    DurationMs int
);

-- Modify procedures to log calls
CREATE PROCEDURE dbo.GetEmbeddingWithLogging
    @InputText nvarchar(max),
    @Embedding nvarchar(max) OUTPUT
AS
BEGIN
    DECLARE @StartTime datetime2 = SYSUTCDATETIME();
    DECLARE @response nvarchar(max);
    DECLARE @status int;
    
    -- Make the AI call
    EXEC sp_invoke_external_rest_endpoint
        @url = 'https://myopenai.openai.azure.com/openai/deployments/text-embedding/embeddings?api-version=2024-02-01',
        @method = 'POST',
        @payload = JSON_OBJECT('input': @InputText),
        @credential = AzureOpenAICredential,
        @response = @response OUTPUT;
    
    -- Log the call
    INSERT INTO dbo.AIEndpointLog (EndpointName, InputLength, ResponseStatus, DurationMs)
    VALUES ('text-embedding', LEN(@InputText), 200, DATEDIFF(millisecond, @StartTime, SYSUTCDATETIME()));
    
    SET @Embedding = JSON_VALUE(@response, '$.data[0].embedding');
END;

Mit dieser Protokollierung können Sie das Protokoll abfragen, um ungewöhnliche Muster zu erkennen:

-- Find users making excessive AI calls
SELECT CallerPrincipal, COUNT(*) AS CallCount, AVG(DurationMs) AS AvgDuration
FROM dbo.AIEndpointLog
WHERE CallTimestamp > DATEADD(hour, -1, SYSUTCDATETIME())
GROUP BY CallerPrincipal
HAVING COUNT(*) > 100
ORDER BY CallCount DESC;

Tipp

Richten Sie Warnungen für ungewöhnliche AI-Endpunktnutzungsmuster ein. Plötzliche Spitzen bei Aufrufen oder Anrufe aus unerwarteten Prinzipalen können auf kompromittierte Anmeldeinformationen oder Anwendungsfehler hinweisen.

Sichere KI-Features in Microsoft Fabric

SQL-Datenbanken in Microsoft Fabric verarbeiten den AI-Endpunktzugriff anders als Azure SQL. Anstelle von datenbankspezifischen Anmeldeinformationen und verwalteter Identität verwendet Fabric Arbeitsbereichsrollen und kapazitätsbasierte Zugriffssteuerung.

In Fabric sind KI-Funktionen an den Arbeitsbereich gebunden. Benutzende mit der Rolle Mitwirkender oder höheren Arbeitsbereichsrollen können KI-Features wie KI-Fähigkeiten und Copilot aufrufen. Die Zugriffssteuerung erfolgt auf Arbeitsbereichsebene und nicht über Datenbankberechtigungen.

So sichern Sie KI-Features in Fabric:

  • Weisen Sie Arbeitsbereichsrollen sorgfältig zu, da sie den KI-Zugriff steuern
  • Überwachen der Nutzung über die Kapazitätsmetriken und Aktivitätsprotokolle von Fabric
  • Verwenden Sie die Datenschutzfunktionen von Fabric, um zu steuern, auf welche Daten KI-Funktionen zugreifen können.

Ausführliche Anleitungen zum Konfigurieren von KI-Diensten in Fabric finden Sie in der Fabric AI-Dokumentation.