الجزء الأول: تمكين مصادقة AD DS لمشاركات Azure Files
قبل تمكين مصادقة Active Directory Domain Services (AD DS)، تأكد من قراءة مقالة النظرة العامة لفهم السيناريوهات والمتطلبات المدعومة.
توضح هذه المقالة العملية المطلوبة لتمكين مصادقة خدمات مجال Active Directory (AD DS) على حساب التخزين الخاص بك. بعد تمكين الميزة، يجب عليك تكوين حساب التخزين الخاص بك وAD DS، لاستخدام بيانات اعتماد AD DS للمصادقة على مشاركة ملف Azure. لتمكين مصادقة AD DS عبر SMB لمشاركات Azure Files، تحتاج إلى تسجيل حساب التخزين الخاص بك مع AD DS ثم تعيين خصائص المجال المطلوبة على حساب التخزين.
لتسجيل حساب التخزين الخاص بك مع AD DS، قم بإنشاء حساب يمثله في AD DS. يمكنك التفكير في هذه العملية كما لو كانت مثل إنشاء حساب يمثل خادم ملفات Windows محلياً في AD DS. عندما يتم تمكين الميزة في حساب التخزين، فإنها تنطبق على جميع مشاركات الملفات الجديدة والحالية في الحساب.
ينطبق على
| نوع مشاركة الملف | SMB | NFS |
|---|---|---|
| مشاركات الملفات القياسية (GPv2)، LRS/ZRS | ||
| مشاركات الملفات القياسية (GPv2)، GRS/GZRS | ||
| مشاركات الملفات المتميزة (FileStorage)، LRS/ZRS |
الخيار الأول (موصى به): استخدم وحدة نمطية AzFilesHybrid PowerShell
تقوم أوامر cmdlets في وحدة AzFilesHybrid PowerShell بإجراء التعديلات اللازمة وتمكين الميزة لك. نظراً لأن بعض أجزاء أوامر cmdlets تتفاعل مع AD DS الداخلي الخاص بك، فإننا نشرح ما تفعله أوامر cmdlets، حتى تتمكن من تحديد ما إذا كانت التغييرات تتوافق مع نُهج الامتثال والأمان الخاصة بك، والتأكد من أن لديك الأذونات المناسبة لتنفيذ أوامر cmdlets. على الرغم من أننا نوصي باستخدام الوحدة النمطية AzFilesHybrid، إذا لم تتمكن من القيام بذلك، فنحن نقدم الخطوات حتى تتمكن من تنفيذها يدوياً.
تنزيل الوحدة النمطية AzFilesHybrid
- إذا لم يكن لديك .NET Framework 4.7.2 مثبتاً، فثبته الآن. مطلوب من الوحدة النمطية للاستيراد بنجاح.
- قم بتنزيل وفك ضغط الوحدة النمطية AzFilesHybrid (GA module: v0.2.0 +) لاحظ أن تشفير AES 256 kerberos مدعوم في الإصدار 0.2.2 أو أعلى. إذا قمت بتمكين الميزة بإصدار AzFilesHybrid أدناه v0.2.2 وترغب في التحديث لدعم تشفير AES 256 Kerberos، فيرجى الرجوع إلى هذه المقالة.
- قم بتثبيت الوحدة النمطية وتنفيذها في جهاز مرتبط بمجال منضم إلى AD DS المحلي باستخدام بيانات اعتماد AD DS التي لديها أذونات لإنشاء حساب تسجيل دخول للخدمة أو حساب كمبيوتر في AD الهدف.
- قم بتشغيل البرنامج النصي باستخدام بيانات اعتماد AD DS المحلية التي تتم مزامنتها مع Microsoft Azure Active Directory. يجب أن يكون لبيانات اعتماد AD DS المحلية دور المالك أو المساهم Azure في حساب التخزين.
قم بتشغيل Join-AzStorageAccount
يؤدي الأمر Join-AzStorageAccount ما يعادل الانضمام إلى مجال دون اتصال نيابة عن حساب التخزين المحدد. يستخدم البرنامج النصي الأمر cmdlet لإنشاء حساب كمبيوتر في مجال AD الخاص بك. إذا لم تتمكن من استخدام حساب كمبيوتر لأي سبب من الأسباب، يمكنك تغيير البرنامج النصي لإنشاء حساب تسجيل دخول الخدمة بدلاً من ذلك. إذا اخترت تشغيل الأمر يدوياً، فيجب عليك تحديد الحساب الأنسب لبيئتك.
يمثل حساب AD DS الذي تم إنشاؤه بواسطة الأمر cmdlet حساب التخزين. إذا تم إنشاء حساب AD DS ضمن وحدة تنظيمية (OU) تفرض انتهاء صلاحية كلمة المرور، فيجب عليك تحديث كلمة المرور قبل الحد الأقصى لعمر كلمة المرور. يؤدي الفشل في تحديث كلمة مرور الحساب قبل هذا التاريخ إلى فشل المصادقة عند الوصول إلى مشاركات ملف Azure. لمعرفة كيفية تحديث كلمة المرور، راجع تحديث كلمة مرور حساب AD DS.
استبدل قيم العناصر النائبة بقيمك في المعلمات أدناه قبل تنفيذها في PowerShell.
هام
سيقوم مجال الانضمام cmdlet بإنشاء حساب AD لتمثيل حساب التخزين (مشاركة الملف) في AD. يمكنك اختيار التسجيل كحساب كمبيوتر أو حساب تسجيل دخول خدمة، راجع الأسئلة المتداولة للحصول على التفاصيل. بالنسبة لحسابات الكمبيوتر، هناك عمر افتراضي لانتهاء صلاحية كلمة المرور تم تعيينه في AD على 30 يوماً. وبالمثل، قد يحتوي حساب تسجيل الدخول إلى الخدمة على عمر افتراضي لانتهاء صلاحية كلمة المرور تم تعيينه في مجال AD أو الوحدة التنظيمية (OU). لكلا نوعي الحسابين، نوصيك بالتحقق من عمر انتهاء صلاحية كلمة المرور الذي تم تكوينه في بيئة AD والتخطيط لتحديث كلمة مرور هوية حساب التخزين لحساب AD قبل الحد الأقصى لعمر كلمة المرور. يمكنك التفكير في إنشاء وحدة تنظيمية (OU) جديدة لـ AD في AD وتعطيل نهج انتهاء صلاحية كلمة المرور على حسابات الكمبيوتر أو حسابات تسجيل الدخول إلى الخدمة وفقاً لذلك.
# Change the execution policy to unblock importing AzFilesHybrid.psm1 module
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
# Navigate to where AzFilesHybrid is unzipped and stored and run to copy the files into your path
.\CopyToPSPath.ps1
# Import AzFilesHybrid module
Import-Module -Name AzFilesHybrid
# Login with an Azure AD credential that has either storage account owner or contributor Azure role assignment
# If you are logging into an Azure environment other than Public (ex. AzureUSGovernment) you will need to specify that.
# See https://docs.microsoft.com/azure/azure-government/documentation-government-get-started-connect-with-ps
# for more information.
Connect-AzAccount
# Define parameters, $StorageAccountName currently has a maximum limit of 15 characters
$SubscriptionId = "<your-subscription-id-here>"
$ResourceGroupName = "<resource-group-name-here>"
$StorageAccountName = "<storage-account-name-here>"
$DomainAccountType = "<ComputerAccount|ServiceLogonAccount>" # Default is set as ComputerAccount
# If you don't provide the OU name as an input parameter, the AD identity that represents the storage account is created under the root directory.
$OuDistinguishedName = "<ou-distinguishedname-here>"
# Specify the encryption algorithm used for Kerberos authentication. AES256 is recommended. Default is configured as "'RC4','AES256'" which supports both 'RC4' and 'AES256' encryption.
$EncryptionType = "<AES256|RC4|AES256,RC4>"
# Select the target subscription for the current session
Select-AzSubscription -SubscriptionId $SubscriptionId
# Register the target storage account with your active directory environment under the target OU (for example: specify the OU with Name as "UserAccounts" or DistinguishedName as "OU=UserAccounts,DC=CONTOSO,DC=COM").
# You can use to this PowerShell cmdlet: Get-ADOrganizationalUnit to find the Name and DistinguishedName of your target OU. If you are using the OU Name, specify it with -OrganizationalUnitName as shown below. If you are using the OU DistinguishedName, you can set it with -OrganizationalUnitDistinguishedName. You can choose to provide one of the two names to specify the target OU.
# You can choose to create the identity that represents the storage account as either a Service Logon Account or Computer Account (default parameter value), depends on the AD permission you have and preference.
# Run Get-Help Join-AzStorageAccountForAuth for more details on this cmdlet.
Join-AzStorageAccount `
-ResourceGroupName $ResourceGroupName `
-StorageAccountName $StorageAccountName `
-DomainAccountType $DomainAccountType `
-OrganizationalUnitDistinguishedName $OuDistinguishedName `
-EncryptionType $EncryptionType
#Run the command below to enable AES256 encryption. If you plan to use RC4, you can skip this step.
Update-AzStorageAccountAuthForAES256 -ResourceGroupName $ResourceGroupName -StorageAccountName $StorageAccountName
#You can run the Debug-AzStorageAccountAuth cmdlet to conduct a set of basic checks on your AD configuration with the logged on AD user. This cmdlet is supported on AzFilesHybrid v0.1.2+ version. For more details on the checks performed in this cmdlet, see Azure Files Windows troubleshooting guide.
Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose
الخيار الثاني: تنفيذ إجراءات التمكين يدوياً
إذا كنت قد نفذت بالفعل البرنامج النصي Join-AzStorageAccount أعلاه بنجاح، فانتقل إلى قسم تأكيد تمكين الميزة. لست بحاجة إلى متابعة الخطوات اليدوية التالية.
التحقق من البيئة
أولاً، يجب عليك التحقق من حالة بيئتك. على وجه التحديد، يجب عليك التحقق مما إذا كان قد تم تثبيت Active Directory PowerShell، وما إذا كان يتم تنفيذ shell بامتيازات المسؤول. ثم تحقق لمعرفة ما إذا كانت وحدة تخزين Az.Storage 2.0 (أو أحدث) مثبتة، وقم بتثبيتها إذا لم تكن كذلك. بعد إكمال هذه الفحوصات، تحقق من AD DS لمعرفة ما إذا كان هناك حساب كمبيوتر (افتراضي) أو حساب تسجيل دخول للخدمة تم إنشاؤه بالفعل باستخدام SPN/UPN كـ "cifs/your-storage-account-name-here.file.core.windows.net". إذا لم يكن الحساب موجوداً، فأنشئ حساباً كما هو موضح في القسم التالي.
قم بإنشاء هوية تمثل حساب التخزين في AD الخاص بك يدوياً
لإنشاء هذا الحساب يدوياً، أنشئ مفتاح Kerberos جديداً لحساب التخزين الخاص بك. بعد ذلك، استخدم مفتاح Kerberos هذا ككلمة مرور لحسابك باستخدام أوامر PowerShell أدناه. يتم استخدام هذا المفتاح فقط أثناء الإعداد ولا يمكن استخدامه لأي عمليات تحكم أو عمليات في مستوى البيانات مقابل حساب التخزين.
# Create the Kerberos key on the storage account and get the Kerb1 key as the password for the AD identity to represent the storage account
$ResourceGroupName = "<resource-group-name-here>"
$StorageAccountName = "<storage-account-name-here>"
New-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -KeyName kerb1
Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -ListKerbKey | where-object{$_.Keyname -contains "kerb1"}
بمجرد حصولك على هذا المفتاح، قم بإنشاء حساب خدمة أو كمبيوتر ضمن الوحدة التنظيمية الخاصة بك. استخدم المواصفات التالية (تذكر استبدال نص المثال باسم حساب موقع التخزين الخاص بك):
SPN: "cifs/your-storage-account-name-here.file.core.windows.net" Password: مفتاح Kerberos لحساب موقع التخزين الخاص بك.
إذا فرضت الوحدة التنظيمية الخاصة بك انتهاء صلاحية كلمة المرور، فيجب عليك تحديث كلمة المرور قبل الحد الأقصى لعمر كلمة المرور لمنع فشل المصادقة عند الوصول إلى مشاركات Azure Files. راجع تحديث كلمة المرور لهوية حساب التخزين في AD للحصول على التفاصيل.
احتفظ بـ SID للهوية المنشأة حديثاً، ستحتاج إليها للخطوة التالية. لا تحتاج الهوية التي قمت بإنشائها والتي تمثل حساب التخزين إلى مزامنتها مع Microsoft Azure Active Directory.
قم بتمكين الميزة على حساب التخزين الخاص بك
قم بتعديل الأمر التالي لتضمين تفاصيل التكوين لخصائص المجال في الأمر التالي، ثم قم بتشغيله لتمكين الميزة. معرف SID لحساب التخزين المطلوب في الأمر التالي هو معرف الأمان (SID) للهوية التي قمت بإنشائها في AD DS في القسم السابق.
# Set the feature flag on the target storage account and provide the required AD domain information
Set-AzStorageAccount `
-ResourceGroupName "<your-resource-group-name-here>" `
-Name "<your-storage-account-name-here>" `
-EnableActiveDirectoryDomainServicesForFile $true `
-ActiveDirectoryDomainName "<your-domain-dns-root-here>" `
-ActiveDirectoryNetBiosDomainName "<your-domain-dns-root-here>" `
-ActiveDirectoryForestName "<your-forest-name-here>" `
-ActiveDirectoryDomainGuid "<your-guid-here>" `
-ActiveDirectoryDomainsid "<your-domain-sid-here>" `
-ActiveDirectoryAzureStorageSid "<your-storage-account-sid>"
(اختياري) قم بتمكين تشفير AES256
لتمكين تشفير AES 256، اتبع الخطوات الواردة في هذا القسم. إذا كنت تخطط لاستخدام RC4، فتخطَّ هذا القسم.
يجب أن يفي كائن المجال الذي يمثل حساب التخزين بالمتطلبات التالية:
- لا يمكن أن يتجاوز اسم حساب التخزين 15 حرفاً.
- يجب إنشاء كائن المجال ككائن كمبيوتر في مجال AD الداخلي.
- باستثناء اللاحقة '$'، يجب أن يكون اسم حساب التخزين هو نفسه SamAccountName لكائن الكمبيوتر.
إذا كان كائن المجال الخاص بك لا يفي بهذه المتطلبات، فاحذفه وأنشئ كائن مجال جديداً.
استبدل <domain-object-identity> و<domain-name> بالقيم الخاصة بك، ثم استخدم الأمر التالي لتكوين دعم AES256:
Set-ADComputer -Identity <domain-object-identity> -Server <domain-name> -KerberosEncryptionType "AES256"
بعد تشغيل هذا الأمر، استبدل <domain-object-identity> في البرنامج النصي التالي بقيمتك، ثم قم بتشغيل البرنامج النصي لتحديث كلمة مرور كائن المجال الخاص بك:
$KeyName = "kerb1" # Could be either the first or second kerberos key, this script assumes we're refreshing the first
$KerbKeys = New-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -KeyName $KeyName
$KerbKey = $KerbKeys | Where-Object {$_.KeyName -eq $KeyName} | Select-Object -ExpandProperty Value
$NewPassword = ConvertTo-SecureString -String $KerbKey -AsPlainText -Force
Set-ADAccountPassword -Identity <domain-object-identity> -Reset -NewPassword $NewPassword
تصحيح الأخطاء
يمكنك تشغيل الأمر Debug-AzStorageAccountAuth لإجراء مجموعة من الفحوصات الأساسية على تكوين AD الخاص بك مع مستخدم AD الذي تم تسجيل دخوله. هذا الأمر مدعوم في إصدار AzFilesHybrid الإصدار 0.1.2 أو أعلى. لمزيد من المعلومات حول عمليات التحقق التي تم إجراؤها في أمر هذا، راجع تعذر تحميل Azure Files باستخدام بيانات اعتماد AD في دليل استكشاف الأخطاء وإصلاحها لنظام Windows.
Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose
التأكد من تمكين الميزة
يمكنك التحقق لتأكيد ما إذا تم تمكين الميزة على حساب التخزين الخاص بك باستخدام البرنامج النصي التالي:
# Get the target storage account
$storageaccount = Get-AzStorageAccount `
-ResourceGroupName "<your-resource-group-name-here>" `
-Name "<your-storage-account-name-here>"
# List the directory service of the selected service account
$storageAccount.AzureFilesIdentityBasedAuth.DirectoryServiceOptions
# List the directory domain information if the storage account has enabled AD DS authentication for file shares
$storageAccount.AzureFilesIdentityBasedAuth.ActiveDirectoryProperties
إذا نجحت، يجب أن يبدو الإخراج كما يلي:
DomainName:<yourDomainHere>
NetBiosDomainName:<yourNetBiosDomainNameHere>
ForestName:<yourForestNameHere>
DomainGuid:<yourGUIDHere>
DomainSid:<yourSIDHere>
AzureStorageID:<yourStorageSIDHere>
الخطوات التالية
لقد نجحت الآن في تمكين الميزة في حساب التخزين الخاص بك. لاستخدام هذه الميزة، يجب عليك تعيين أذونات على مستوى المشاركة. تابع إلى القسم التالي.