البرنامج التعليمي: الاتصال بقواعد بيانات Azure من App Service دون بيانات سرية باستخدام الهوية المُدارة
مقالة
توفر App Service خدمة استضافة ويب قابلة للتطوير وذاتية التصحيح في Azure. كما توفر الهوية المدارة لتطبيقك، وهو حل تحويل المفتاح لتأمين الوصول إلى قاعدة بيانات Azure بما في ذلك:
تجعل الهويات المدارة في App Service تطبيقك أكثر أمانًا عن طريق إزالة الأسرار من تطبيقك، مثل بيانات الاعتماد في سلاسل الاتصال. يوضح لك هذا البرنامج التعليمي كيفية الاتصال بقواعد البيانات المذكورة أعلاه من App Service باستخدام الهويات المدارة.
سوف تتعلم ما يلي:
تكوين مستخدم Microsoft Entra كمسؤول لقاعدة بيانات Azure.
الاتصال بقاعدة البيانات الخاصة بك كمستخدم Microsoft Entra.
تكوين هوية مدارة معينة من قبل النظام أو معينة من قبل المستخدم لتطبيق App Service.
منح الوصول إلى قاعدة البيانات للهوية المدارة.
اتصل بقاعدة بيانات Azure من التعليمات البرمجية الخاصة بك (.NET Framework 4.8 و .NET 6 و Node.js و Python و Java) باستخدام هوية مُدارة.
اتصل بقاعدة بيانات Azure من بيئة التطوير الخاصة بك باستخدام مستخدم Microsoft Entra.
إنشاء تطبيق في App Service استناداً إلى .NET أو Node.js أو Python أو Java.
إنشاء خادم قاعدة بيانات باستخدام قاعدة بيانات Azure SQL أو قاعدة بيانات Azure لـ MySQL أو قاعدة بيانات Azure لـ PostgreSQL.
يجب أن تكون على دراية بنمط الاتصال القياسي (مع اسم المستخدم وكلمة المرور) وأن تكون قادراً على الاتصال بنجاح من تطبيق App Service إلى قاعدة البيانات التي تختارها.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
1. تثبيت ملحق Service Connector بدون كلمة مرور
تثبيت أحدث ملحق Service Connector بدون كلمة مرور ل Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade
إشعار
يرجى التحقق من أن إصدار الملحق "serviceconnector-passwordless" هو "2.0.2" أو أعلى عن طريق تشغيل az version. قد تحتاج إلى ترقية Azure CLI أولا لترقية إصدار الملحق.
2. إنشاء اتصال بدون كلمة مرور
بعد ذلك، قم بإنشاء اتصال بدون كلمة مرور باستخدام Service Connector.
تلميح
يمكن أن يساعدك مدخل Microsoft Azure في إنشاء الأوامر أدناه. في مدخل Microsoft Azure، انتقل إلى مورد Azure App Service ، وحدد Service Connector من القائمة اليسرى وحدد Create. املأ النموذج بجميع المعلمات المطلوبة. ينشئ Azure تلقائيا أمر إنشاء الاتصال، والذي يمكنك نسخه لاستخدامه في CLI أو تنفيذه في Azure Cloud Shell.
بالنسبة إلى Azure Database for MySQL - Flexible Server، يجب عليك أولا إعداد مصادقة Microsoft Entra يدويا، والتي تتطلب هوية مدارة منفصلة يعينها المستخدم وأذونات Microsoft Graph محددة. لا يمكن أتمتة هذه الخطوة.
بعد ذلك، إذا قمت بإنشاء جداول وتسلسلات في خادم PostgreSQL المرن قبل استخدام Service Connector، فستحتاج إلى الاتصال كمالك ومنح الإذن لإنشاء <aad-username> بواسطة Service Connector. يجب أن يبدو اسم المستخدم من سلسلة الاتصال أو التكوين الذي تم تعيينه بواسطة Service Connector مثل aad_<connection name>. إذا كنت تستخدم مدخل Microsoft Azure، فحدد زر التوسيع بجوار Service Type العمود والحصول على القيمة. إذا كنت تستخدم Azure CLI، فتحقق من configurations إخراج أمر CLI.
ثم قم بتنفيذ الاستعلام لمنح الإذن
az extension add --name rdbms-connect
az postgres flexible-server execute -n <postgres-name> -u <owner-username> -p "<owner-password>" -d <database-name> --querytext "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO \"<aad-username>\";GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO \"<aad username>\";"
و <owner-username><owner-password> هو مالك الجدول الموجود الذي يمكنه منح أذونات للآخرين. <aad-username> هو المستخدم الذي تم إنشاؤه بواسطة Service Connector. استبدلها بالقيمة الفعلية.
تحقق من صحة النتيجة باستخدام الأمر :
az postgres flexible-server execute -n <postgres-name> -u <owner-username> -p "<owner-password>" -d <database-name> --querytext "SELECT distinct(table_name) FROM information_schema.table_privileges WHERE grantee='<aad-username>' AND table_schema='public';" --output table
يكمل أمر Service Connector هذا المهام التالية في الخلفية:
تمكين الهوية المدارة المعينة من قبل النظام، أو تعيين هوية مستخدم للتطبيق <server-name> الذي تستضيفه Azure App Service.
تعيين مسؤول Microsoft Entra إلى المستخدم الحالي الذي قام بتسجيل الدخول.
إضافة مستخدم قاعدة بيانات للهوية المدارة المعينة من قبل النظام أو الهوية المدارة المعينة من قبل المستخدم. منح كافة امتيازات قاعدة البيانات <database-name> لهذا المستخدم. يمكن العثور على اسم المستخدم في سلسلة الاتصال في إخراج الأمر السابق.
تعيين التكوينات المسماة AZURE_MYSQL_CONNECTIONSTRINGأو AZURE_POSTGRESQL_CONNECTIONSTRINGأو AZURE_SQL_CONNECTIONSTRING إلى مورد Azure استنادا إلى نوع قاعدة البيانات.
بالنسبة ل App Service، يتم تعيين التكوينات في شفرة App Settings .
احصل على سلسلة الاتصال قاعدة بيانات Azure SQL من متغير البيئة الذي تمت إضافته بواسطة Service Connector.
using Microsoft.Data.SqlClient;
// AZURE_SQL_CONNECTIONSTRING should be one of the following:
// For system-assigned managed identity:"Server=tcp:<server-name>.database.windows.net;Database=<database-name>;Authentication=Active Directory Default;TrustServerCertificate=True"
// For user-assigned managed identity: "Server=tcp:<server-name>.database.windows.net;Database=<database-name>;Authentication=Active Directory Default;User Id=<client-id-of-user-assigned-identity>;TrustServerCertificate=True"
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
لمزيد من المعلومات، راجع استخدام مصادقة Active Directory Managed Identity.
احصل على تكوينات اتصال قاعدة بيانات Azure SQL من متغير البيئة المضافة بواسطة Service Connector. قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import os;
import pyodbc
server = os.getenv('AZURE_SQL_SERVER')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_DATABASE')
authentication = os.getenv('AZURE_SQL_AUTHENTICATION') # The value should be 'ActiveDirectoryMsi'
# Uncomment the following lines according to the authentication type.
# For system-assigned managed identity.
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server={server},{port};Database={database};Authentication={authentication};Encrypt=yes;'
# For user-assigned managed identity.
# client_id = os.getenv('AZURE_SQL_USER')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server={server},{port};Database={database};UID={client_id};Authentication={authentication};Encrypt=yes;'
conn = pyodbc.connect(connString)
احصل على تكوينات اتصال قاعدة بيانات Azure SQL من متغيرات البيئة المضافة بواسطة Service Connector. قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
يتبع الاتصال بقاعدة بيانات Azure ل MySQL في التعليمات البرمجية DefaultAzureCredential الخاصة بك النمط لكافة مكدسات اللغة. DefaultAzureCredential مرن بما يكفي للتكيف مع كل من بيئة التطوير وبيئة Azure. عند التشغيل محلياً، يمكنه استرداد مستخدم Azure الذي قام بتسجيل الدخول من البيئة التي تختارها (Visual Studio أو Visual Studio Code أو Azure CLI أو Azure PowerShell). عند التشغيل في Azure، فإنه يسترد الهوية المدارة. لذلك من الممكن أن يكون لديك اتصال بقاعدة البيانات في كل من وقت التطوير والإنتاج. النمط كما يلي:
إنشاء DefaultAzureCredential مثيل من مكتبة عميل Azure Identity. إذا كنت تستخدم هوية معينة من قبل المستخدم، فحدد معرف العميل للهوية.
احصل على رمز وصول لقاعدة بيانات Azure ل MySQL: https://ossrdbms-aad.database.windows.net/.default.
بالنسبة ل .NET، احصل على رمز وصول للهوية المدارة باستخدام مكتبة عميل مثل Azure.Identity. ثم استخدم الرمز المميز للوصول ككلمة مرور للاتصال بقاعدة البيانات. عند استخدام التعليمات البرمجية أدناه، تأكد من إلغاء التعليق على جزء مقتطف التعليمات البرمجية الذي يتوافق مع نوع المصادقة الذي تريد استخدامه.
using Azure.Core;
using Azure.Identity;
using MySqlConnector;
// Uncomment the following lines according to the authentication type.
// For system-assigned managed identity.
// var credential = new DefaultAzureCredential();
// For user-assigned managed identity.
// var credential = new DefaultAzureCredential(
// new DefaultAzureCredentialOptions
// {
// ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
// });
var tokenRequestContext = new TokenRequestContext(
new[] { "https://ossrdbms-aad.database.windows.net/.default" });
AccessToken accessToken = await credential.GetTokenAsync(tokenRequestContext);
// Open a connection to the MySQL server using the access token.
string connectionString =
$"{Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING")};Password={accessToken.Token}";
using var connection = new MySqlConnection(connectionString);
Console.WriteLine("Opening connection using access token...");
await connection.OpenAsync();
// do something
المصادقة باستخدام رمز مميز للوصول من المكتبة azure-identity . احصل على معلومات الاتصال من متغير البيئة المضافة بواسطة Service Connector. عند استخدام التعليمات البرمجية أدناه، تأكد من إلغاء التعليق على جزء مقتطف التعليمات البرمجية الذي يتوافق مع نوع المصادقة الذي تريد استخدامه.
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
import mysql.connector
import os
# Uncomment the following lines according to the authentication type.
# For system-assigned managed identity.
# cred = ManagedIdentityCredential()
# For user-assigned managed identity.
# managed_identity_client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# acquire token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
# open connect to Azure MySQL with the access token.
host = os.getenv('AZURE_MYSQL_HOST')
database = os.getenv('AZURE_MYSQL_NAME')
user = os.getenv('AZURE_MYSQL_USER')
password = accessToken.token
cnx = mysql.connector.connect(user=user,
password=password,
host=host,
database=database)
cnx.close()
احصل على رمز مميز للوصول باستخدام @azure/identity ومعلومات قاعدة بيانات Azure MySQL من متغيرات البيئة المضافة بواسطة Service Connector. عند استخدام التعليمات البرمجية أدناه، تأكد من إلغاء التعليق على جزء مقتطف التعليمات البرمجية الذي يتوافق مع نوع المصادقة الذي تريد استخدامه.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
const mysql = require('mysql2');
// Uncomment the following lines according to the authentication type.
// for system-assigned managed identity
// const credential = new DefaultAzureCredential();
// for user-assigned managed identity
// const clientId = process.env.AZURE_MYSQL_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// acquire token
var accessToken = await credential.getToken('https://ossrdbms-aad.database.windows.net/.default');
const connection = mysql.createConnection({
host: process.env.AZURE_MYSQL_HOST,
user: process.env.AZURE_MYSQL_USER,
password: accessToken.token,
database: process.env.AZURE_MYSQL_DATABASE,
port: process.env.AZURE_MYSQL_PORT,
ssl: process.env.AZURE_MYSQL_SSL
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to MySQL database: ' + err.stack);
return;
}
console.log('Connected to MySQL database');
});
يتبع الاتصال بقاعدة بيانات Azure ل PostgreSQL في التعليمات البرمجية DefaultAzureCredential نمط جميع مكدسات اللغة. DefaultAzureCredential مرن بما يكفي للتكيف مع كل من بيئة التطوير وبيئة Azure. عند التشغيل محلياً، يمكنه استرداد مستخدم Azure الذي قام بتسجيل الدخول من البيئة التي تختارها (Visual Studio أو Visual Studio Code أو Azure CLI أو Azure PowerShell). عند التشغيل في Azure، فإنه يسترد الهوية المدارة. لذلك من الممكن أن يكون لديك اتصال بقاعدة البيانات في كل من وقت التطوير والإنتاج. النمط كما يلي:
إنشاء DefaultAzureCredential مثيل من مكتبة عميل Azure Identity. إذا كنت تستخدم هوية معينة من قبل المستخدم، فحدد معرف العميل للهوية.
احصل على رمز وصول لقاعدة بيانات Azure ل PostgreSQL: https://ossrdbms-aad.database.windows.net/.default.
بالنسبة ل .NET، احصل على رمز وصول للهوية المدارة باستخدام مكتبة عميل مثل Azure.Identity. ثم استخدم الرمز المميز للوصول ككلمة مرور للاتصال بقاعدة البيانات. عند استخدام التعليمات البرمجية أدناه، تأكد من إلغاء التعليق على جزء مقتطف التعليمات البرمجية الذي يتوافق مع نوع المصادقة الذي تريد استخدامه.
using Azure.Identity;
using Azure.Core;
using Npgsql;
// Uncomment the following lines according to the authentication type.
// For system-assigned identity.
// var sqlServerTokenProvider = new DefaultAzureCredential();
// For user-assigned identity.
// var sqlServerTokenProvider = new DefaultAzureCredential(
// new DefaultAzureCredentialOptions
// {
// ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTID");
// }
// );
// Acquire the access token.
AccessToken accessToken = await sqlServerTokenProvider.GetTokenAsync(
new TokenRequestContext(scopes: new string[]
{
"https://ossrdbms-aad.database.windows.net/.default"
}));
// Combine the token with the connection string from the environment variables provided by Service Connector.
string connectionString =
$"{Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CONNECTIONSTRING")};Password={accessToken.Token}";
// Establish the connection.
using (var connection = new NpgsqlConnection(connectionString))
{
Console.WriteLine("Opening connection using access token...");
connection.Open();
}
المصادقة باستخدام رمز مميز للوصول من المكتبة azure-identity واستخدام الرمز المميز ككلمة مرور. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector. عند استخدام التعليمات البرمجية أدناه، تأكد من إلغاء التعليق على جزء مقتطف التعليمات البرمجية الذي يتوافق مع نوع المصادقة الذي تريد استخدامه.
from azure.identity import DefaultAzureCredential
import psycopg2
# Uncomment the following lines according to the authentication type.
# For system-assigned identity.
# cred = DefaultAzureCredential()
# For user-assigned identity.
# managed_identity_client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# Acquire the access token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
# Combine the token with the connection string from the environment variables added by Service Connector to establish the connection.
conn_string = os.getenv('AZURE_POSTGRESQL_CONNECTIONSTRING')
conn = psycopg2.connect(conn_string + ' password=' + accessToken.token)
في التعليمات البرمجية، احصل على الرمز المميز للوصول عبر @azure/identity معلومات اتصال PostgreSQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. قم بدمجها لتأسيس الاتصال. عند استخدام التعليمات البرمجية أدناه، تأكد من إلغاء التعليق على جزء مقتطف التعليمات البرمجية الذي يتوافق مع نوع المصادقة الذي تريد استخدامه.
import { DefaultAzureCredential, ClientSecretCredential } from "@azure/identity";
const { Client } = require('pg');
// Uncomment the following lines according to the authentication type.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_POSTGRESQL_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// Acquire the access token.
var accessToken = await credential.getToken('https://ossrdbms-aad.database.windows.net/.default');
// Use the token and the connection information from the environment variables added by Service Connector to establish the connection.
(async () => {
const client = new Client({
host: process.env.AZURE_POSTGRESQL_HOST,
user: process.env.AZURE_POSTGRESQL_USER,
password: accesstoken.token,
database: process.env.AZURE_POSTGRESQL_DATABASE,
port: Number(process.env.AZURE_POSTGRESQL_PORT) ,
ssl: process.env.AZURE_POSTGRESQL_SSL
});
await client.connect();
await client.end();
})();
يستخدم DefaultAzureCredential نموذج التعليمات البرمجية هذا للحصول على رمز مميز قابل للاستخدام لقاعدة بيانات Azure من معرف Microsoft Entra ثم إضافته إلى اتصال قاعدة البيانات. بينما يمكنك تخصيص DefaultAzureCredential، فإنه بالفعل متعدد الاستخدامات بشكل افتراضي. يحصل على رمز مميز من مستخدم Microsoft Entra الذي سجل الدخول أو من هوية مدارة، اعتمادا على ما إذا كنت تقوم بتشغيله محليا في بيئة التطوير الخاصة بك أو في App Service.
بدون أي تغييرات أخرى، تكون التعليمات البرمجية الخاصة بك جاهزة للتشغيل في Azure. لتصحيح التعليمات البرمجية محليا، ومع ذلك، تحتاج بيئة التطوير الخاصة بك إلى مستخدم Microsoft Entra مسجل الدخول. في هذه الخطوة، يمكنك تكوين البيئة التي تختارها عن طريق تسجيل الدخول باستخدام مستخدم Microsoft Entra.
تم دمج Visual Studio لنظام التشغيل Windows مع مصادقة Microsoft Entra. لتمكين التطوير وتصحيح الأخطاء في Visual Studio، أضف مستخدم Microsoft Entra في Visual Studio عن طريق تحديد File>Account Settings من القائمة، وحدد Sign in أو Add.
لتعيين مستخدم Microsoft Entra لمصادقة خدمة Azure، حدد خيارات الأدوات>من القائمة، ثم حدد تحديد حساب مصادقة>خدمة Azure. حدد مستخدم Microsoft Entra الذي أضفته وحدد موافق.
Visual Studio for Mac غير متكامل مع مصادقة Microsoft Entra. ومع ذلك، يمكن لمكتبة عميل Azure Identity التي ستستخدمها لاحقاً أيضاً استرداد الرموز المميزة من Azure CLI. لتمكين التطوير وتصحيح الأخطاء في Visual Studio، قم بتثبيت Azure CLI على الجهاز المحلي.
سجل الدخول إلى Azure CLI باستخدام الأمر التالي باستخدام مستخدم Microsoft Entra:
az login --allow-no-subscriptions
تم دمج Visual Studio Code مع مصادقة Microsoft Entra من خلال ملحق Azure. قم بتثبيت ملحق Azure Tools في Visual Studio Code.
في تعليمة برمجية Visual Studio، في شريط النشاط، حدد شعار Azure.
في مستكشف خدمة التطبيقات، حدد تسجيل الدخول إلى Azure... واتبع الإرشادات.
يمكن لمكتبة عميل Azure Identity التي ستستخدمها لاحقاً استخدام الرموز المميزة من Azure CLI. لتمكين التطوير المستند إلى سطر الأوامر، ثبّت Azure CLI على جهازك المحلي.
سجل الدخول إلى Azure باستخدام الأمر التالي باستخدام مستخدم Microsoft Entra:
az login --allow-no-subscriptions
يمكن لمكتبة عميل Azure Identity التي ستستخدمها لاحقاً استخدام الرموز المميزة من Azure PowerShell. لتمكين التطوير المستند إلى سطر الأوامر، ثبّت Azure PowerShell على جهازك المحلي.
سجل الدخول إلى Azure CLI باستخدام cmdlet التالي باستخدام مستخدم Microsoft Entra:
أنت الآن جاهز لتطوير تطبيقك وتصحيحه باستخدام قاعدة بيانات SQL كواجهة خلفية، باستخدام مصادقة Microsoft Entra.
5. اختبار ونشر
قم بتشغيل التعليمات البرمجية الخاصة بك في بيئة التطوير الخاصة بك. تستخدم التعليمات البرمجية مستخدم Microsoft Entra الذي سجل الدخول في بيئتك للاتصال بقاعدة البيانات الخلفية. يمكن للمستخدم الوصول إلى قاعدة البيانات لأنه تم تكوينها كمسؤول Microsoft Entra لقاعدة البيانات.
نشر التعليمات البرمجية الخاصة بك إلى Azure باستخدام أسلوب النشر المفضل. في App Service، تستخدم التعليمات البرمجية الخاصة بك الهوية المدارة للتطبيق للاتصال بقاعدة البيانات الخلفية.
أتلقى الخطأ Login failed for user '<token-identified principal>'.
الهوية المدارة التي تحاول طلب رمز مميز لها غير مصرح لها بالوصول إلى قاعدة بيانات Azure.
أجريت تغييرات على مصادقة App Service أو تسجيل التطبيق المقترن. لماذا ما زلت أحصل على الرمز المميز القديم؟
الخدمات الخلفية للهويات المُدارة أيضاً تحتفظ بذاكرة تخزين للرمز المميز الذي يحدث الرمز المميز للمورد الهدف فقط عند انتهاء صلاحيته. إذا قمت بتعديل التكوين بعد محاولة الحصول على رمز مميز مع تطبيقك، فلن تحصل فعلياً على رمز مميز جديد بالأذونات المحدثة حتى تنتهي صلاحية الرمز المميز المخزن مؤقتاً. أفضل طريقة للتغلب على ذلك هي اختبار التغييرات باستخدام نافذة InPrivate (Edge) / خاصة (Safari) / التصفح المتخفي (Chrome). بهذه الطريقة، أنت متأكد من البدء من جلسة عمل جديدة تمت مصادقتها.
كيف أعمل إضافة الهوية المدارة إلى مجموعة Microsoft Entra؟
إذا أردت، يمكنك إضافة الهوية إلى مجموعة Microsoft Entra، ثم منح حق الوصول إلى مجموعة Microsoft Entra بدلا من الهوية. على سبيل المثال، تضيف الأوامر التالية الهوية المُدارة من الخطوة السابقة إلى مجموعة جديدة تُسمى myAzureSQLDBAccessGroup:
groupid=$(az ad group create --display-name myAzureSQLDBAccessGroup --mail-nickname myAzureSQLDBAccessGroup --query objectId --output tsv)
msiobjectid=$(az webapp identity show --resource-group <group-name> --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid
لمنح أذونات قاعدة البيانات لمجموعة Microsoft Entra، راجع الوثائق الخاصة بنوع قاعدة البيانات المعنية.
أتلقى الخطأ SSL connection is required. Please specify SSL options and retry.
يتطلب الاتصال بقاعدة بيانات Azure إعدادات إضافية ويتجاوز نطاق هذا البرنامج التعليمي. لمزيد من المعلومات، يرجى مراجعة أحد المقالات التالية:
لقد أنشأت تطبيقي باستخدام قالب Web App + Database، والآن لا يمكنني تكوين اتصال هوية مدار باستخدام أوامر Service Connector.
يحتاج Service Connector إلى الوصول إلى الشبكة إلى قاعدة البيانات من أجل منح حق الوصول إلى هوية التطبيق. عند إنشاء تطبيق آمن افتراضيا وبنية قاعدة بيانات في مدخل Microsoft Azure باستخدام قالب Web App + Database، تقوم البنية بتأمين وصول الشبكة إلى قاعدة البيانات وتسمح فقط بالاتصالات من داخل الشبكة الظاهرية. ينطبق ذلك أيضا على Azure Cloud Shell. ومع ذلك، يمكنك نشر Cloud Shell في الشبكة الظاهرية، ثم تشغيل الأمر Service Connector في Cloud Shell.
الخطوات التالية
ما تعلمته:
تكوين مستخدم Microsoft Entra كمسؤول لقاعدة بيانات Azure.
الاتصال بقاعدة البيانات الخاصة بك كمستخدم Microsoft Entra.
تكوين هوية مدارة معينة من قبل النظام أو معينة من قبل المستخدم لتطبيق App Service.
منح الوصول إلى قاعدة البيانات للهوية المدارة.
اتصل بقاعدة بيانات Azure من التعليمات البرمجية الخاصة بك (.NET Framework 4.8 و .NET 6 و Node.js و Python و Java) باستخدام هوية مُدارة.
اتصل بقاعدة بيانات Azure من بيئة التطوير الخاصة بك باستخدام مستخدم Microsoft Entra.