הגדרת גישה מאובטחת לשירותי בינה מלאכותית
פתרונות מסדי נתונים מבוססי בינה מלאכותית חושפים לעיתים קרובות נקודות קצה של מודל שהיישומים קוראים להן ליצירת תחזיות, הטמעות או תגובות אחרות המונעות על ידי בינה מלאכותית. אבטחת נקודות קצה אלו מגנה הן על מודלי הבינה המלאכותית שלך והן על הנתונים שהם מעבדים. Managed Identity מספקת דרך מאובטחת וללא אישורים לאמת יישומים למודלים של נקודות קצה.
כאשר יישומים קוראים ל-Azure OpenAI, למידת מכונה של Azure או שירותי בינה מלאכותית אחרים מתוך סביבת מסד הנתונים שלך, עליך לשלוט מי יכול להפעיל את השיחות הללו ולהגן על ערוץ התקשורת. בואו נבחן אסטרטגיות לאבטחת נקודות קצה של מודלים ב-SQL Server, Azure SQL ובסיסי נתונים SQL ב-Microsoft Fabric.
הבנת חששות אבטחת נקודות קצה של מודל
נקודות קצה של מודל מציגות אתגרי אבטחה ייחודיים בהשוואה לתפעול מסדי נתונים מסורתיים. נקודות קצה אלו לעיתים קרובות מעבדות נתונים רגישים, עלולות לשאת בעלויות משמעותיות לכל שיחה, ועלולות לחשוף קניין רוחני המוטמע במודלים מותאמים.
מה קורה אם מישהו מקבל גישה לא מורשית? הם יכלו להוציא נתונים דרך הנחיות מתוכננות בקפידה, להעלות עלויות בלתי צפויות עם קריאות API מופרזות, או לבדוק את התנהגויות המודל הקנייניות שלך. לכן הגנה על נקודות קצה אלו דורשת אימות, הרשאה ומעקב.
ב-Azure SQL ומסדי נתונים SQL ב-Microsoft Fabric, ניתן לקרוא לשירותי AI חיצוניים באמצעות פרוצדורות או פונקציות מאוחסנות שמבצעות בקשות HTTP. שיחות אלו חייבות לאמת לשירות הבינה המלאכותית, בדרך כלל באמצעות מפתחות API או זהות מנוהלת.
הגדרת זהות מנוהלת לשירותי בינה מלאכותית
Managed Identity מבטל את הצורך לאחסן מפתחות API במסד הנתונים או בקוד האפליקציה שלך. במקום זאת, Azure מנהלת את פרטי הזהות אוטומטית, ואתה מעניק לאותה זהות גישה לשירותי בינה מלאכותית.
עבור מסד נתונים Azure SQL שצריך לקרוא ל-Azure OpenAI, התחילו בהפעלת זהות מנוהלת שהוקצתה על ידי המערכת:
-- The managed identity is enabled in Azure portal or via Azure CLI
-- Verify the identity exists
SELECT * FROM sys.dm_external_provider_certificate_store;
לאחר מכן, הענק לזהות המנוהלת גישה ל-Azure OpenAI באמצעות בקרת גישה מבוססת תפקידים של 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}"
צור אישור עם היקף מסד נתונים המשתמש ב-Managed Identity:
CREATE DATABASE SCOPED CREDENTIAL AzureOpenAICredential
WITH IDENTITY = 'Managed Identity',
SECRET = '{"resourceId": "https://cognitiveservices.azure.com/"}';
אישור זה מורה ל-SQL לקבל טוקן עבור תחום המשאבים של Cognitive Services באמצעות הזהות המנוהלת שלו.
מימוש קריאות קצה מאובטחות
עכשיו בואו נחבר את הכל יחד. השתמש בקריאה חיצונית לנקודת קצה REST כדי לקרוא לשירותי AI בצורה מאובטחת. ראשית, צור מקור נתונים חיצוני שמתייחס לנקודת הקצה של הבינה המלאכותית שלך:
CREATE EXTERNAL DATA SOURCE AzureOpenAI
WITH (
TYPE = REST,
LOCATION = 'https://myopenai.openai.azure.com',
CREDENTIAL = AzureOpenAICredential
);
לאחר מכן צור פרוצדורה מאוחסנת שקוראת לנקודת הקצה של הבינה המלאכותית:
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;
הענק הרשאת הרצה רק למשתמשים שצריכים לגשת ליכולות AI:
-- 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];
חשוב
הגבל אילו משתמשי מסד נתונים יכולים להפעיל נקודות קצה של בינה מלאכותית. שיחות בינה מלאכותית נושאות לעיתים קרובות בעלויות ויכולות לעבד נתונים רגישים. השתמש בגישה מבוססת תפקידים כדי לשלוט באילו יישומים ומשתמשים יכולים להשתמש בתכונות אלו.
Secure Azure Machine Learning endpoints
נקודות קצה מודל Azure Machine Learning פועלות לפי דפוסים דומים. הגדר גישה לזהות מנוהלת וצור אישורים לאימות.
הנה איך להגדיר גישה לנקודות קצה של הסקה בזמן אמת:
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
);
בנקודות קצה של הסקת באצווה, בדרך כלל מגישים נתונים לאחסון ומפעילים צינור. ודא שאתה מאובטח את הגישה לאחסון באמצעות Managed Identity.
יישום ניטור נקודות קצה
ניתן לעקוב אחרי השימוש בנקודות קצה של בינה מלאכותית כדי לזהות אנומליות ולשמור עלויות תחת שליטה. הנה שיטת רישום פשוטה:
-- 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;
עם רישום זה, תוכל לשאול את היומן כדי לאתר דפוסים לא שגרתיים:
-- 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;
עצה
הגדר התראות לדפוסי שימוש לא שגרתיים בנקודות קצה של בינה מלאכותית. קפיצות פתאומיות בשיחות או בשיחות ממנהלים בלתי צפויים עלולות להעיד על פריצה בפרטי האשראי או באגים ביישום.
תכונות בינה מלאכותית מאובטחת ב-Microsoft Fabric
מסדי SQL ב-Microsoft Fabric מטפלים בגישה לנקודת קצה של AI בצורה שונה מ-Azure SQL. במקום אישורים בהיקף מסד נתונים וזהות מנוהלת, Fabric משתמש בתפקידי workspace ובבקרת גישה מבוססת קיבולת.
ב-Fabric, יכולות הבינה המלאכותית קשורות לסביבת העבודה. משתמשים עם תפקידים ב-Contributor או מרחב עבודה גבוה יותר יכולים להפעיל תכונות AI כמו מיומנויות AI ו-Copilot. בקרת הגישה מתבצעת ברמת מרחב העבודה ולא דרך הרשאות מסד נתונים.
כדי לאבטח תכונות בינה מלאכותית ב-Fabric:
- הקצה בקפידה תפקידי מרחב עבודה, כי הם שולטים בגישה לבינה מלאכותית
- מעקב אחרי השימוש באמצעות מדדי הקיבולת ויומני הפעילות של Fabric
- השתמש בתכונות הגנת הנתונים של Fabric כדי לשלוט באילו נתונים תכונות AI יכולות לגשת
להכוונה מפורטת על הגדרת שירותי AI ב-Fabric, ראו את תיעוד Fabric AI.