Membuat kontainer profil dengan Azure Files dan Azure Active Directory (pratinjau)

Penting

Menyimpan profil FSLogix pada Azure Files untuk mesin virtual yang digabung dengan Microsoft Azure Active Directory saat ini dalam pratinjau publik. Versi pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Pada artikel ini, Anda akan mempelajari cara membuat berbagi Azure Files untuk menyimpan profil FSLogix yang dapat diakses oleh identitas pengguna hibrid yang diautentikasi dengan Azure Active Directory (Azure AD). Pengguna Azure AD sekarang dapat mengakses berbagi file Azure menggunakan autentikasi Kerberos. Konfigurasi ini menggunakan Azure AD untuk menerbitkan tiket Kerberos yang diperlukan untuk mengakses berbagi file dengan protokol SMB standar industri. Pengguna akhir Anda dapat mengakses berbagi file Azure melalui internet tanpa memerlukan line-of-sight ke pengontrol domain dari VM yang bergabung dengan Hybrid Azure AD dan Azure AD.

Dalam artikel ini, Anda akan mempelajari cara:

  • Mengonfigurasi akun penyimpanan Azure untuk autentikasi menggunakan Azure AD.
  • Mengonfigurasi izin pada berbagi Azure Files.
  • Mengonfigurasi host sesi Anda untuk menyimpan profil pengguna FSLogix di Azure Files.

Prasyarat

Fungsionalitas Azure AD Kerberos hanya tersedia pada sistem operasi berikut:

Akun pengguna harus merupakan identitas pengguna hibrid, yang berarti Anda juga memerlukan Active Directory Domain Services (AD DS) dan Azure AD Connect. Anda harus membuat akun ini di Active Directory dan menyinkronkannya ke Azure AD. Layanan saat ini tidak mendukung lingkungan di mana pengguna dikelola dengan Microsoft Azure AD dan disinkronkan ke Azure Active Directory Domain Services.

Untuk menetapkan izin Azure Role-Based Access Control (RBAC) untuk berbagi file Azure ke grup pengguna, Anda harus membuat grup di Active Directory dan menyinkronkannya ke Azure AD.

Anda harus menonaktifkan autentikasi multifaktor (MFA) pada aplikasi Azure AD yang mewakili akun penyimpanan.

Penting

Fitur ini saat ini dalam pratinjau di cloud publik Azure.

Mengonfigurasi akun penyimpanan Azure

Mulailah dengan membuat akun Azure Storage jika Anda belum memilikinya.

Catatan

Akun Azure Storage Anda tidak dapat mengautentikasi dengan Azure AD dan metode kedua seperti Active Directory Domain Services (AD DS) atau Azure AD DS. Anda hanya dapat menggunakan satu metode autentikasi.

Ikuti petunjuk di bagian berikut untuk mengonfigurasi autentikasi Azure AD, mengonfigurasi perwakilan layanan Azure AD, dan mengatur izin API untuk akun penyimpanan Anda.

Mengonfigurasi autentikasi Azure AD di akun Azure Storage Anda

  • Menginstal modul PowerShell Azure Storage. Modul ini menyediakan cmdlet manajemen untuk sumber daya Azure Storage. Diperlukan untuk membuat akun penyimpanan, mengaktifkan autentikasi Azure AD di akun penyimpanan, dan mengambil kunci Kerberos akun penyimpanan. Untuk menginstal modul, buka PowerShell dan jalankan perintah berikut:

    Install-Module -Name Az.Storage
    
  • Menginstal modul Azure AD PowerShell. Modul ini menyediakan cmdlet manajemen untuk tugas administratif Azure AD seperti manajemen pengguna dan perwakilan layanan. Untuk menginstal modul ini, buka PowerShell, lalu jalankan perintah berikut:

    Install-Module -Name AzureAD
    

    Untuk informasi selengkapnya, lihat Menginstal modul Azure AD PowerShell.

  • Atur variabel yang diperlukan untuk penyewa, langganan, nama akun penyimpanan, dan nama grup sumber daya Anda dengan menjalankan cmdlet PowerShell berikut, mengganti nilai dengan yang sesuai dengan lingkungan Anda.

    $tenantId = "<MyTenantId>"
    $subscriptionId = "<MySubscriptionId>"
    $resourceGroupName = "<MyResourceGroup>"
    $storageAccountName = "<MyStorageAccount>"
    
  • Aktifkan autentikasi Azure AD di akun penyimpanan Anda dengan menjalankan cmdlet PowerShell berikut:

    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
    } 
    
  • Buat kunci akun penyimpanan kerb1 untuk akun penyimpanan Anda dengan menjalankan perintah PowerShell berikut:

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

Mengonfigurasi perwakilan layanan dan aplikasi Azure AD

Untuk mengaktifkan autentikasi Azure AD di akun penyimpanan, Anda perlu membuat aplikasi Azure AD untuk mewakili akun penyimpanan di Azure AD. Konfigurasi ini tidak akan tersedia di portal Microsoft Azure selama pratinjau publik. Untuk membuat aplikasi menggunakan PowerShell, ikuti langkah-langkah berikut:

  • Atur kata sandi (rahasia perwakilan layanan) berdasarkan kunci Kerberos dari akun penyimpanan. Kunci Kerberos adalah kata sandi yang dibagikan antara Azure AD dan Azure Storage. Kerberos memperoleh nilai kata sandi dari 32 byte pertama dari kunci kerb1 akun penyimpanan. Untuk mengatur kata sandi, jalankan cmdlet berikut:

    $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);
    
  • Sambungkan ke Azure AD dan ambil informasi penyewa dengan menjalankan cmdlet berikut:

    Connect-AzureAD
    $azureAdTenantDetail = Get-AzureADTenantDetail;
    $azureAdTenantId = $azureAdTenantDetail.ObjectId
    $azureAdPrimaryDomain = ($azureAdTenantDetail.VerifiedDomains | Where-Object {$_._Default -eq $true}).Name
    
  • Buat nama perwakilan layanan untuk perwakilan layanan Azure AD dengan menjalankan cmdlet ini:

    $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
    
  • Buat aplikasi untuk akun penyimpanan dengan menjalankan cmdlet ini:

    $application = New-AzureADApplication -DisplayName $storageAccountName -IdentifierUris $servicePrincipalNames -GroupMembershipClaims "All";
    
  • Buat perwakilan layanan untuk akun penyimpanan dengan menjalankan cmdlet ini:

    $servicePrincipal = New-AzureADServicePrincipal -AccountEnabled $true -AppId $application.AppId -ServicePrincipalType "Application";
    
  • Atur kata sandi untuk perwakilan layanan akun penyimpanan dengan menjalankan cmdlets berikut.

    $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.AddHours(-12).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
    }
    

    Penting

    Kata sandi ini kedaluwarsa setiap enam bulan, jadi Anda harus memperbaruinya dengan mengikuti langkah-langkah dalam Memperbarui kata sandi perwakilan layanan.

Mengatur izin API pada aplikasi yang baru dibuat

Anda dapat mengonfigurasi izin API dari portal Microsoft Azure dengan mengikuti langkah-langkah berikut:

  1. Buka dengan Azure Active Directory.
  2. Pilih Pendaftaran aplikasi di panel kiri.
  3. Pilih Semua Aplikasi.
  4. Pilih aplikasi dengan nama yang sesuai dengan akun penyimpanan Anda.
  5. Pilih izin API di panel kiri.
  6. Pilih +Tambahkan izin.
  7. Pilih Microsoft Graph di bagian atas halaman.
  8. Pilih izin yang didelegasikan.
  9. Pilih openid dan profil di bawah grup izin OpenID.
  10. Pilih User.Read di bawah grup Izin pengguna.
  11. Pilih Tambahkan izin di bagian bawah panel.
  12. Pilih Berikan persetujuan admin untuk “NamaDomain.

Nonaktifkan autentikasi multifaktor pada akun penyimpanan

Azure AD Kerberos tidak mendukung penggunaan MFA untuk mengakses Azure Files shares yang dikonfigurasi dengan Azure AD Kerberos. Anda harus mengecualikan aplikasi Azure AD yang mewakili akun penyimpanan Anda dari kebijakan akses bersyarat MFA jika berlaku untuk semua aplikasi. Aplikasi akun penyimpanan harus memiliki nama yang sama dengan akun penyimpanan dalam daftar pengecualian akses bersyarat.

Penting

Jika Anda tidak mengecualikan kebijakan MFA dari aplikasi akun penyimpanan, profil FSLogix tidak akan dapat dilampirkan. Coba petakan file berbagi menggunakan net use akan menghasilkan pesan kesalahan yang mengatakan "Kesalahan sistem 1327: Pembatasan akun mencegah pengguna ini masuk. Misalnya: kata sandi kosong tidak diizinkan, waktu masuk dibatasi, atau pembatasan kebijakan telah diberlakukan."

Mengonfigurasi berbagi Azure Files Anda

Untuk memulai, buat berbagi Azure Files di bawah akun penyimpanan Anda untuk menyimpan profil FSLogix Anda jika Anda belum melakukannya.

Ikuti petunjuk di bagian berikut untuk mengonfigurasi izin tingkat berbagi dan tingkat direktori pada berbagi Azure Files Anda untuk memberikan tingkat akses yang tepat kepada pengguna Anda.

Menetapkan izin tingkat berbagi

Anda harus memberi pengguna Anda akses ke berbagi file sebelum mereka dapat menggunakannya. Ada dua cara Anda dapat menetapkan izin tingkat berbagi: menetapkannya ke pengguna Azure AD tertentu atau grup pengguna, atau Anda dapat menetapkannya ke semua identitas yang diautentikasi sebagai izin tingkat berbagi default. Untuk mempelajari selengkapnya tentang menetapkan izin tingkat berbagi, lihat Menetapkan izin tingkat berbagi ke identitas.

Semua pengguna yang profil FSLogixnya harus disimpan di akun penyimpanan harus diberi peran Kontributor Storage File Data SMB Share.

Penting

Azure Virtual Desktop saat ini hanya mendukung penetapan izin khusus untuk pengguna hibrid dan grup pengguna. Pengguna dan grup pengguna harus dikelola di Active Directory dan disinkronkan ke Azure AD menggunakan Azure AD Connnect.

Menetapkan izin akses tingkat direktori

Untuk mencegah pengguna mengakses profil pengguna lain, Anda juga harus menetapkan izin tingkat direktori. Bagian ini akan memberi Anda panduan langkah demi langkah tentang cara mengonfigurasi izin tersebut.

Penting

Tanpa izin tingkat direktori yang tepat, pengguna dapat menghapus profil pengguna atau mengakses informasi pribadi dari pengguna yang berbeda. Penting untuk memastikan pengguna memiliki izin yang tepat untuk mencegah terjadinya penghapusan yang tidak disengaja.

Anda dapat mengatur izin (ACL) untuk file dan direktori menggunakan utilitas baris perintah icacls atau Windows Explorer. Sistem yang Anda gunakan untuk mengonfigurasi izin harus memenuhi persyaratan berikut:

  • Versi Windows memenuhi persyaratan OS yang didukung yang ditentukan di bagian Prasyarat.
  • Tergabung di Azure AD atau tergabung di Azure AD hibrid ke penyewa Azure AD sebagai akun penyimpanan.
  • Memiliki garis pandang ke pengendali domain.
  • Tergabung-domain ke Direktori Aktif Anda (hanya metode Windows Explorer).

Selama pratinjau publik, mengonfigurasi izin menggunakan Windows Explorer juga memerlukan konfigurasi akun penyimpanan. Anda dapat melewati langkah konfigurasi ini saat menggunakan icacls.

Untuk mengonfigurasi akun penyimpanan Anda:

  1. Pada perangkat yang bergabung dengan domain ke Active Directory, instal modul ActiveDirectory PowerShell jika Anda belum melakukannya.

  2. Atur variabel yang diperlukan untuk penyewa, langganan, nama akun penyimpanan, dan nama grup sumber daya Anda dengan menjalankan cmdlet PowerShell berikut, mengganti nilai dengan yang sesuai dengan lingkungan Anda. Anda dapat melewati langkah ini jika Anda sudah menetapkan nilai-nilai ini.

    $tenantId = "<MyTenantId>"
    $subscriptionId = "<MySubscriptionId>"
    $resourceGroupName = "<MyResourceGroup>"
    $storageAccountName = "<MyStorageAccount>"
    
  3. Atur ActiveDirectoryProperties akun penyimpanan untuk mendukung pengalaman Shell. Karena Azure AD saat ini tidak mendukung konfigurasi ACL di Shell, Azure AD saat ini bergantung pada Active Directory. Untuk mengonfigurasi Shell, jalankan cmdlet berikut di 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.netBiosName
    $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
    }
    

Aktifkan fungsionalitas Azure AD Kerberos dengan mengonfigurasi kebijakan grup atau nilai registri dalam daftar berikut:

  • Kebijakan grup: Administrative Templates\System\Kerberos\Allow retrieving the Azure AD Kerberos Ticket Granting Ticket during logon
  • Nilai registri: reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters /v CloudKerberosTicketRetrievalEnabled /t REG_DWORD /d 1

Selanjutnya, pastikan Anda dapat mengambil Tiket Pemberian Tiket Kerberos (TGT) dengan mengikuti instruksi berikut:

  1. Buka jendela perintah.

  2. Jalankan perintah berikut:

    dsregcmd /RefreshPrt
    
  3. Kunci lalu buka kunci perangkat Anda menggunakan akun pengguna yang sama.

  4. Jalankan perintah berikut ini di jendela perintah:

    klist purge
    klist get krbtgt
    klist
    
  5. Konfirmasikan bahwa Anda memiliki TGT Kerberos dengan mencari item dengan properti server krbtgt/KERBEROS.MICROSOFTONLINE.COM @ KERBEROS.MICROSOFTONLINE.COM.

  6. Verifikasi Anda dapat menempatkan berbagi jaringan dengan menjalankan perintah berikut di jendela perintah Anda:

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

Terakhir, ikuti petunjuk di Mengonfigurasi direktori dan izin tingkat file untuk menyelesaikan konfigurasi izin Anda dengan icacls atau Windows Explorer. Pelajari lebih lanjut tentang daftar izin yang direkomendasikan untuk profil FSLogix di Mengonfigurasi izin penyimpanan untuk kontainer profil.

Mengonfigurasi host sesi

Untuk mengakses berbagi file Azure dari VM yang bergabung dengan Azure AD untuk profil FSLogix, Anda harus mengonfigurasi host sesi. Untuk mengonfigurasi host sesi:

  1. Aktifkan fungsionalitas Azure AD Kerberos dengan mengonfigurasi kebijakan grup atau nilai registri dengan nilai dalam daftar berikut. Setelah Anda mengonfigurasi nilai tersebut, hidupkan ulang sistem untuk membuat perubahan berlaku.

    • Kebijakan grup: Administrative Templates\System\Kerberos\Allow retrieving the Azure AD Kerberos Ticket Granting Ticket during logon
    • Nilai registri: reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters /v CloudKerberosTicketRetrievalEnabled /t REG_DWORD /d 1
  2. Saat Anda menggunakan Azure AD dengan solusi profil roaming seperti FSLogix, kunci kredensial di Credential Manager harus menjadi milik profil yang saat ini dimuat. Sehingga akan memungkinkan Anda memuat profil Anda di banyak VM yang berbeda alih-alih terbatas hanya pada satu. Untuk mengaktifkan pengaturan ini, buat nilai registri baru dengan menjalankan perintah berikut:

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

Catatan

Host sesi tidak memerlukan line-of-sight jaringan ke pengontrol domain.

Konfigurasikan FSLogix pada host sesi

Bagian ini akan menunjukkan cara mengonfigurasi VM dengan FSLogix. Anda harus mengikuti instruksi ini setiap kali mengonfigurasi host sesi. Ada beberapa opsi yang tersedia untuk memastikan kunci registri ditetapkan di semua host sesi. Anda dapat mengatur opsi ini dalam image atau mengonfigurasi kebijakan grup.

Untuk mengonfigurasi FSLogix:

  1. Perbarui atau instal FSLogix di host sesi Anda, jika diperlukan.

    Catatan

    Jika host sesi dibuat menggunakan layanan Azure Virtual Desktop, FSLogix seharusnya sudah diinstal sebelumnya.

  2. Ikuti petunjuk di Mengonfigurasi pengaturan registri kontainer profil untuk membuat nilai registri Diaktifkan dan VHDLocations. Atur nilai VHDLocations ke \\<Storage-account-name>.file.core.windows.net\<file-share-name>.

Menguji penyebaran Anda

Setelah Anda menginstal dan mengonfigurasi FSLogix, Anda dapat menguji penyebaran dengan masuk menggunakan akun pengguna yang telah ditetapkan grup aplikasi atau desktop di kumpulan host. Akun pengguna yang Anda masuki harus memiliki izin untuk menggunakan berbagi file.

Jika pengguna telah masuk sebelumnya, mereka akan memiliki profil lokal yang akan digunakan selama sesi ini. Untuk menghindari pembuatan profil lokal, buat akun pengguna baru yang akan digunakan untuk pengujian atau gunakan metode konfigurasi yang dijelaskan dalam Tutorial: Mengonfigurasi Kontainer Profil untuk mengalihkan Profil Pengguna untuk mengaktifkan pengaturan DeleteLocalProfileWhenVHDShouldApply.

Terakhir, uji profil untuk memastikan bahwa profil berfungsi:

  1. Buka portal Microsoft Azure dan masuk dengan akun administratif.

  2. Dari bar samping, pilih Akun penyimpanan.

  3. Pilih akun penyimpanan yang Anda konfigurasikan untuk pool host sesi.

  4. Dari bilah sisi, pilih Berbagi file.

  5. Pilih berbagi file yang Anda konfigurasikan untuk menyimpan profil.

  6. Jika semuanya disiapkan dengan benar, Anda akan melihat <user SID>_<username>Direktori dengan nama yang diformat seperti ini: .

Memperbarui kata sandi perwakilan layanan

Kata sandi perwakilan layanan akan kedaluwarsa setiap enam bulan. Cara memperbarui kata sandi:

  1. Pasang modul PowerShell Azure Storage dan Azure AD. Untuk memasang modul, buka PowerShell dan jalankan perintah berikut:

    Install-Module -Name Az.Storage
    Install-Module -Name AzureAD
    
  2. Atur variabel yang diperlukan untuk penyewa, langganan, nama akun penyimpanan, dan nama grup sumber daya Anda dengan menjalankan cmdlet PowerShell berikut, kemudian mengganti nilai dengan yang sesuai dengan lingkungan Anda.

    $tenantId = "<MyTenantId>"
    $subscriptionId = "<MySubscriptionId>"
    $resourceGroupName = "<MyResourceGroup>"
    $storageAccountName = "<MyStorageAccount>"
    
  3. Buat kunci kerb1 dan kata sandi baru untuk perwakilan layanan dengan menjalankan perintah ini:

    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. Sambungkan ke Azure AD dan ambil informasi penyewa, aplikasi, dan perwakilan layanan dengan menjalankan cmdlet berikut:

    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. Atur kata sandi untuk perwakilan layanan akun penyimpanan dengan menjalankan cmdlets berikut.

    $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.AddHours(-12).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
    }
    

Menonaktifkan autentikasi Azure AD di akun Azure Storage Anda

Menonaktifkan autentikasi Azure AD di akun Azure Storage Anda:

  • Atur variabel yang diperlukan untuk penyewa, langganan, nama akun penyimpanan, dan nama grup sumber daya Anda dengan menjalankan cmdlet PowerShell berikut, mengganti nilai dengan yang sesuai dengan lingkungan Anda.

    $tenantId = "<MyTenantId>"
    $subscriptionId = "<MySubscriptionId>"
    $resourceGroupName = "<MyResourceGroup>"
    $storageAccountName = "<MyStorageAccount>"
    
  • Jalankan cmdlet berikut di PowerShell untuk menonaktifkan autentikasi Azure AD di akun penyimpanan Anda:

    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
    } 
    

Langkah berikutnya