توضح الخطوات التالية عملية إنشاء خادم منطقي جديد لـ Azure SQL Database وقاعدة بيانات جديدة باستخدام هوية مُدارة يعينها المستخدم.
استعرض للوصول إلى صفحة تحديد خيار نشر SQL في مدخل Microsoft Azure.
إذا لم تكن قد سجلت الدخول إلى مدخل Microsoft Azure، فسجل الدخول عند مطالبتك بذلك.
أسفل SQL databases، قم بتعيين "Resource type" إلى "Single database" ، ثم حدد "Create" .
في علامة التبويب Basics في نموذج Create SQL Database ضمن Project details، حدد اشتراكAzure المطلوب .
لمجموعة الموارد حددCreate new، واكتب اسمًا لمجموعة الموارد، ثم حدّد OK.
بالنسبة إلى اسم قاعدة البيانات، أدخل اسم قاعدة البيانات الذي تريده.
بالنسبة إلى Server، حدد "Create new" ، ثم قم بتعبئة نموذج الخادم الجديد بالقيم التالية:
-
اسم الخادم: أدخل اسم خادم فريداً. يجب أن تكون أسماء الخادمات فريدة من نوعها عالمياً لكل الخوادم في Azure، وليس فقط فريدة ضمن اشتراك.
-
تسجيل دخول مسؤول الخادم: أدخل اسم تسجيل دخول المسؤول، على سبيل المثال:
azureuser.
-
كلمة المرور: أدخل كلمة مرور تفي بالمتطلبات، وأدخلها مرة أخرى في الحقل تأكيد كلمة المرور.
-
Location: حدد موقعاً من القائمة المنسدلة.
حدد "Next: Networking" في أسفل الصفحة.
في علامة التبويب "Networking" ، بالنسبة إلى طريقة الاتصال، حدد "Public endpoint" .
بالنسبة إلى Firewall rules، قم بتعيين إضافة عنوان IP الحالي للعميل إلى "Yes" . اترك Allow Azure services and resources to access this server معينًا إلى "No" .
حدد Next: Security في أسفل الصفحة.
في علامة تبويب الأمان، ضمن الهوية (معاينة)، حدد Configure Identities.
في الجزء "Identity (preview)"، ضمن "User assigned managed identity"، حدد "Add". حدد الاشتراك المطلوب ثم ضمن "User assigned managed identities" حدد الهوية المُدارة التي تم تعيينها للمستخدم المطلوب من الاشتراك المحدد. ثم حدد الزر "Select".
ضمن الهوية الأساسية، حدد نفس الهوية المُدارة المعينة من قِبل المستخدم المحددة في الخطوة السابقة.
ملاحظة
إذا كانت الهوية المُدارة المعينة من قِبل النظام هي الهوية الأساسية، يجب أن يكون حقل "Primary identity" فارغاً.
تحديد Apply.
حدد Review + create أسفل الصفحة
من خلال صفحة "Review + create" ، حدد "Create" .
يتم استخدام الأمر CLI Azure az sql server create لتوفير خادم منطقي جديد. سيقوم الأمر أدناه بتوفير خادم جديد باستخدام هوية مُدارة يعيّنها المستخدم. كما سيمكّن المثال مصادقة Microsoft Azure AD فقط، وتعيين مسؤول Microsoft Azure AD للخادم.
سيتم إنشاء خادم مسؤول SQL تلقائياً وسيتم تعيين كلمة المرور إلى كلمة مرور عشوائية. بما أن اتصال المصادقة SQL معطل مع إنشاء الخادم هذا، فلن يتم استخدام تسجيل دخول مسؤول SQL.
سيكون مسؤول Microsoft Azure Active Directory على الخادم هو الحساب الذي قمت بتعيينه لـ <AzureADAccount>، ويمكن استخدامه لإدارة الخادم.
استبدال القيم التالية في المثال:
-
<subscriptionId>: يمكن العثور على معرف الاشتراك الخاص بك في مدخل Microsoft Azure
-
<ResourceGroupName>: اسم مجموعة الموارد لخادمك المنطقي:
-
<managedIdentity>: الهوية المُدارة المعينة من قِبل المستخدم. يمكن أيضاً استخدامها كهوية أساسية.
-
<primaryIdentity>: الهوية الأساسية التي تريد استخدامها كهوية الخادم
-
<AzureADAccount>: يمكن أن يكون مستخدم أو مجموعة Microsoft Azure Active Directory. على سبيل المثال، DummyLogin
-
<AzureADAccountSID>: معرف كائن Microsoft Azure Active Directory للمستخدم:
-
<ServerName>: استخدام اسم خادم منطقي فريد
-
<Location>: موقع الخادم، مثل westus، أو centralus
az sql server create --assign-identity --identity-type UserAssigned --user-assigned-identity-id /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity> --primary-user-assigned-identity-id /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<primaryIdentity> --enable-ad-only-auth --external-admin-principal-type User --external-admin-name <AzureADAccount> --external-admin-sid <AzureADAccountSID> -g <ResourceGroupName> -n <ServerName> -l <Location>
لمزيد من المعلومات حول هذه الأوامر، يمكنك الاطلاع على إنشاء خادم az sql.
ملاحظة
يوفر المثال أعلاه خادماً بهوية مُدارة يعينها المستخدم فقط. يمكنك تعيين --identity-type ليكون UserAssigned,SystemAssigned إذا أردت إنشاء كلا النوعين من الهويات المُدارة باستخدام الخادم.
للتحقق من حالة الخادم بعد الإنشاء، راجع الأمر التالي:
az sql server show --name <ServerName> --resource-group <ResourceGroupName> --expand-ad-admin
يتم استخدام أمر PowerShell New-AzSqlServer لتوفير خادم Azure SQL منطقي جديد. سيقوم الأمر أدناه بتوفير خادم جديد باستخدام هوية مُدارة يعيّنها المستخدم. كما سيمكّن المثال مصادقة Microsoft Azure AD فقط، وتعيين مسؤول Microsoft Azure AD للخادم.
سيتم إنشاء خادم مسؤول SQL تلقائياً وسيتم تعيين كلمة المرور إلى كلمة مرور عشوائية. بما أن اتصال المصادقة SQL معطل مع إنشاء الخادم هذا، فلن يتم استخدام تسجيل دخول مسؤول SQL.
سيكون مسؤول Microsoft Azure Active Directory على الخادم هو الحساب الذي قمت بتعيينه لـ <AzureADAccount>، ويمكن استخدامه لإدارة الخادم.
استبدال القيم التالية في المثال:
-
<ResourceGroupName>: اسم مجموعة الموارد لخادمك المنطقي:
-
<Location>: موقع الخادم، مثل West US، أو Central US
-
<ServerName>: استخدام اسم خادم منطقي فريد
-
<subscriptionId>: يمكن العثور على معرف الاشتراك الخاص بك في مدخل Microsoft Azure
-
<managedIdentity>: الهوية المُدارة المعينة من قِبل المستخدم. يمكن أيضاً استخدامها كهوية أساسية
-
<primaryIdentity>: الهوية الأساسية التي تريد استخدامها كهوية الخادم
-
<AzureADAccount>: يمكن أن يكون مستخدم أو مجموعة Microsoft Azure Active Directory. على سبيل المثال، DummyLogin
New-AzSqlServer -ResourceGroupName "<ResourceGroupName>" -Location "<Location>" -ServerName "<ServerName>" -ServerVersion "12.0" -AssignIdentity -IdentityType "UserAssigned" -UserAssignedIdentityId "/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>" -PrimaryUserAssignedIdentityId "/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<primaryIdentity>" -ExternalAdminName "<AzureADAccount>" -EnableActiveDirectoryOnlyAuthentication
لمزيد من المعلومات، راجع الأمر Set-AzSqlServer.
ملاحظة
يوفر المثال أعلاه خادماً بهوية مُدارة يعينها المستخدم فقط. يمكنك تعيين -IdentityType ليكون "UserAssigned,SystemAssigned" إذا أردت إنشاء كلا النوعين من الهويات المُدارة باستخدام الخادم.
للتحقق من حالة الخادم بعد الإنشاء، راجع الأمر التالي:
Get-AzSqlServer -ResourceGroupName "<ResourceGroupName>" -ServerName "<ServerName>" -ExpandActiveDirectoryAdministrator
يمكن استخدام واجهة برمجة تطبيقات REST الخوادم - الإنشاء أو التحديث لإنشاء خادم منطقي بهوية مُدارة يعينها المستخدم.
سيقوم البرنامج النصي أدناه بتوفير خادم منطقي وتعيين مسؤول Microsoft Azure Active Directory كـ <AzureADAccount>، وتمكين مصادقة Microsoft Azure Active Directory فقط. سيتم إنشاء خادم مسؤول SQL تسجيل الدخول تلقائياً وسيتم تعيين كلمة المرور إلى كلمة مرور عشوائية. نظرا لأن اتصال المصادقة SQL معطل مع هذا التوفير، فلن يتم استخدام تسجيل دخول مسؤول SQL.
يمكن استخدام مسؤول Microsoft Azure Active Directory <AzureADAccount> لإدارة الخادم عند اكتمال التوفير.
استبدال القيم التالية في المثال:
-
<tenantId>: يمكن الوصول إليه من خلال الانتقال إلى Azure portal، والذهاب إلى مورد Microsoft Azure Active Directory. في جزء Overview، يوجد Tenant ID الخاص بك.
-
<subscriptionId>: يمكن العثور على معرف الاشتراك الخاص بك في مدخل Microsoft Azure
-
<ServerName>: استخدام اسم خادم منطقي فريد
-
<ResourceGroupName>: اسم مجموعة الموارد لخادمك المنطقي:
-
<AzureADAccount>: يمكن أن يكون مستخدم أو مجموعة Microsoft Azure Active Directory. على سبيل المثال، DummyLogin
-
<Location>: موقع الخادم، مثل westus2، أو centralus
-
<objectId>: يمكن الوصول إليه من خلال الانتقال إلى Azure portal، والذهاب إلى مورد Microsoft Azure Active Directory. في جزء المستخدم، ابحث عن مستخدم Microsoft Azure Active Directory وابحث عن معرف الكائن الخاص به
-
<managedIdentity>: الهوية المُدارة المعينة من قِبل المستخدم. يمكن أيضاً استخدامها كهوية أساسية
-
<primaryIdentity>: الهوية الأساسية التي تريد استخدامها كهوية الخادم
Import-Module Azure
Import-Module MSAL.PS
$tenantId = '<tenantId>'
$clientId = '1950a258-227b-4e31-a9cf-717495945fc2' # Static Microsoft client ID used for getting a token
$subscriptionId = '<subscriptionId>'
$uri = "urn:ietf:wg:oauth:2.0:oob"
$authUrl = "https://login.windows.net/$tenantId"
$serverName = "<ServerName>"
$resourceGroupName = "<ResourceGroupName>"
Login-AzAccount -tenantId $tenantId
# login as a user with SQL Server Contributor role or higher
# Get a token
$result = Get-MsalToken -RedirectUri $uri -ClientId $clientId -TenantId $tenantId -Scopes "https://management.core.windows.net/.default"
#Authetication header
$authHeader = @{
'Content-Type'='application\json; '
'Authorization'=$result.CreateAuthorizationHeader()
}
# Enable Azure AD-only auth and sets a user-managed identity as the server identity
# No server admin is specified, and only Azure AD admin and Azure AD-only authentication is set to true
# Server admin (login and password) is generated by the system
# The sid is the Azure AD Object ID for the user
# Replace all values in a <>
$body = '{
"location": "<Location>",
"identity": {"type" : "UserAssigned", "UserAssignedIdentities" : {"/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>" : {}}},
"properties": { "PrimaryUserAssignedIdentityId":"/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<primaryIdentity>","administrators":{ "login":"<AzureADAccount>", "sid":"<objectId>", "tenantId":"<tenantId>", "principalType":"User", "azureADOnlyAuthentication":true }
}
}'
# Provision the server
Invoke-RestMethod -Uri https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Sql/servers/$serverName/?api-version=2020-11-01-preview -Method PUT -Headers $authHeader -Body $body -ContentType "application/json"
ملاحظة
يوفر المثال أعلاه خادماً بهوية مُدارة يعينها المستخدم فقط. يمكنك تعيين "type" ليكون "UserAssigned,SystemAssigned" إذا أردت إنشاء كلا النوعين من الهويات المُدارة باستخدام الخادم.
للتحقق من حالة الخادم، يمكنك استخدام البرنامج النصي التالي:
$uri = 'https://management.azure.com/subscriptions/'+$subscriptionId+'/resourceGroups/'+$resourceGroupName+'/providers/Microsoft.Sql/servers/'+$serverName+'?api-version=2020-11-01-preview&$expand=administrators/activedirectory'
$responce=Invoke-WebRequest -Uri $uri -Method PUT -Headers $authHeader -Body $body -ContentType "application/json"
$responce.statuscode
$responce.content
إليك مثال على قالب ARM الذي ينشئ خادماً منطقياً لـ Azure SQL بهوية مُدارة يعينها المستخدم. يضيف القالب أيضاً تعيين مسؤول Microsoft Azure AD للملقم ويمكّن مصادقة Microsoft Azure AD فقط، ولكن يمكن إزالة هذا من مثال القالب.
لمزيدٍ من المعلومات وقوالب ARM، راجع قوالب Azure Resource Manager لـ Azure SQL Database & SQL Managed Instance.
استخدم النشر المخصص في مدخل Microsoft Azure، وبناء قالبك في المحرر. بعد ذلك، احفظ التكوين بمجرد لصق في المثال.
للحصول على معرّف مورد الهوية المُدارة التي يعينها المستخدم، ابحث عن "Managed Identities" في مدخل Microsoft Azure. ابحث عن هويتك المُدارة، ثم انتقل إلى خصائص. سيبدو مثال على معرّف مورد الهوية المُدارة التي يعينها المستخدم مثل /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"server": {
"type": "string",
"defaultValue": "[uniqueString('sql', resourceGroup().id)]",
"metadata": {
"description": "The name of the logical server."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"aad_admin_name": {
"type": "String",
"metadata": {
"description": "The name of the Azure AD admin for the SQL server."
}
},
"aad_admin_objectid": {
"type": "String",
"metadata": {
"description": "The Object ID of the Azure AD admin."
}
},
"aad_admin_tenantid": {
"type": "String",
"defaultValue": "[subscription().tenantId]",
"metadata": {
"description": "The Tenant ID of the Azure Active Directory"
}
},
"aad_admin_type": {
"defaultValue": "User",
"allowedValues": [
"User",
"Group",
"Application"
],
"type": "String"
},
"aad_only_auth": {
"defaultValue": true,
"type": "Bool"
},
"user_identity_resource_id": {
"defaultValue": "",
"type": "String",
"metadata": {
"description": "The Resource ID of the user-assigned managed identity, in the form of /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>."
}
},
"AdminLogin": {
"minLength": 1,
"type": "String"
},
"AdminLoginPassword": {
"type": "SecureString"
}
},
"resources": [
{
"type": "Microsoft.Sql/servers",
"apiVersion": "2020-11-01-preview",
"name": "[parameters('server')]",
"location": "[parameters('location')]",
"identity": {
"type": "UserAssigned",
"UserAssignedIdentities": {
"[parameters('user_identity_resource_id')]": {}
}
},
"properties": {
"administratorLogin": "[parameters('AdminLogin')]",
"administratorLoginPassword": "[parameters('AdminLoginPassword')]",
"PrimaryUserAssignedIdentityId": "[parameters('user_identity_resource_id')]",
"administrators": {
"login": "[parameters('aad_admin_name')]",
"sid": "[parameters('aad_admin_objectid')]",
"tenantId": "[parameters('aad_admin_tenantid')]",
"principalType": "[parameters('aad_admin_type')]",
"azureADOnlyAuthentication": "[parameters('aad_only_auth')]"
}
}
}
]
}