نقاط نهاية API آمنة للبيانات
تعرض حلول قواعد البيانات الحديثة البيانات عبر نقاط نهاية API مختلفة، مما يمكن التطبيقات من الوصول إلى المعلومات دون كتابة استعلامات SQL التقليدية. تقدم نقاط نهايات GraphQL وREST وبروتوكول السياق النموذجي (MCP) اعتبارات أمنية فريدة. تأمين هذه النقاط النهائية بشكل صحيح يحمي بياناتك مع تمكين المرونة التي تتطلبها التطبيقات الحديثة.
غالبا ما تعمل هذه النقاط النهائية كطبقة أساسية للوصول إلى البيانات لتطبيقات الويب والهواتف المحمولة. بدون ضوابط أمنية مناسبة، يمكن أن تكشف بيانات حساسة، أو تسمح بتعديلات غير مصرح بها، أو تصبح أهدافا لهجمات حجب الخدمة.
فهم أنواع نقاط النهاية ومخاطرها
توفر نقاط نهاية GraphQL قدرات استعلام مرنة، مما يسمح للعملاء بطلب البيانات التي يحتاجونها بالضبط. تخلق هذه المرونة تحديات أمنية لأن العملاء يمكنهم بناء استعلامات معقدة قد تكشف عن بيانات غير مقصودة أو تستهلك موارد زائدة.
تتبع نقاط نهاية REST نمطا أكثر تنظيما مع موارد وعمليات محددة مسبقا. يركز الأمن على المصادقة، والتفويض لنقاط نهاية محددة، والتحقق من صحة المدخلات. واجهات برمجة التطبيقات REST موجودة منذ فترة طويلة لتكون أنماط الأمان راسخة جيدا.
تمكن نقاط نهاية MCP نماذج ووكلاء الذكاء الاصطناعي من التفاعل مع قواعد البيانات، مما يوفر السياق وتنفيذ الإجراءات. تتطلب هذه النقاط النهائية اعتبارا أمنيا دقيقا لأن أنظمة الذكاء الاصطناعي قد تحاول تنفيذ عمليات لا يفعل المستخدمون البشريون، ويمكن لهجمات حقن الفورم أن تؤثر على سلوك الذكاء الاصطناعي.
نقاط نهاية GraphQL الآمنة
تدعم قاعدة بيانات Azure SQL وقواعد بيانات SQL في Microsoft Fabric GraphQL من خلال Data API Builder وواجهة برمجة تطبيقات GraphQL من Microsoft Fabric. تأمين هذه النقاط النهائية يتطلب المصادقة، والتفويض، والتحكم في الاستعلام.
إليك كيفية تكوين متطلبات المصادقة:
{
"runtime": {
"rest": { "enabled": false },
"graphql": {
"enabled": true,
"path": "/graphql",
"allow-introspection": false
}
},
"authentication": {
"provider": "AzureAD",
"jwt": {
"audience": "api://my-graphql-api",
"issuer": "https://login.microsoftonline.com/{tenant-id}/v2.0"
}
}
}
لاحظ الإعداد allow-introspection: false . قم بتعطيل التأمل الذاتي في الإنتاج لمنع المهاجمين من اكتشاف بنية المخطط الخاصة بك. تكشف استعلامات التأمل الذاتي عن جميع الأنواع والحقول والعلاقات المتاحة.
بعد ذلك، نفذ أذونات على مستوى الكيان للتحكم في الأدوار التي يمكنها الوصول إلى أي بيانات:
{
"entities": {
"Customer": {
"source": "dbo.Customers",
"permissions": [
{
"role": "authenticated",
"actions": ["read"]
},
{
"role": "admin",
"actions": ["*"]
}
]
},
"Order": {
"source": "dbo.Orders",
"permissions": [
{
"role": "authenticated",
"actions": ["read"],
"fields": {
"include": ["OrderID", "OrderDate", "Status"],
"exclude": ["InternalNotes", "CostPrice"]
}
}
]
}
}
}
انظر كيف Order يستبعد الكيان الأعمدة الحساسة مثل InternalNotes و CostPrice؟ حتى المستخدمين المصادقين لا يمكنهم الوصول إلى تلك الحقول.
نصيحة
تنفيذ حدود عمق وتعقيد الاستعلامات لمنع هجمات حجب الخدمة من خلال استعلامات متداخلة بعمق. يتضمن منشئ واجهة برمجة التطبيقات بيانات حماية مدمجة ضد تعقيد الاستعلام المفرط.
نقاط نهاية REST آمنة
نقاط النهاية REST في منشئ واجهات برمجة التطبيقات أو التطبيقات المخصصة تتطلب المصادقة وتفويض خاص بنقطة النهاية. إليك مثال:
{
"entities": {
"Product": {
"source": "dbo.Products",
"rest": {
"enabled": true,
"path": "/products"
},
"permissions": [
{
"role": "anonymous",
"actions": [
{ "action": "read", "policy": { "database": "@item.IsPublic eq true" } }
]
},
{
"role": "inventory-manager",
"actions": ["create", "read", "update"]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}
هل لاحظت سياسة قاعدة البيانات بشأن الوصول المجهول؟ يقوم بتصفية النتائج فقط للمنتجات العامة. ثم تتحكم الأدوار في الإجراءات التي يمكن لكل دور تنفيذها.
بالنسبة لنقاط نهاية REST المخصصة المبنية بإجراءات مخزنة، نفذ الأمان على مستوى قاعدة البيانات:
CREATE PROCEDURE api.GetCustomerOrders
@CustomerID int
AS
BEGIN
-- Verify the caller has access to this customer
IF NOT EXISTS (
SELECT 1 FROM dbo.CustomerAccess
WHERE CustomerID = @CustomerID
AND UserPrincipal = ORIGINAL_LOGIN()
)
BEGIN
THROW 50401, 'Unauthorized access to customer data', 1;
RETURN;
END
SELECT OrderID, OrderDate, TotalAmount
FROM dbo.Orders
WHERE CustomerID = @CustomerID;
END;
نقاط نهاية MCP الآمنة
تسمح نقاط نهاية بروتوكول السياق النموذجي (MCP) لمساعدي الذكاء الاصطناعي والوكلاء بالتفاعل مع قاعدة بياناتك. تتطلب MCP اهتماما أمنيا إضافيا لأن أنظمة الذكاء الاصطناعي قد تعالج مدخلات المستخدمين غير الموثوقة.
إليك كيفية تكوين مصادقة خوادم MCP:
{
"mcpServers": {
"sqlDatabase": {
"transport": "stdio",
"authentication": {
"type": "azure-identity",
"scope": "https://database.windows.net/.default"
},
"security": {
"allowedOperations": ["read"],
"deniedTables": ["dbo.Passwords", "dbo.APIKeys"],
"maxRowsReturned": 1000
}
}
}
}
المفتاح هو تحديد ما يمكن لنقاط نهاية MCP القيام به:
- تقييد العمليات على القراءة فقط عندما لا تكون هناك حاجة للوصول للكتابة
- رفض صراحة الوصول إلى الجداول التي تحتوي على بيانات اعتماد أو تكوين حساس
- تحديد حجم مجموعات النتائج لمنع تسرب البيانات عبر استعلامات كبيرة
- سجل جميع عمليات MCP لمراقبة الأمان
ستحتاج أيضا إلى تنفيذ دفاعات حقن الأوامر من خلال التحقق من الاستعلامات التي يولدها الذكاء الاصطناعي:
CREATE PROCEDURE mcp.ExecuteQuery
@QueryDescription nvarchar(max),
@GeneratedQuery nvarchar(max) OUTPUT
AS
BEGIN
-- Validate the generated query doesn't access restricted objects
IF @GeneratedQuery LIKE '%sys.%' OR @GeneratedQuery LIKE '%INFORMATION_SCHEMA%'
BEGIN
THROW 50403, 'Access to system objects not permitted', 1;
RETURN;
END
-- Ensure query is read-only
IF @GeneratedQuery LIKE '%INSERT%' OR @GeneratedQuery LIKE '%UPDATE%'
OR @GeneratedQuery LIKE '%DELETE%' OR @GeneratedQuery LIKE '%DROP%'
BEGIN
THROW 50403, 'Write operations not permitted', 1;
RETURN;
END
-- Execute the validated query
EXEC sp_executesql @GeneratedQuery;
END;
مهم
لا تثق أبدا في الاستعلامات التي يولدها الذكاء الاصطناعي بدون تحقق. تنفيذ قوائم السماح للجداول والعمليات المسموح بها بدلا من محاولة حجب الأنماط الخبيثة.
تنفيذ أمان الشبكة
بغض النظر عن نوع نقطة النهاية، احم طبقة الشبكة:
-- Azure SQL: Configure firewall rules
-- Deny all public access, allow only specific IPs or virtual networks
EXECUTE sp_set_firewall_rule
@name = 'AllowAppService',
@start_ip_address = '10.0.0.1',
@end_ip_address = '10.0.0.255';
استخدم نقاط نهاية Private Link أو Service للحفاظ على حركة المرور على شبكة مايكروسوفت:
- تكوين تكامل الشبكة الافتراضية لنقاط نهاية واجهة برمجة التطبيقات (API APP) لاستضافة خدمات التطبيقات
- Use Private Endpoints for Azure SQL Database
- تمكين نقاط النهاية الخاصة المدارة في Microsoft Fabric
تضيف هذه الضوابط الشبكية دفاعا عميقا، مما يضمن أنه حتى لو تم تجاوز أمان مستوى التطبيق، لا يمكن للمهاجمين الوصول إلى قاعدة بياناتك من شبكات غير مصرح بها.