إنشاء حاوية ملف تعريف باستخدام ملفات Azure وAzure Active Directory (معاينة)

هام

تخزين ملفات تعريف FSLogix على ملفات Azure للأجهزة الظاهرية المرتبطة ب Azure Active Directory (AD) قيد المعاينة العامة حاليا. يتم توفير إصدار المعاينة هذا دون اتفاقية مستوى الخدمة، ولا يوصى به لأحمال عمل الإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة لمزيد من المعلومات، راجع ⁧⁩شروط الاستخدام التكميلية لمعاينات Microsoft Azure⁧⁩.

في هذه المقالة، ستتعلم كيفية إنشاء مشاركة ملفات Azure لتخزين ملفات تعريف FSLogix التي يمكن الوصول إليها بواسطة هويات المستخدمين المختلطين المصادق عليها باستخدام Azure Active Directory (AD). يمكن للمستخدمين Azure AD الآن الوصول إلى مشاركة ملف Azure باستخدام مصادقة Kerberos. يستخدم هذا التكوين Azure AD لإصدار تذاكر Kerberos الضرورية للوصول إلى مشاركة الملف باستخدام بروتوكول SMB القياسي في الصناعة. يمكن للمستخدمين النهائيين الوصول إلى مشاركات ملفات Azure عبر الإنترنت دون الحاجة إلى خط رؤية لوحدات التحكم بالمجال من الأجهزة الظاهرية المنضمة إلى Azure AD المختلطة والمنضمة Azure AD.

ستتعرف في هذه المقالة على طريقة القيام بما يلي:

  • تكوين حساب تخزين Azure للمصادقة باستخدام Azure AD.
  • تكوين الأذونات على مشاركة ملفات Azure.
  • تكوين مضيفي الجلسة لتخزين ملفات تعريف مستخدم FSLogix على ملفات Azure.

المتطلبات الأساسية

تتوفر وظيفة Azure AD Kerberos فقط على أنظمة التشغيل التالية:

يجب أن تكون حسابات المستخدمين هويات مستخدم مختلطة، ما يعني أنك ستحتاج أيضا إلى خدمات مجال Active Directory (AD DS) Azure AD الاتصال. يجب إنشاء هذه الحسابات في Active Directory ومزامنتها مع Azure AD. لا تدعم الخدمة حاليا البيئات التي تتم فيها إدارة المستخدمين باستخدام Azure AD ومزامنتهم اختياريا مع Azure AD Directory Services.

لتعيين أذونات Azure Role-Based Access Control (RBAC) لمشاركة ملف Azure إلى مجموعة مستخدمين، يجب إنشاء المجموعة في Active Directory ومزامنتها مع Azure AD.

هام

هذه الميزة مدعومة حاليا فقط في سحابة Azure العامة.

تكوين حساب تخزين Azure

ابدأ بإنشاء حساب تخزين Azure إذا لم يكن لديك حساب بالفعل.

ملاحظة

لا يمكن مصادقة حساب Azure Storage الخاص بك باستخدام كل من Azure AD وطريقة ثانية مثل خدمات مجال Active Directory (AD DS) أو Azure AD DS. يمكنك استخدام أسلوب مصادقة واحد فقط.

اتبع الإرشادات الواردة في الأقسام التالية لتكوين مصادقة Azure AD وتكوين كيان خدمة Azure AD وتعيين إذن واجهة برمجة التطبيقات لحساب التخزين الخاص بك.

تكوين مصادقة Azure AD على حساب Azure Storage

  • تثبيت وحدة Azure Storage PowerShell النمطية. توفر هذه الوحدة أوامر cmdlets للإدارة لموارد Azure Storage. مطلوب لإنشاء حسابات تخزين، وتمكين المصادقة Azure AD على حساب التخزين، واسترداد مفاتيح Kerberos لحساب التخزين. لتثبيت الوحدة النمطية، افتح PowerShell وقم بتشغيل الأمر التالي:

    Install-Module -Name Az.Storage
    
  • قم بتثبيت وحدة Microsoft Azure Active Directory PowerShell. توفر هذه الوحدة أوامر cmdlets للإدارة Azure AD المهام الإدارية مثل الإدارة الرئيسية للمستخدم والخدمة. لتثبيت هذه الوحدة النمطية، افتح PowerShell، ثم قم بتشغيل الأمر التالي:

    Install-Module -Name AzureAD
    

    لمزيد من المعلومات، راجع تثبيت الوحدة النمطية Azure AD PowerShell.

  • قم بتعيين المتغيرات المطلوبة للمستأجر والاشتراك واسم حساب التخزين واسم مجموعة الموارد عن طريق تشغيل أوامر PowerShell cmdlets التالية، واستبدال القيم بالقيم ذات الصلة بالبيئة الخاصة بك.

    $tenantId = "<MyTenantId>"
    $subscriptionId = "<MySubscriptionId>"
    $resourceGroupName = "<MyResourceGroup>"
    $storageAccountName = "<MyStorageAccount>"
    
  • تمكين مصادقة Azure AD على حساب التخزين الخاص بك عن طريق تشغيل أوامر PowerShell cmdlets التالية:

    Connect-AzAccount -Tenant $tenantId -SubscriptionId $subscriptionId
    
    $Uri = ('https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/storageAccounts/{2}?api-version=2021-04-01' -f $subscriptionId, $resourceGroupName, $storageAccountName);
    
    $json = @{properties=@{azureFilesIdentityBasedAuthentication=@{directoryServiceOptions="AADKERB"}}};
    $json = $json | ConvertTo-Json -Depth 99
    
    $token = $(Get-AzAccessToken).Token
    $headers = @{ Authorization="Bearer $token" }
    
    try {
        Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method PATCH -Headers $Headers -Body $json;
    } catch {
        Write-Host $_.Exception.ToString()
        Write-Error -Message "Caught exception setting Storage Account directoryServiceOptions=AADKERB: $_" -ErrorAction Stop
    } 
    
  • قم بإنشاء مفتاح حساب تخزين kerb1 لحساب التخزين الخاص بك عن طريق تشغيل أمر PowerShell التالي:

    New-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName -KeyName kerb1 -ErrorAction Stop 
    

تكوين كيان خدمة Azure AD والتطبيق

لتمكين مصادقة Azure AD على حساب تخزين، تحتاج إلى إنشاء تطبيق Azure AD لتمثيل حساب التخزين في Azure AD. لن يتوفر هذا التكوين في مدخل Microsoft Azure أثناء المعاينة العامة. لإنشاء التطبيق باستخدام PowerShell، اتبع الخطوات التالية:

  • تعيين كلمة المرور (سر كيان الخدمة) استنادا إلى مفتاح Kerberos لحساب التخزين. مفتاح Kerberos هو كلمة مرور مشتركة بين Azure AD وAzure Storage. تستمد Kerberos قيمة كلمة المرور من أول 32 بايت من مفتاح kerb1 لحساب التخزين. لتعيين كلمة المرور، قم بتشغيل أوامر cmdlets التالية:

    $kerbKey1 = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName -ListKerbKey | Where-Object { $_.KeyName -like "kerb1" }
    $aadPasswordBuffer = [System.Linq.Enumerable]::Take([System.Convert]::FromBase64String($kerbKey1.Value), 32);
    $password = "kk:" + [System.Convert]::ToBase64String($aadPasswordBuffer);
    
  • الاتصال إلى Azure AD معلومات المستأجر واستردادها عن طريق تشغيل أوامر cmdlets التالية:

    Connect-AzureAD
    $azureAdTenantDetail = Get-AzureADTenantDetail;
    $azureAdTenantId = $azureAdTenantDetail.ObjectId
    $azureAdPrimaryDomain = ($azureAdTenantDetail.VerifiedDomains | Where-Object {$_._Default -eq $true}).Name
    
  • إنشاء أسماء كيان الخدمة لمدير خدمة Azure AD عن طريق تشغيل أوامر cmdlets هذه:

    $servicePrincipalNames = New-Object string[] 3
    $servicePrincipalNames[0] = 'HTTP/{0}.file.core.windows.net' -f $storageAccountName
    $servicePrincipalNames[1] = 'CIFS/{0}.file.core.windows.net' -f $storageAccountName
    $servicePrincipalNames[2] = 'HOST/{0}.file.core.windows.net' -f $storageAccountName
    
  • إنشاء تطبيق لحساب التخزين عن طريق تشغيل cmdlet هذا:

    $application = New-AzureADApplication -DisplayName $storageAccountName -IdentifierUris $servicePrincipalNames -GroupMembershipClaims "All";
    
  • إنشاء كيان خدمة لحساب التخزين عن طريق تشغيل cmdlet هذا:

    $servicePrincipal = New-AzureADServicePrincipal -AccountEnabled $true -AppId $application.AppId -ServicePrincipalType "Application";
    
  • قم بتعيين كلمة المرور لمدير خدمة حساب التخزين عن طريق تشغيل أوامر cmdlets التالية.

    $Token = ([Microsoft.Open.Azure.AD.CommonLibrary.AzureSession]::AccessTokens['AccessToken']).AccessToken
    $Uri = ('https://graph.windows.net/{0}/{1}/{2}?api-version=1.6' -f $azureAdPrimaryDomain, 'servicePrincipals', $servicePrincipal.ObjectId)
    $json = @'
    {
      "passwordCredentials": [
      {
        "customKeyIdentifier": null,
        "endDate": "<STORAGEACCOUNTENDDATE>",
        "value": "<STORAGEACCOUNTPASSWORD>",
        "startDate": "<STORAGEACCOUNTSTARTDATE>"
      }]
    }
    '@
    $now = [DateTime]::UtcNow
    $json = $json -replace "<STORAGEACCOUNTSTARTDATE>", $now.AddDays(-1).ToString("s")
      $json = $json -replace "<STORAGEACCOUNTENDDATE>", $now.AddMonths(6).ToString("s")
    $json = $json -replace "<STORAGEACCOUNTPASSWORD>", $password
    $Headers = @{'authorization' = "Bearer $($Token)"}
    try {
      Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method Patch -Headers $Headers -Body $json 
      Write-Host "Success: Password is set for $storageAccountName"
    } catch {
      Write-Host $_.Exception.ToString()
      Write-Host "StatusCode: " $_.Exception.Response.StatusCode.value
      Write-Host "StatusDescription: " $_.Exception.Response.StatusDescription
    }
    

    هام

    تنتهي صلاحية كلمة المرور هذه كل ستة أشهر، لذلك يجب تحديثها باتباع الخطوات الواردة في تحديث كلمة مرور كيان الخدمة.

تعيين أذونات واجهة برمجة التطبيقات على التطبيق الذي تم إنشاؤه حديثا

يمكنك تكوين أذونات واجهة برمجة التطبيقات من مدخل Microsoft Azure باتباع الخطوات التالية:

  1. فتح Azure Active Directory.
  2. حدد App registrations في الجزء الأيمن.
  3. حدد All Applications.
  4. حدد التطبيق بالاسم المطابق لحساب التخزين الخاص بك.
  5. حدد أذونات واجهة برمجة التطبيقات في الجزء الأيمن.
  6. حدد + إضافة إذن.
  7. حدد Microsoft Graph في أعلى الصفحة.
  8. حدد ⁧⁩الأذونات المفوضة⁧⁩.
  9. حدد openid و profile ضمن مجموعة أذونات OpenID .
  10. حدد User.Read ضمن مجموعة أذونات المستخدم .
  11. حدد إضافة أذونات في أسفل الصفحة.
  12. حدد منح موافقة المسؤول ل "DirectoryName".

تكوين مشاركة ملفات Azure

للبدء، قم بإنشاء مشاركة ملفات Azure ضمن حساب التخزين الخاص بك لتخزين ملفات تعريف FSLogix إذا لم تكن قد قمت بالفعل.

اتبع الإرشادات الواردة في الأقسام التالية لتكوين أذونات مستوى المشاركة ومستوى الدليل على مشاركة ملفات Azure لتوفير المستوى الصحيح من الوصول إلى المستخدمين.

تعيين أذونات على مستوى المشاركة

يجب منح المستخدمين حق الوصول إلى مشاركة الملف قبل أن يتمكنوا من استخدامها. هناك طريقتان يمكنك من خلالها تعيين أذونات على مستوى المشاركة: إما تعيينها إلى مستخدمين Azure AD محددين أو مجموعات مستخدمين، أو يمكنك تعيينها لجميع الهويات المصادق عليها كإذن افتراضي على مستوى المشاركة. لمعرفة المزيد حول تعيين أذونات على مستوى المشاركة، راجع تعيين أذونات على مستوى المشاركة إلى هوية.

يجب تعيين دور Storage File Data SMB Share Contributor لجميع المستخدمين الذين يحتاجون إلى تخزين ملفات تعريف FSLogix على حساب التخزين الذي تستخدمه.

هام

يدعم Azure Virtual Desktop حاليا فقط تعيين أذونات محددة للمستخدمين المختلطين ومجموعات المستخدمين. يجب إدارة المستخدمين ومجموعات المستخدمين في Active Directory ومزامنتها مع Azure AD باستخدام Azure AD الاتصال.

تعيين أذونات الوصول على مستوى الدليل

لمنع المستخدمين من الوصول إلى ملف تعريف المستخدم للمستخدمين الآخرين، يجب أيضا تعيين أذونات على مستوى الدليل. سيمنحك هذا القسم دليلا خطوة بخطوة حول كيفية تكوين الأذونات.

هام

بدون أذونات مستوى الدليل المناسبة، يمكن للمستخدم حذف ملف تعريف المستخدم أو الوصول إلى المعلومات الشخصية لمستخدم مختلف. من المهم التأكد من أن المستخدمين لديهم أذونات مناسبة لمنع حدوث الحذف العرضي.

يمكنك تعيين أذونات (ACLs) للملفات والدلائل باستخدام الأداة المساعدة سطر الأوامر icacls أو Windows Explorer. يجب أن يفي النظام الذي تستخدمه لتكوين الأذونات بالمتطلبات التالية:

  • يفي إصدار Windows بمتطلبات نظام التشغيل المدعومة المحددة في قسم المتطلبات الأساسية.
  • مرتبط Azure AD أو مختلط Azure AD مرتبط بنفس المستأجر Azure AD مثل حساب التخزين.
  • لديه خط رؤية لوحدة التحكم بالمجال.
  • تم ربط المجال ب Active Directory (أسلوب مستكشف Windows فقط).

أثناء المعاينة العامة، يتطلب تكوين الأذونات باستخدام Windows Explorer أيضا تكوين حساب التخزين. يمكنك تخطي خطوة التكوين هذه عند استخدام icacls.

لتكوين حساب التخزين الخاص بك:

  1. على جهاز مرتبط بالمجال إلى Active Directory، قم بتثبيت الوحدة النمطية ActiveDirectory PowerShell إذا لم تكن قد قمت بذلك بالفعل.

  2. قم بتعيين المتغيرات المطلوبة للمستأجر والاشتراك واسم حساب التخزين واسم مجموعة الموارد عن طريق تشغيل أوامر PowerShell cmdlets التالية، واستبدال القيم بالقيم ذات الصلة بالبيئة الخاصة بك. يمكنك تخطي هذه الخطوة إذا قمت بالفعل بتعيين هذه القيم.

    $tenantId = "<MyTenantId>"
    $subscriptionId = "<MySubscriptionId>"
    $resourceGroupName = "<MyResourceGroup>"
    $storageAccountName = "<MyStorageAccount>"
    
  3. قم بتعيين ActiveDirectoryProperties لحساب التخزين لدعم تجربة Shell. نظرا لأن Azure AD لا يدعم حاليا تكوين قوائم التحكم في الوصول في Shell، يجب أن تعتمد بدلا من ذلك على Active Directory. لتكوين Shell، قم بتشغيل cmdlets التالية في PowerShell:

    Connect-AzAccount -Tenant $tenantId -SubscriptionId $subscriptionId
    
    $AdModule = Get-Module ActiveDirectory;
     if ($null -eq $AdModule) {
        Write-Error "Please install and/or import the ActiveDirectory PowerShell module." -ErrorAction Stop;
    }
    $domainInformation = Get-ADDomain
    $Domain = $domainInformation.DnsRoot
    $domainGuid = $domainInformation.ObjectGUID.ToString()
    $domainName = $domainInformation.DnsRoot
    $domainSid = $domainInformation.DomainSID.Value
    $forestName = $domainInformation.Forest
    $netBiosDomainName = $domainInformation.DnsRoot
    $azureStorageSid = $domainSid + "-123454321";
    
    Write-Verbose "Setting AD properties on $storageAccountName in $resourceGroupName : `
            EnableActiveDirectoryDomainServicesForFile=$true, ActiveDirectoryDomainName=$domainName, `
            ActiveDirectoryNetBiosDomainName=$netBiosDomainName, ActiveDirectoryForestName=$($domainInformation.Forest) `
            ActiveDirectoryDomainGuid=$domainGuid, ActiveDirectoryDomainSid=$domainSid, `
            ActiveDirectoryAzureStorageSid=$azureStorageSid"
    
    $Uri = ('https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/storageAccounts/{2}?api-version=2021-04-01' -f $subscriptionId, $resourceGroupName, $storageAccountName);
    
    $json=
        @{
            properties=
                @{azureFilesIdentityBasedAuthentication=
                    @{directoryServiceOptions="AADKERB";
                        activeDirectoryProperties=@{domainName="$($domainName)";
                                                    netBiosDomainName="$($netBiosDomainName)";
                                                    forestName="$($forestName)";
                                                    domainGuid="$($domainGuid)";
                                                    domainSid="$($domainSid)";
                                                    azureStorageSid="$($azureStorageSid)"}
                    }
                }
        };  
    
    $json = $json | ConvertTo-Json -Depth 99
    
    $token = $(Get-AzAccessToken).Token
    $headers = @{ Authorization="Bearer $token" }
    
    try {
        Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method PATCH -Headers $Headers -Body $json
    } catch {
        Write-Host $_.Exception.ToString()
        Write-Host "Error setting Storage Account AD properties.  StatusCode:" $_.Exception.Response.StatusCode.value__ 
        Write-Host "Error setting Storage Account AD properties.  StatusDescription:" $_.Exception.Response.StatusDescription
        Write-Error -Message "Caught exception setting Storage Account AD properties: $_" -ErrorAction Stop
    }
    

تمكين وظيفة Kerberos Azure AD عن طريق تكوين نهج المجموعة أو قيمة السجل في القائمة التالية:

  • نهج المجموعة: Administrative Templates\System\Kerberos\Allow retrieving the Azure AD Kerberos Ticket Granting Ticket during logon
  • قيمة السجل: reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters /v CloudKerberosTicketRetrievalEnabled /t REG_DWORD /d 1

بعد ذلك، تأكد من أنه يمكنك استرداد تذكرة منح تذكرة Kerberos (TGT) باتباع هذه الإرشادات:

  1. في نافذة أمر اكتب.

  2. شغِّل الأمر التالي:

    dsregcmd /RefreshPrt
    
  3. قم بتأمين جهازك ثم إلغاء تأمينه باستخدام حساب المستخدم نفسه.

  4. في نافذة الأوامر، قم بتشغيل الأوامر التالية:

    klist purge
    klist get krbtgt
    klist
    
  5. تأكد من أن لديك Kerberos TGT من خلال البحث عن عنصر بخاصية خادم .krbtgt/KERBEROS.MICROSOFTONLINE.COM @ KERBEROS.MICROSOFTONLINE.COM

  6. تحقق من إمكانية تحميل مشاركة الشبكة عن طريق تشغيل الأمر التالي في نافذة الأوامر:

    net use <DriveLetter>: \\<storage-account-name>.file.core.windows.net\<fIle-share-name>
    

وأخيرا، اتبع الإرشادات الواردة في تكوين أذونات مستوى الدليل والملف لإنهاء تكوين أذوناتك باستخدام icacls أو Windows Explorer. تعرف على المزيد حول قائمة الأذونات الموصى بها لملفات تعريف FSLogix في تكوين أذونات التخزين لحاويات ملف التعريف.

تكوين مضيفي الجلسة

للوصول إلى مشاركات ملفات Azure من جهاز ظاهري مرتبط Azure AD لملفات تعريف FSLogix، يجب تكوين مضيفي الجلسة. لتكوين مضيفي الجلسة:

  1. قم بتمكين وظيفة Kerberos Azure AD عن طريق تكوين نهج المجموعة أو قيمة السجل مع القيم الموجودة في القائمة التالية. بمجرد تكوين هذه القيم، أعد تشغيل النظام الخاص بك لجعل التغييرات سارية المفعول.

    • نهج المجموعة: Administrative Templates\System\Kerberos\Allow retrieving the Azure AD Kerberos Ticket Granting Ticket during logon
    • قيمة السجل: reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters /v CloudKerberosTicketRetrievalEnabled /t REG_DWORD /d 1
  2. عند استخدام Azure AD مع حل ملف تعريف تجوال مثل FSLogix، يجب أن تنتمي مفاتيح بيانات الاعتماد في إدارة بيانات الاعتماد إلى ملف التعريف الذي يتم تحميله حاليا. سيسمح لك هذا بتحميل ملف التعريف الخاص بك على العديد من الأجهزة الظاهرية المختلفة بدلا من أن يقتصر على جهاز واحد فقط. لتمكين هذا الإعداد، قم بإنشاء قيمة تسجيل جديدة عن طريق تشغيل الأمر التالي:

    reg add HKLM\Software\Policies\Microsoft\AzureADAccount /v LoadCredKeyFromProfile /t REG_DWORD /d 1
    

ملاحظة

لا يحتاج مضيفو الجلسة إلى خط رؤية الشبكة لوحدة التحكم بالمجال.

تكوين FSLogix على مضيف الجلسة

سيوضح لك هذا القسم كيفية تكوين جهاز ظاهري باستخدام FSLogix. ستحتاج إلى اتباع هذه الإرشادات في كل مرة تقوم فيها بتكوين مضيف جلسة عمل. هناك العديد من الخيارات المتاحة التي تضمن تعيين مفاتيح التسجيل على جميع مضيفي الجلسة. يمكنك تعيين هذه الخيارات في صورة أو تكوين نهج مجموعة.

لتكوين FSLogix:

  1. قم بتحديث FSLogix أو تثبيته على مضيف جلسة العمل، إذا لزم الأمر.

  2. اتبع الإرشادات الواردة في تكوين إعدادات تسجيل حاوية ملف التعريف لإنشاء قيم التسجيل EnabledوVHDLocations . تعيين قيمة VHDLocations إلى \\<Storage-account-name>.file.core.windows.net\<file-share-name>.

اختبار التوزيع الخاص بك

بمجرد تثبيت FSLogix وتكوينه، يمكنك اختبار النشر الخاص بك عن طريق تسجيل الدخول باستخدام حساب مستخدم تم تعيينه إلى مجموعة تطبيقات على تجمع المضيف. يجب أن يكون لدى حساب المستخدم الذي تقوم بتسجيل الدخول به الإذن لاستخدام مشاركة الملف.

إذا قام المستخدم بتسجيل الدخول من قبل، فسيكون لديه ملف تعريف محلي موجود ستستخدمه الخدمة أثناء جلسة العمل هذه. لتجنب إنشاء ملف تعريف محلي، قم إما بإنشاء حساب مستخدم جديد لاستخدامه في الاختبارات أو استخدم أساليب التكوين الموضحة في البرنامج التعليمي: تكوين حاوية ملف التعريف لإعادة توجيه ملفات تعريف المستخدمين لتمكين إعداد DeleteLocalProfileWhenVHDShouldApply .

وأخيرا، اختبر ملف التعريف للتأكد من أنه يعمل:

  1. افتح مدخل Microsoft Azure وسجل الدخول باستخدام حساب إداري.

  2. من الشريط الجانبي، حدد حسابات التخزين.

  3. حدد حساب التخزين الذي قمت بتكوينه لتجمع مضيف جلسة العمل.

  4. من الشريط الجانبي، حدد File shares.

  5. حدد مشاركة الملف التي قمت بتكوينها لتخزين ملفات التعريف.

  6. إذا تم إعداد كل شيء بشكل صحيح، يجب أن تشاهد دليلا باسم منسق مثل هذا: <user SID>_<username>.

تحديث كلمة مرور كيان الخدمة

ستنتهي صلاحية كلمة مرور كيان الخدمة كل ستة أشهر. لتحديث كلمة المرور:

  1. تثبيت وحدة Azure Storage وPowerShell Azure AD. لتثبيت الوحدات النمطية، افتح PowerShell وقم بتشغيل الأوامر التالية:

    Install-Module -Name Az.Storage
    Install-Module -Name AzureAD
    
  2. قم بتعيين المتغيرات المطلوبة للمستأجر والاشتراك واسم حساب التخزين واسم مجموعة الموارد عن طريق تشغيل أوامر PowerShell cmdlets التالية، واستبدال القيم بالقيم ذات الصلة بالبيئة الخاصة بك.

    $tenantId = "<MyTenantId>"
    $subscriptionId = "<MySubscriptionId>"
    $resourceGroupName = "<MyResourceGroup>"
    $storageAccountName = "<MyStorageAccount>"
    
  3. إنشاء مفتاح وكلمة مرور kerb1 جديدين لمدير الخدمة عن طريق تشغيل هذا الأمر:

    Connect-AzAccount -Tenant $tenantId -SubscriptionId $subscriptionId
    $kerbKeys = New-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName -KeyName "kerb1" -ErrorAction Stop | Select-Object -ExpandProperty Keys
    $kerbKey = $kerbKeys | Where-Object { $_.KeyName -eq "kerb1" } | Select-Object -ExpandProperty Value
    $azureAdPasswordBuffer = [System.Linq.Enumerable]::Take([System.Convert]::FromBase64String($kerbKey), 32);
    $password = "kk:" + [System.Convert]::ToBase64String($azureAdPasswordBuffer);
    
  4. الاتصال إلى Azure AD واسترداد معلومات المستأجر والتطبيق ومدير الخدمة عن طريق تشغيل أوامر cmdlets التالية:

    Connect-AzureAD
    $azureAdTenantDetail = Get-AzureADTenantDetail;
    $azureAdTenantId = $azureAdTenantDetail.ObjectId
    $azureAdPrimaryDomain = ($azureAdTenantDetail.VerifiedDomains | Where-Object {$_._Default -eq $true}).Name
    $application = Get-AzureADApplication -Filter "DisplayName eq '$($storageAccountName)'" -ErrorAction Stop;
    $servicePrincipal = Get-AzureADServicePrincipal -Filter "AppId eq '$($application.AppId)'"
    if ($servicePrincipal -eq $null) {
      Write-Host "Could not find service principal corresponding to application with app id $($application.AppId)"
      Write-Error -Message "Make sure that both service principal and application exist and are correctly configured" -ErrorAction Stop
    }
    
  5. قم بتعيين كلمة المرور لمدير خدمة حساب التخزين عن طريق تشغيل أوامر cmdlets التالية.

    $Token = ([Microsoft.Open.Azure.AD.CommonLibrary.AzureSession]::AccessTokens['AccessToken']).AccessToken;
    $Uri = ('https://graph.windows.net/{0}/{1}/{2}?api-version=1.6' -f $azureAdPrimaryDomain, 'servicePrincipals', $servicePrincipal.ObjectId)
    $json = @'
    {
      "passwordCredentials": [
      {
        "customKeyIdentifier": null,
        "endDate": "<STORAGEACCOUNTENDDATE>",
        "value": "<STORAGEACCOUNTPASSWORD>",
        "startDate": "<STORAGEACCOUNTSTARTDATE>"
      }]
    }
    '@
    
    $now = [DateTime]::UtcNow
    $json = $json -replace "<STORAGEACCOUNTSTARTDATE>", $now.AddDays(-1).ToString("s")
     $json = $json -replace "<STORAGEACCOUNTENDDATE>", $now.AddMonths(6).ToString("s")
    $json = $json -replace "<STORAGEACCOUNTPASSWORD>", $password
    
    $Headers = @{'authorization' = "Bearer $($Token)"}
    
    try {
      Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method Patch -Headers $Headers -Body $json 
      Write-Host "Success: Password is set for $storageAccountName"
    } catch {
      Write-Host $_.Exception.ToString()
      Write-Host "StatusCode: " $_.Exception.Response.StatusCode.value
      Write-Host "StatusDescription: " $_.Exception.Response.StatusDescription
    }
    

تعطيل مصادقة Azure AD على حساب Azure Storage

إذا كنت بحاجة إلى تعطيل المصادقة Azure AD على حساب التخزين الخاص بك:

  • قم بتعيين المتغيرات المطلوبة للمستأجر والاشتراك واسم حساب التخزين واسم مجموعة الموارد عن طريق تشغيل أوامر PowerShell cmdlets التالية، واستبدال القيم بالقيم ذات الصلة بالبيئة الخاصة بك.

    $tenantId = "<MyTenantId>"
    $subscriptionId = "<MySubscriptionId>"
    $resourceGroupName = "<MyResourceGroup>"
    $storageAccountName = "<MyStorageAccount>"
    
  • قم بتشغيل أوامر cmdlets التالية في PowerShell لتعطيل مصادقة Azure AD على حساب التخزين الخاص بك:

    Connect-AzAccount -Tenant $tenantId -SubscriptionId $subscriptionId
    $Uri = ('https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/storageAccounts/{2}?api-version=2021-04-01' -f $subscriptionId, $resourceGroupName, $storageAccountName);
    
    $json = @{properties=@{azureFilesIdentityBasedAuthentication=@{directoryServiceOptions="None"}}};
    $json = $json | ConvertTo-Json -Depth 99
    
    $token = $(Get-AzAccessToken).Token
    $headers = @{ Authorization="Bearer $token" }
    
    try {
        Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method PATCH -Headers $Headers -Body $json;
    } catch {
        Write-Host $_.Exception.ToString()
        Write-Host "Error setting Storage Account directoryServiceOptions=None.  StatusCode:" $_.Exception.Response.StatusCode.value__
        Write-Host "Error setting Storage Account directoryServiceOptions=None.  StatusDescription:" $_.Exception.Response.StatusDescription
        Write-Error -Message "Caught exception setting Storage Account directoryServiceOptions=None: $_" -ErrorAction Stop
    } 
    

الخطوات التالية