Bagikan melalui


Tutorial: Menggunakan VM/VMSS Windows untuk mengakses sumber daya Azure

Identitas terkelola untuk sumber daya Azure adalah fitur ID Microsoft Entra. Setiap layanan Azure yang mendukung identitas terkelola untuk sumber daya Azure tunduk pada garis waktu mereka masing-masing. Pastikan Anda meninjau status ketersediaan identitas terkelola untuk sumber daya dan masalah yang diketahui sebelum Anda memulai.

Prasyarat

Menggunakan identitas terkelola yang ditetapkan sistem VM Windows untuk mengakses Azure Data Lake Store

Tutorial ini menunjukkan kepada Anda cara menggunakan identitas terkelola yang ditetapkan sistem untuk komputer virtual (VM) Windows untuk mengakses Azure Data Lake Store. Identitas terkelola dikelola secara otomatis oleh Azure. Mereka memungkinkan aplikasi Anda untuk mengautentikasi ke layanan yang mendukung autentikasi Microsoft Entra, tanpa perlu menyisipkan kredensial ke dalam kode Anda.

Dalam artikel ini, Anda akan mempelajari cara:

  • Memberikan akses komputer virtual Anda ke Azure Data Lake Store
  • Mendapatkan token akses menggunakan identitas VM dan menggunakannya untuk mengakses Azure Data Lake Store

Aktifkan

Mengaktifkan identitas terkelola yang ditetapkan sistem adalah pengalaman sekali klik. Anda dapat mengaktifkannya selama pembuatan VM atau di properti VM yang sudah ada.

Cuplikan layar menunjukkan tab yang ditetapkan Sistem untuk komputer virtual tempat Anda dapat mengaktifkann status yang ditetapkan Sistem.

Untuk mengaktifkan identitas terkelola yang ditetapkan sistem pada VM baru:

  1. Masuk ke portal Azure.

  2. Buat komputer virtual dengan identitas yang ditetapkan sistem diaktifkan.

Memberikan akses

Anda dapat memberikan akses VM ke file dan folder di Azure Data Lake Store. Untuk langkah ini, Anda dapat menggunakan Data Lake Store yang sudah ada atau membuat yang baru.

Untuk membuat Data Lake Store baru menggunakan portal Azure, lihat Mulai cepat Azure Data Lake Store. Ada juga mulai cepat yang menggunakan Azure CLI dan Azure PowerShell di dokumentasi Azure Data Lake Store.

Pada Data Lake Store Anda, buat folder baru dan berikan izin identitas yang ditetapkan sistem mesin virtual Anda. Identitas ini membutuhkan kewenangan untuk membaca, menulis, dan mengeksekusi file di folder tersebut:

  1. Pada portal Microsoft Azure, pilih Data Lake Store di navigasi sebelah kiri.
  2. Pilih Data Lake Store yang ingin Anda gunakan untuk tutorial ini.
  3. Pilih Data Explorer di bilah perintah.
  4. Folder akar Data Lake Store telah dipilih. Pilih Akses pada bilah perintah.
  5. Pilih Tambahkan. Di bidang Pilih, masukkan nama komputer virtual Anda, misalnya DevTestVM. Pilih VM Anda dari hasil pencarian, lalu pilih Pilih.
  6. Pilih Pilih Izin, lalu Baca dan Jalankan. Tambahkan ke Folder ini, lalu pilih Izin akses saja.
  7. Pilih Ok, lalu tutup bilah Akses . Izin seharusnya berhasil ditambah.
  8. Selanjutnya, buat folder baru. Pilih Folder Baru di bilah perintah dan beri nama folder baru. Misalnya, TestFolder, lalu pilih Ok.
  9. Pilih folder yang Anda buat, lalu pilih Akses di bilah perintah.
  10. Pilih Tambahkan, lalu di bidang Pilih masukkan nama VM Anda dan pilih Pilih.
  11. Pilih Pilih Izin, lalu Baca, Tulis, dan Jalankan. Tambahkan ke folder Ini, lalu tambahkan sebagai entri izin akses dan entri izin default.
  12. Pilih OK. Izin harus berhasil ditambahkan.

Identitas terkelola yang ditetapkan sistem komputer virtual Anda sekarang dapat melakukan semua operasi pada file di folder yang dibuat. Untuk informasi tentang mengelola akses ke Data Lake Store, lihat Kontrol Akses di Data Lake Store.

Mengakses data

Azure Data Lake Store secara asli mendukung autentikasi Microsoft Entra, sehingga dapat langsung menerima token akses yang diperoleh menggunakan identitas terkelola untuk sumber daya Azure. Untuk mengautentikasi ke sistem file Data Lake Store, Anda mengirim token akses yang dikeluarkan oleh ID Microsoft Entra ke titik akhir sistem file Data Lake Store Anda di header Otorisasi. Header memiliki format Bearer <ACCESS_TOKEN_VALUE>.

Untuk mempelajari selengkapnya tentang dukungan Data Lake Store untuk autentikasi Microsoft Entra, lihat Autentikasi dengan Data Lake Store menggunakan ID Microsoft Entra.

Catatan

SDK klien sistem file Data Lake Store belum mendukung identitas terkelola untuk sumber daya Azure.

Di tutorial ini, Anda mengautentikasi ke REST API sistem file Data Lake Store menggunakan PowerShell untuk membuat permintaan REST. Untuk menggunakan identitas terkelola yang ditetapkan sistem komputer virtual untuk autentikasi, Anda harus membuat permintaan dari komputer virtual.

  1. Di portal, navigasikan ke Komputer Virtual, buka VM Windows Anda. Lalu, di Gambaran Umum, pilih Sambungkan.

  2. Masukkan Nama Pengguna dan Kata Sandi yang Anda tambahkan saat membuat VM Windows.

  3. Sekarang setelah Anda membuat Koneksi Desktop Jarak Jauh dengan VM, buka PowerShell di sesi jarak jauh.

  4. Menggunakan cmdlet PowerShell Invoke-WebRequest , buat permintaan ke identitas terkelola lokal untuk titik akhir sumber daya Azure untuk mendapatkan token akses untuk Azure Data Lake Store. Pengidentifikasi sumber daya untuk Data Lake Store adalah https://datalake.azure.net/. Data Lake melakukan kecocokan yang tepat pada pengidentifikasi sumber daya, sehingga garis miring berikutnya penting.

    $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -Method GET -Headers @{Metadata="true"}
    

    Mengonversi respons dari objek JSON menjadi objek PowerShell.

    $content = $response.Content | ConvertFrom-Json
    

    Mengekstrak token akses dari respons.

    $AccessToken = $content.access_token
    
  5. Periksa apakah semuanya dikonfigurasi dengan benar. Menggunakan cmdlet PowerShell Invoke-WebRequest , buat permintaan ke titik akhir REST Data Lake Store Anda untuk mencantumkan folder di folder akar. Penting string Bearer di header Otorisasi memiliki modal "B". Anda dapat menemukan nama Data Lake Store Anda di bagian Gambaran Umum dari Data Lake Store.

    Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -Headers @{Authorization="Bearer $AccessToken"}
    

    Respons yang berhasil akan terlihat seperti:

    StatusCode        : 200
    StatusDescription : OK
    Content           : {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY", "blockSize":0,"accessTime":1507934941392, "modificationTime":1507944835699,"replication":0, "permission":"770","ow..."
    RawContent        : HTTP/1.1 200 OK
                        Pragma: no-cache
                        x-ms-request-id: b4b31e16-e968-46a1-879a-3474aa7d4528
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosniff
                        Strict-Transport-Security: ma...
    Forms             : {}
    Headers           : {[Pragma, no-cache], [x-ms-request-id, b4b31e16-e968-46a1-879a-3474aa7d4528],
                        [x-ms-webhdfs-version, 17.04.22.00], [Status, 0x0]...}
    Images            : {}
    InputFields       : {}
    Links             : {}
    ParsedHtml        : System.__ComObject
    RawContentLength  : 556
    
  6. Sekarang coba unggah file ke Data Lake Store Anda. Pertama, buat file yang akan diunggah.

    echo "Test file." > Test1.txt
    
  7. Dengan menggunakan cmdlet PowerShell Invoke-WebRequest , buat permintaan ke titik akhir REST Data Lake Store Anda untuk mengunggah file ke folder yang Anda buat sebelumnya. Permintaan ini membutuhkan dua langkah.

    1. Buat permintaan dan dapatkan pengalihan ke tempat file harus diunggah.
    2. Unggah file . Ingatlah untuk mengatur nama folder dan file dengan tepat jika Anda menggunakan nilai yang berbeda dari yang ditunjukkan dalam tutorial ini.
    $HdfsRedirectResponse = Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
    

    Jika Anda memeriksa nilai $HdfsRedirectResponse, nilainya akan terlihat seperti respons berikut:

    PS C:\> $HdfsRedirectResponse
    
    StatusCode        : 307
    StatusDescription : Temporary Redirect
    Content           : {}
    RawContent        : HTTP/1.1 307 Temporary Redirect
                        Pragma: no-cache
                        x-ms-request-id: b7ab492f-b514-4483-aada-4aa0611d12b3
                        ContentLength: 0
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosn...
    Headers           : {[Pragma, no-cache], [x-ms-request-id, b7ab492f-b514-4483-aada-4aa0611d12b3], 
                        [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...}
    RawContentLength  : 0
    

    Selesaikan unggahan dengan mengirim permintaan ke titik akhir pengalihan:

    Invoke-WebRequest -Uri $HdfsRedirectResponse.Headers.Location -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
    

    Respons yang berhasil akan terlihat seperti:

    StatusCode        : 201
    StatusDescription : Created
    Content           : {}
    RawContent        : HTTP/1.1 201 Created
                        Pragma: no-cache
                        x-ms-request-id: 1e70f36f-ead1-4566-acfa-d0c3ec1e2307
                        ContentLength: 0
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosniff
                        Strict...
    Headers           : {[Pragma, no-cache], [x-ms-request-id, 1e70f36f-ead1-4566-acfa-d0c3ec1e2307],
                        [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...}
    RawContentLength  : 0
    

Terakhir, Anda dapat menggunakan API sistem file Data Lake Store lainnya untuk menambahkan dan mengunduh file, dan banyak lagi.

Nonaktifkan

Untuk menonaktifkan identitas yang ditetapkan sistem pada komputer virtual Anda, tetapkan status identitas yang ditetapkan sistem ke Nonaktif.

Cuplikan layar menunjukkan tab yang ditetapkan Sistem untuk komputer virtual tempat Anda dapat menonaktifkan status yang ditetapkan Sistem.

Menggunakan identitas terkelola yang ditetapkan sistem VM Windows untuk mengakses Azure Storage

Tutorial ini memperlihatkan cara menggunakan identitas terkelola yang ditetapkan sistem untuk komputer virtual (VM) Windows untuk mengakses Azure Storage. Anda akan mempelajari cara untuk:

  • Membuat kontainer blob di akun penyimpanan
  • Memberikan akses identitas terkelola yang ditetapkan sistem komputer virtual Windows ke akun penyimpanan
  • Mendapatkan akses dan menggunakannya untuk memanggil Azure Storage

Aktifkan

Mengaktifkan identitas terkelola yang ditetapkan sistem adalah pengalaman sekali klik. Anda dapat mengaktifkannya selama pembuatan VM atau di properti VM yang sudah ada.

Cuplikan layar menunjukkan tab yang ditetapkan Sistem untuk komputer virtual tempat Anda dapat mengaktifkann status yang ditetapkan Sistem.

Untuk mengaktifkan identitas terkelola yang ditetapkan sistem pada VM baru:

  1. Masuk ke portal Azure.

  2. Buat komputer virtual dengan identitas yang ditetapkan sistem diaktifkan.

Membuat akun penyimpanan

Di bagian ini, Anda membuat akun penyimpanan.

  1. Pilih tombol + Buat sumber daya yang ditemukan di sudut kiri atas portal Azure.

  2. Pilih Penyimpanan, lalu pilih Akun penyimpanan - blob, file, tabel, antrean.

  3. Di bidang Nama, masukkan nama untuk akun penyimpanan.

  4. Model penyebaran dan Jenis akun harus diatur ke Manajer sumber daya dan Penyimpanan (tujuan umum v1).

  5. Pastikan Langganan dan Grup Sumber Daya cocok dengan yang Anda tentukan saat Anda membuat komputer virtual di langkah sebelumnya.

  6. Pilih Buat.

    Cuplikan layar memperlihatkan cara membuat akun penyimpanan baru.

Membuat kontainer blob dan mengunggah file ke akun penyimpanan

File memerlukan penyimpanan blob sehingga Anda perlu membuat kontainer blob tempat untuk menyimpan file. Anda selanjutnya mengunggah file ke kontainer blob di akun penyimpanan baru.

  1. Navigasikan ke akun penyimpanan yang baru dibuat.

  2. Di bagian Blob Service , pilih Kontainer.

  3. Pilih + Kontainer di bagian atas halaman.

  4. Di bidang Kontainer baru, masukkan nama untuk kontainer, lalu di opsi Tingkat akses publik, pertahankan nilai default.

    Cuplikan layar memperlihatkan cara membuat kontainer penyimpanan.

  5. Menggunakan editor pilihan Anda, buat file berjudul hello world.txt di mesin lokal Anda. Buka file dan tambahkan teks Halo dunia!, lalu simpan.

  6. Pilih nama kontainer untuk mengunggah file ke kontainer yang baru dibuat, lalu pilih Unggah.

  7. Di panel Unggah blob, di bagian File, pilih ikon folder dan telusuri file hello_world.txt di komputer lokal Anda. Kemudian pilih file dan Unggah. Cuplikan layar memperlihatkan layar pengunggahan file teks.

Memberikan akses

Bagian ini memperlihatkan cara memberikan akses komputer virtual Anda ke kontainer Azure Storage. Anda dapat menggunakan identitas terkelola yang ditetapkan sistem komputer virtual untuk mengambil data dalam blob penyimpanan Azure.

  1. Navigasikan ke akun penyimpanan yang baru dibuat.

  2. Pilih Kontrol akses (IAM).

  3. Pilih Tambahkan>Tambahkan penetapan peran untuk membuka halaman Tambahkan penetapan peran.

  4. Tetapkan peran berikut. Untuk langkah-langkah mendetail, lihat Menetapkan peran Azure menggunakan portal Azure.

    Pengaturan Nilai
    Peran Pembaca Data Blob Penyimpanan
    Tetapkan akses ke Identitas terkelola
    Ditetapkan sistem Komputer Virtual
    Pilih <Komputer virtual Anda>

    Cuplikan layar yang memperlihatkan halaman untuk menambahkan penetapan peran.

Mengakses data

Azure Storage secara asli mendukung autentikasi Microsoft Entra, sehingga dapat langsung menerima token akses yang diperoleh menggunakan identitas terkelola. Pendekatan ini menggunakan integrasi Azure Storage dengan MICROSOFT Entra ID, dan berbeda dari menyediakan kredensial pada string koneksi.

Berikut adalah contoh kode .NET untuk membuka koneksi ke Azure Storage. Contoh ini menggunakan token akses, lalu membaca isi file yang Anda buat sebelumnya. Kode ini harus berjalan pada komputer virtual untuk dapat mengakses titik akhir identitas terkelola komputer virtual. .NET Framework 4.6 atau yang lebih tinggi diperlukan untuk menggunakan metode token akses. Ganti nilai <URI to blob file> yang sesuai. Anda bisa mendapatkan nilai ini dengan menavigasi ke file yang Anda buat dan unggah ke penyimpanan blob dan menyalin URL di bawah halaman Properti Gambaran Umum.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;

namespace StorageOAuthToken
{
    class Program
    {
        static void Main(string[] args)
        {
            //get token
            string accessToken = GetMSIToken("https://storage.azure.com/");

            //create token credential
            TokenCredential tokenCredential = new TokenCredential(accessToken);

            //create storage credentials
            StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);

            Uri blobAddress = new Uri("<URI to blob file>");

            //create block blob using storage credentials
            CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);

            //retrieve blob contents
            Console.WriteLine(blob.DownloadText());
            Console.ReadLine();
        }

        static string GetMSIToken(string resourceID)
        {
            string accessToken = string.Empty;
            // Build request to acquire MSI token
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
            request.Headers["Metadata"] = "true";
            request.Method = "GET";

            try
            {
                // Call /token endpoint
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                // Pipe response Stream to a StreamReader, and extract access token
                StreamReader streamResponse = new StreamReader(response.GetResponseStream());
                string stringResponse = streamResponse.ReadToEnd();
                JavaScriptSerializer j = new JavaScriptSerializer();
                Dictionary<string, string> list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
                accessToken = list["access_token"];
                return accessToken;
            }
            catch (Exception e)
            {
                string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
                return accessToken;
            }
        }
    }
}

Respons berisi isi file:

Hello world! :)

Nonaktifkan

Untuk menonaktifkan identitas yang ditetapkan sistem pada komputer virtual Anda, tetapkan status identitas yang ditetapkan sistem ke Nonaktif.

Cuplikan layar menunjukkan tab yang ditetapkan Sistem untuk komputer virtual tempat Anda dapat menonaktifkan status yang ditetapkan Sistem.

Menggunakan identitas terkelola yang ditetapkan sistem VM Windows untuk mengakses Azure Storage melalui kredensial SAS

Tutorial ini menunjukkan kepada Anda cara menggunakan identitas yang ditetapkan sistem untuk komputer virtual (VM) Windows untuk mendapatkan kredensial Tanda Tangan Akses Bersama (SAS) penyimpanan.

SAS layanan menyediakan kemampuan untuk memberikan akses terbatas ke objek di akun penyimpanan untuk waktu terbatas dan untuk layanan tertentu (dalam hal ini, layanan blob). SAS melakukan ini tanpa mengekspos kunci akses akun. Anda dapat menggunakan kredensial SAS seperti biasa untuk operasi penyimpanan; misalnya, saat menggunakan SDK penyimpanan. Tutorial ini menunjukkan pengunggahan dan pengunduhan blob menggunakan Azure Storage PowerShell.

Anda akan mempelajari cara:

  • Buat akun penyimpanan
  • Berikan akses komputer virtual Anda ke akun penyimpanan SAS di Resource Manager
  • Dapatkan token akses menggunakan identitas komputer virtual Anda, dan gunakan untuk mengambil SAS dari Resource Manager

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Buat akun penyimpanan

Jika Anda belum memilikinya, Anda perlu membuat akun penyimpanan. Jika tidak, ikuti langkah-langkah ini untuk memberikan akses identitas terkelola yang ditetapkan sistem komputer virtual Anda ke kredensial SAS dari akun penyimpanan yang ada.

  1. Pilih Penyimpanan, lalu Akun Penyimpanan.

  2. Di panel Buat akun penyimpanan, masukkan nama untuk akun penyimpanan.

  3. Pastikan model Penyebaran dan Jenis akun diatur ke Resource Manager dan Tujuan umum.

  4. Periksa untuk memastikan bahwa Langganan dan Grup Sumber Daya cocok dengan item yang Anda tentukan saat membuat VM di langkah sebelumnya.

  5. Pilih Buat untuk membuat akun penyimpanan Anda.

    Cuplikan layar memperlihatkan cara membuat akun penyimpanan baru.

Membuat kontainer blob di akun penyimpanan

Kemudian dalam tutorial, Anda akan mengunggah dan mengunduh file ke akun penyimpanan baru. Karena file memerlukan penyimpanan blob, Anda perlu membuat kontainer blob untuk menyimpan file.

  1. Navigasikan ke akun penyimpanan yang baru dibuat.

  2. Pilih tautan Kontainer di panel kiri, di bawah Blob service.

  3. Pilih + Kontainer di bagian atas halaman, lalu panel Kontainer baru akan muncul.

  4. Beri nama kontainer, tentukan tingkat akses, lalu Pilih OK. Nama yang Anda tentukan di sini digunakan nanti dalam tutorial.

    Cuplikan layar memperlihatkan cara membuat kontainer penyimpanan.

Memberikan akses identitas terkelola yang ditetapkan sistem komputer virtual Anda untuk menggunakan SAS penyimpanan

Azure Storage tidak secara asli mendukung autentikasi Microsoft Entra. Namun, Anda dapat menggunakan identitas terkelola untuk mengambil SAS penyimpanan dari Resource Manager, lalu menggunakan SAS untuk mengakses penyimpanan. Dalam langkah ini, Anda memberikan akses identitas terkelola yang ditetapkan sistem komputer virtual ke akun penyimpanan Anda SAS.

  1. Arahkan kembali ke akun penyimpanan yang baru dibuat.

  2. Pilih Kontrol akses (IAM).

  3. Pilih Tambahkan>Tambahkan penetapan peran untuk membuka halaman Tambahkan penetapan peran.

  4. Tetapkan peran berikut. Untuk langkah-langkah mendetail, lihat Menetapkan peran Azure menggunakan portal Azure.

    Pengaturan Nilai
    Peran Kontributor akun penyimpanan
    Tetapkan akses ke Identitas terkelola
    Ditetapkan sistem Mesin virtual
    Pilih <komputer virtual Windows Anda>

    Cuplikan layar yang memperlihatkan halaman untuk menambahkan penetapan peran.

Mendapatkan token akses menggunakan identitas VM dan menggunakannya untuk memanggil Azure Resource Manager

Untuk sisa tutorial ini, Anda bekerja dari VM Anda. Anda perlu menggunakan cmdlet PowerShell Azure Resource Manager dalam bagian ini. Jika Anda belum menginstal PowerShell, unduh versi terbaru sebelum melanjutkan.

  1. Di portal Azure, navigasikan ke Komputer Virtual, buka komputer virtual Windows Anda, lalu dari halaman Gambaran Umum Pilih Sambungkan di bagian atas.

  2. Masukkan Nama Pengguna dan Kata Sandi yang Anda tambahkan saat membuat VM Windows.

  3. Buat Koneksi Desktop Jarak Jauh dengan komputer virtual.

  4. Buka PowerShell di sesi jarak jauh, lalu gunakan cmdlet PowerShell Invoke-WebRequest untuk mendapatkan token Azure Resource Manager dari identitas terkelola lokal untuk titik akhir sumber daya Azure.

       $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Method GET -Headers @{Metadata="true"}
    

    Catatan

    Nilai resource parameter harus sama persis dengan apa yang diharapkan oleh ID Microsoft Entra. Saat menggunakan ID sumber daya Azure Resource Manager, Anda harus menyertakan garis miring pada URI.

    Selanjutnya, ekstrak content elemen , yang disimpan sebagai string berformat JavaScript Object Notation (JSON) dalam $response objek .

    $content = $response.Content | ConvertFrom-Json
    

    Selanjutnya, ekstrak token akses dari respons tersebut.

    $ArmToken = $content.access_token
    

Dapatkan kredensial SAS dari Azure Resource Manager untuk memanggil penyimpanan

Terakhir, gunakan PowerShell untuk memanggil Resource Manager menggunakan token akses yang Anda ambil di bagian sebelumnya. Anda menggunakan token ini untuk membuat kredensial SAS penyimpanan. Setelah Anda memiliki kredensial SAS, Anda dapat memanggil operasi penyimpanan lainnya.

Untuk permintaan ini, gunakan parameter permintaan HTTP berikut untuk membuat kredensial SAS:

{
    "canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
    "signedResource":"c",              // The kind of resource accessible with the SAS, in this case a container (c).
    "signedPermission":"rcw",          // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite. Order is important.
    "signedProtocol":"https",          // Require the SAS be used on https protocol.
    "signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}

Parameter di sini disertakan dalam isi POST permintaan untuk kredensial SAS. Untuk informasi selengkapnya tentang parameter untuk membuat kredensial SAS, lihat referensi REST SAS Layanan Daftar.

  1. Konversi parameter ke JSON, lalu panggil titik akhir penyimpanan listServiceSas untuk membuat kredensial SAS:

    $params = @{canonicalizedResource="/blob/<STORAGE-ACCOUNT-NAME>/<CONTAINER-NAME>";signedResource="c";signedPermission="rcw";signedProtocol="https";signedExpiry="2017-09-23T00:00:00Z"}
    $jsonParams = $params | ConvertTo-Json
    
    $sasResponse = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE-ACCOUNT-NAME>/listServiceSas/?api-version=2017-06-01 -Method POST -Body $jsonParams -Headers @{Authorization="Bearer $ArmToken"}
    

    Catatan

    URL peka huruf besar/kecil, jadi pastikan Anda menggunakan kasus yang sama persis yang digunakan saat Anda menamai grup sumber daya, termasuk huruf besar "G" di resourceGroups.

  2. Selanjutnya, ekstrak kredensial SAS dari respons:

    $sasContent = $sasResponse.Content | ConvertFrom-Json
    $sasCred = $sasContent.serviceSasToken
    
  3. Jika Anda memeriksa kredensial SAS, Anda akan melihat sesuatu seperti ini:

    PS C:\> $sasCred
    sv=2015-04-05&sr=c&spr=https&se=2017-09-23T00%3A00%3A00Z&sp=rcw&sig=JVhIWG48nmxqhTIuN0uiFBppdzhwHdehdYan1W%2F4O0E%3D
    
  4. Buat file yang disebut test.txt. Kemudian gunakan kredensial SAS untuk mengautentikasi dengan New-AzStorageContent cmdlet, mengunggah file ke kontainer blob, lalu mengunduh file.

    echo "This is a test text file." > test.txt
    
  5. Pastikan untuk menginstal cmdlet Azure Storage terlebih dahulu, menggunakan Install-Module Azure.Storage. Kemudian unggah blob yang baru saja Anda buat, menggunakan cmdlet PowerShell Set-AzStorageBlobContent :

    $ctx = New-AzStorageContext -StorageAccountName <STORAGE-ACCOUNT-NAME> -SasToken $sasCred
    Set-AzStorageBlobContent -File test.txt -Container <CONTAINER-NAME> -Blob testblob -Context $ctx
    

    Respons:

    ICloudBlob        : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
    BlobType          : BlockBlob
    Length            : 56
    ContentType       : application/octet-stream
    LastModified      : 9/21/2017 6:14:25 PM +00:00
    SnapshotTime      :
    ContinuationToken :
    Context           : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext
    Name              : testblob
    
  6. Anda juga dapat mengunduh blob yang baru saja Anda unggah, menggunakan Get-AzStorageBlobContent cmdlet PowerShell:

    Get-AzStorageBlobContent -Blob testblob -Container <CONTAINER-NAME> -Destination test2.txt -Context $ctx
    

    Respons:

    ICloudBlob        : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
    BlobType          : BlockBlob
    Length            : 56
    ContentType       : application/octet-stream
    LastModified      : 9/21/2017 6:14:25 PM +00:00
    SnapshotTime      :
    ContinuationToken :
    Context           : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext
    Name              : testblob
    

Menggunakan identitas terkelola yang ditetapkan sistem komputer virtual Windows untuk mengakses Azure SQL Database

Tutorial ini memperlihatkan cara menggunakan identitas yang ditetapkan sistem untuk komputer virtual (VM) Windows untuk mengakses Microsoft Azure SQL Database. Identitas Layanan Terkelola dikelola secara otomatis oleh Azure dan memungkinkan Anda mengautentikasi ke layanan yang mendukung autentikasi Microsoft Entra, tanpa perlu menyisipkan kredensial ke dalam kode Anda.

Anda akan mempelajari cara:

  • Memberikan akses komputer virtual Anda ke Microsoft Azure SQL Database
  • Mengaktifkan autentikasi Microsoft Entra
  • Membuat pengguna yang terkandung dalam database yang mewakili identitas yang ditetapkan sistem komputer virtual
  • Mendapatkan token akses menggunakan identitas komputer virtual dan menggunakannya untuk meminta Microsoft Azure SQL Database

Aktifkan

Mengaktifkan identitas terkelola yang ditetapkan sistem adalah pengalaman sekali klik. Anda dapat mengaktifkannya selama pembuatan VM atau di properti VM yang sudah ada.

Cuplikan layar menunjukkan tab yang ditetapkan Sistem untuk komputer virtual tempat Anda dapat mengaktifkann status yang ditetapkan Sistem.

Untuk mengaktifkan identitas terkelola yang ditetapkan sistem pada VM baru:

  1. Masuk ke portal Azure.

  2. Buat komputer virtual dengan identitas yang ditetapkan sistem diaktifkan.

Memberikan akses

Untuk memberikan akses VM Anda ke database di Azure SQL Database, gunakan server SQL logis yang sudah ada atau buat yang baru. Untuk membuat server dan database baru menggunakan portal Azure, ikuti mulai cepat Azure SQL. Ada juga mulai cepat yang menggunakan Microsoft Azure CLI dan Microsoft Azure PowerShell di dokumentasi Microsoft Azure SQL.

Ikuti langkah-langkah ini untuk memberikan akses VM Anda ke database:

  1. Aktifkan autentikasi Microsoft Entra untuk server.
  2. Buat pengguna yang terkandung dalam database yang mewakili identitas yang ditetapkan sistem komputer virtual.

Mengaktifkan autentikasi Microsoft Entra

Untuk mengonfigurasi autentikasi Microsoft Entra:

  1. Di portal Azure, pilih Server SQL dari navigasi sebelah kiri.
  2. Pilih server SQL yang ingin Anda aktifkan untuk autentikasi Microsoft Entra.
  3. Di bagian Pengaturan bilah, pilih Admin Direktori Aktif.
  4. Di bilah perintah, pilih Tetapkan admin.
  5. Pilih akun pengguna Microsoft Entra yang akan dijadikan administrator untuk server, dan pilih Pilih.
  6. Di bilah perintah, pilih Simpan.

Membuat pengguna yang terkandung

Bagian ini memperlihatkan kepada Anda cara membuat pengguna mandiri dalam database yang mewakili identitas yang ditetapkan sistem VM. Untuk langkah ini, Anda memerlukan Microsoft SQL Server Management Studio (SSMS) yang terinstal. Sebelum memulai, mungkin berguna untuk meninjau artikel berikut untuk latar belakang integrasi Microsoft Entra:

Database SQL memerlukan nama tampilan ID Microsoft Entra yang unik. Dengan ini, akun Microsoft Entra, seperti pengguna, grup, dan perwakilan layanan (aplikasi), dan nama VM yang diaktifkan untuk identitas terkelola harus ditentukan secara unik dalam ID Microsoft Entra khusus untuk nama tampilan yang sesuai. SQL memeriksa nama tampilan ID Microsoft Entra selama pembuatan T-SQL pengguna tersebut. Jika nama tampilan tidak unik, perintah gagal dan meminta Anda untuk memberikan nama tampilan ID Microsoft Entra yang unik untuk setiap akun tertentu.

Untuk membuat pengguna mandiri

  1. Buka SQL Server Management Studio.

  2. Dalam dialog Sambungkan ke Server, masukkan nama server Anda di bidang Nama server.

  3. Di bidang Autentikasi, pilih Direktori Aktif - Universal dengan dukungan MFA.

  4. Di bidang Nama pengguna, masukkan nama akun Microsoft Entra yang Anda tetapkan sebagai administrator server; misalnya, cjensen@fabrikam.com.

  5. Pilih Opsi.

  6. Di bidang Sambungkan ke database, masukkan nama database non-sistem yang ingin Anda konfigurasi.

  7. Pilih Sambungkan, lalu selesaikan proses masuk.

  8. Di Object Explorer, perluas folder Database.

  9. Klik kanan pada database pengguna, lalu pilih Kueri baru.

  10. Di jendela kueri, masukkan baris berikut, dan pilih Jalankan di toolbar:

    Catatan

    VMName dalam perintah berikut adalah nama komputer virtual tempat Anda mengaktifkan identitas yang ditetapkan sistem di bagian prasyarat.

    CREATE USER [VMName] FROM EXTERNAL PROVIDER
    

    Perintah harus berhasil diselesaikan dengan membuat pengguna yang terkandung untuk identitas yang ditetapkan sistem VM.

  11. Kosongkan jendela kueri, masukkan baris berikut, dan pilih Jalankan di toolbar:

    Catatan

    VMName dalam perintah berikut adalah nama VM tempat Anda mengaktifkan identitas yang ditetapkan sistem di bagian prasyarat.

    Jika Anda mengalami kesalahan "Prinsipal VMName memiliki nama tampilan duplikat", tambahkan pernyataan CREATE USER dengan WITH OBJECT_ID='xxx'.

    ALTER ROLE db_datareader ADD MEMBER [VMName]
    

    Perintah harus berhasil diselesaikan dengan memberi pengguna yang terkandung kemampuan untuk membaca seluruh database.

Kode yang berjalan di komputer virtual sekarang bisa mendapatkan token menggunakan identitas terkelola yang ditetapkan sistem dan menggunakan token untuk mengautentikasi ke server.

Mengakses data

Bagian ini menunjukkan kepada Anda cara mendapatkan token akses menggunakan identitas terkelola yang ditetapkan sistem VM dan menggunakannya untuk memanggil Azure SQL. Azure SQL secara asli mendukung autentikasi Microsoft Entra, sehingga dapat langsung menerima token akses yang diperoleh menggunakan identitas terkelola untuk sumber daya Azure. Metode ini tidak memerlukan penyediaan kredensial pada string koneksi.

Berikut adalah contoh kode .NET untuk membuka koneksi ke SQL menggunakan autentikasi Identitas Terkelola Direktori Aktif. Kode harus berjalan pada komputer virtual untuk dapat mengakses titik akhir identitas terkelola yang ditetapkan sistem komputer virtual.

.NET Framework 4.6.2 atau lebih tinggi atau .NET Core 3.1 atau yang lebih tinggi diperlukan untuk menggunakan metode ini. Ganti nilai AZURE-SQL-SERVERNAME dan DATABASE yang sesuai dan tambahkan referensi NuGet ke pustaka Microsoft.Data.SqlClient.

using Microsoft.Data.SqlClient;

try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();

Catatan

Anda dapat menggunakan identitas terkelola saat bekerja dengan opsi pemrograman lain dengan menggunakan SDK.

Atau, gunakan PowerShell untuk menguji penyiapan end-to-end tanpa harus menulis dan menyebarkan aplikasi di VM.

  1. Di portal, navigasikan ke Komputer Virtual, buka VM Windows Anda, lalu di Gambaran Umum, pilih Sambungkan.

  2. Masukkan kredensial admin VM yang Anda tambahkan saat membuat VM Windows.

  3. Sekarang setelah Anda membuat Koneksi Desktop Jarak Jauh dengan VM, buka PowerShell dalam sesi jarak jauh.

  4. Menggunakan cmdlet PowerShell Invoke-WebRequest , buat permintaan ke titik akhir identitas terkelola lokal untuk mendapatkan token akses untuk Azure SQL.

        $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}
    

    Mengonversi respons dari objek JSON menjadi objek PowerShell.

    $content = $response.Content | ConvertFrom-Json
    

    Mengekstrak token akses dari respons.

    $AccessToken = $content.access_token
    
  5. Buka sambungan ke server. Ingat agar mengganti nilai untuk AZURE-SQL-SERVERNAME dan DATABASE.

    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;"
    $SqlConnection.AccessToken = $AccessToken
    $SqlConnection.Open()
    

    Selanjutnya, buat dan kirimkan permintaan ke server. Ingatlah untuk mengganti nilai untuk TABLE.

    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlCmd.CommandText = "SELECT * from <TABLE>;"
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $SqlCmd
    $DataSet = New-Object System.Data.DataSet
    $SqlAdapter.Fill($DataSet)
    

Terakhir, periksa nilai $DataSet.Tables[0] untuk menampilkan hasil kueri.

Nonaktifkan

Untuk menonaktifkan identitas yang ditetapkan sistem pada komputer virtual Anda, tetapkan status identitas yang ditetapkan sistem ke Nonaktif.

Cuplikan layar menunjukkan tab yang ditetapkan Sistem untuk komputer virtual tempat Anda dapat menonaktifkan status yang ditetapkan Sistem.

Menggunakan identitas terkelola yang ditetapkan sistem VM Windows untuk mengakses Azure Key Vault

Tutorial ini menunjukkan kepada Anda bagaimana komputer virtual Windows (komputer virtual) dapat menggunakan identitas terkelola yang ditetapkan sistem untuk mengakses Azure Key Vault. Key Vault memungkinkan aplikasi klien Anda menggunakan rahasia untuk mengakses sumber daya yang tidak diamankan oleh ID Microsoft Entra. Identitas terkelola dikelola secara otomatis oleh Azure. Mereka memungkinkan Anda mengautentikasi ke layanan yang mendukung autentikasi Microsoft Entra, tanpa menyertakan informasi autentikasi dalam kode Anda.

Anda akan mempelajari cara:

  • Memberikan akses komputer virtual Anda ke rahasia yang disimpan di Key Vault
  • Mendapatkan token akses menggunakan identitas komputer virtual dan menggunakannya untuk mengambil rahasia dari Key Vault

Membuat Key Vault

Tip

Langkah-langkah dalam artikel ini mungkin sedikit berbeda berdasarkan portal tempat Anda memulai.

Bagian ini menunjukkan cara memberi komputer virtual Anda akses ke rahasia yang disimpan di Key Vault. Saat Anda menggunakan identitas terkelola untuk sumber daya Azure, kode Anda bisa mendapatkan token akses untuk mengautentikasi ke sumber daya yang mendukung autentikasi Microsoft Entra. 

Namun, tidak semua layanan Azure mendukung autentikasi Microsoft Entra. Untuk menggunakan identitas terkelola pada sumber daya Azure dengan layanan tersebut, simpan kredensial layanan di Azure Key Vault, dan gunakan identitas terkelola komputer virtual untuk mengakses Key Vault guna mengambil kredensial.

Pertama, Anda perlu membuat Key Vault dan memberikan akses identitas terkelola yang ditetapkan sistem komputer virtual Anda ke Key Vault.

  1. Masuk ke portal Azure.

  2. Di bagian atas bilah navigasi kiri, pilih Buat sumber daya.

  3. Dalam kotak Cari Marketplace ketik di Key Vault dan tekan Enter.

  4. Pilih Key Vault dari hasil, lalu pilih Buat.

  5. Berikan Nama untuk brankas kunci baru.

    Cuplikan layar Buat Brankas kunci.

  6. Isi semua informasi yang diperlukan. Pastikan Anda memilih langganan dan grup sumber daya yang Anda gunakan untuk tutorial ini.

  7. Pilih Tinjau+ buat.

  8. Pilih Buat.

Buat rahasia

Selanjutnya, Anda perlu menambahkan rahasia ke Key Vault, sehingga Anda dapat mengambilnya nanti menggunakan kode yang berjalan di VM Anda. Di bagian ini Anda menggunakan PowerShell, tetapi konsep yang sama berlaku untuk kode apa pun yang Anda jalankan di VM Anda.

  1. Arahkan ke Key Vault yang baru Anda buat.

  2. Pilih Rahasia, lalu pilih Tambahkan.

  3. Pilih Buat/impor.

  4. Dari layar Buat rahasia, di opsi Unggah biarkan Manual dipilih.

  5. Masukkan nama dan nilai untuk rahasia tersebut. Nilainya bisa dalam bentuk apa pun yang Anda inginkan. 

  6. Biarkan tanggal aktivasi dan tanggal kedaluwarsa jelas, dan biarkan opsi Diaktifkan diatur ke Ya

  7. Pilih Buat untuk membuat rahasia.

    Cuplikan layar memperlihatkan cara membuat rahasia.

Memberikan akses

Identitas terkelola yang digunakan oleh VM perlu diberikan akses untuk membaca rahasia yang disimpan Key Vault.

  1. Arahkan ke Key Vault yang baru Anda buat.

  2. Pilih Kebijakan Akses dari menu di sebelah kiri.

  3. Pilih Tambahkan Kebijakan Akses.

    Cuplikan layar memperlihatkan layar Kebijakan akses brankas kunci.

  4. Di bagian Tambahkan kebijakan akses, di bawah Konfigurasikan dari templat (opsional), pilih Manajemen Rahasia dari menu drop-down.

  5. Pilih Pilih Utama, lalu di bidang pencarian masukkan nama VM yang Anda buat sebelumnya. 

  6. Pilih VM dalam daftar hasil, lalu pilih Pilih.

  7. Pilih Tambahkan.

  8. Pilih Simpan.

Mengakses data

Bagian ini menunjukkan kepada Anda cara mendapatkan token akses menggunakan identitas VM dan menggunakannya untuk mengambil rahasia dari Key Vault. Jika Anda belum menginstal PowerShell 4.3.1 atau yang lebih baru, Anda harus mengunduh dan menginstal versi terbaru.

Catatan

Metode penggunaan PowerShell untuk mengautentikasi dan mengambil rahasia lebih disukai dalam skenario di mana identitas terkelola secara khusus diperlukan, atau saat menyematkan proses dalam kode aplikasi.

Pertama, gunakan identitas terkelola yang ditetapkan sistem VM untuk mendapatkan token akses untuk mengautentikasi ke Key Vault:

  1. Di portal, navigasikan ke Komputer Virtual dan buka VM Windows Anda, lalu di Gambaran Umum, pilih Sambungkan.
  2. Masukkan Nama Pengguna dan Kata Sandi yang Anda tambahkan saat membuat VM Windows.
  3. Sekarang setelah Anda membuat Koneksi Desktop Jarak Jauh dengan VM, buka PowerShell dalam sesi jarak jauh.
  4. Di PowerShell, panggil permintaan web pada penyewa guna mendapatkan token untuk host lokal di port khusus untuk komputer virtual.

Catatan

Jika menggunakan sovereign cloud, seperti GCC-H, gunakan titik vault.usgovcloudapi.net akhir alih-alih vault.azure.net di cmdlet PowerShell.

Contoh permintaan PowerShell:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"} 

Catatan

Saat bekerja dengan sovereign cloud, Anda perlu membuat penyesuaian pada titik akhir yang ditentukan di akhir cmdlet.

Misalnya, vault.usgovcloudapi.net harus digunakan saat bekerja dengan Azure Government Cloud, dengan ini menjadi hasil akhirnya:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.usgovcloudapi.net' -Method GET -Headers @{Metadata="true"

Untuk mengonfirmasi bahwa akhiran cocok dengan lingkungan Anda, tinjau artikel Gambaran umum keamanan Azure Key Vault.

Respons akan terlihat seperti ini:

Cuplikan layar memperlihatkan permintaan dengan respons token.

Selanjutnya, ekstrak token akses dari respons tersebut.

   $KeyVaultToken = $Response.access_token

Terakhir, gunakan cmdlet PowerShell Invoke-WebRequest untuk mengambil rahasia yang Anda buat sebelumnya di Key Vault, meneruskan token akses di header Otorisasi. Anda akan memerlukan URL Key Vault, yang ada di bagian Penting dari halaman Gambaran Umum Key Vault.

Invoke-RestMethod -Uri https://<your-key-vault-URL>/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"}

Respons akan terlihat seperti ini:

  value       id                                                                                    attributes
  -----       --                                                                                    ----------
  'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/50644e90b13249b584c44b9f712f2e51 @{enabled=True; created=16…

Setelah mengambil rahasia dari Key Vault, Anda dapat menggunakannya untuk mengautentikasi ke layanan yang memerlukan nama dan kata sandi.

Membersihkan sumber daya

Terakhir, ketika Anda ingin membersihkan sumber daya, masuk ke portal Azure, pilih Grup sumber daya, lalu temukan dan pilih grup sumber daya yang dibuat dalam proses tutorial ini (seperti mi-test). Kemudian gunakan perintah Hapus grup sumber daya.

Atau, Anda juga dapat membersihkan sumber daya menggunakan PowerShell atau CLI.

Menggunakan identitas terkelola yang ditetapkan sistem VM Windows untuk mengakses resource manager

Tip

Langkah-langkah dalam artikel ini mungkin sedikit berbeda berdasarkan portal tempat Anda memulai.

Tutorial ini menjelaskan cara membuat identitas yang ditetapkan sistem, menetapkannya ke Windows Virtual Machine (VM), lalu menggunakan identitas tersebut untuk mengakses AZURE Resource Manager API. Identitas Layanan Terkelola dikelola secara otomatis oleh Azure. Mereka mengaktifkan autentikasi ke layanan yang mendukung autentikasi Microsoft Entra, tanpa perlu menyematkan kredensial ke dalam kode Anda.

Anda akan mempelajari cara:

  • Berikan akses VM Anda ke Azure Resource Manager.
  • Dapatkan token akses dengan menggunakan identitas terkelola yang ditetapkan sistem VM untuk mengakses Resource Manager.
  1. Masuk ke portal Azure dengan akun administrator Anda.

  2. Navigasi ke tab Grup Sumber Daya.

  3. Pilih Grup Sumber Daya yang ingin Anda berikan akses identitas terkelola VM.

  4. Di panel kiri, pilih Kontrol akses (IAM).

  5. Pilih Tambahkan, lalu pilih Tambahkan penetapan peran.

  6. Di tab Peran , pilih Pembaca. Peran ini memungkinkan melihat semua sumber daya, tetapi tidak memungkinkan Anda untuk membuat perubahan apa pun.

  7. Di tab Anggota , untuk opsi Tetapkan akses ke , pilih Identitas terkelola, lalu pilih + Pilih anggota.

  8. Pastikan langganan yang tepat tercantum di menu dropdown Langganan . Untuk Grup Sumber Daya, pilih Semua grup sumber daya.

  9. Untuk menu dropdown Kelola identitas , pilih Komputer Virtual.

  10. Untuk Pilih, pilih VM Anda di menu dropdown, lalu pilih Simpan.

    Cuplikan layar yang memperlihatkan penambahan peran pembaca ke identitas terkelola.

Mendapatkan token akses

Gunakan identitas terkelola yang ditetapkan sistem VM dan panggil Resource Manager untuk mendapatkan token akses.

Untuk menyelesaikan langkah-langkah ini, Anda memerlukan klien SSH. Jika menggunakan Windows, Anda dapat menggunakan klien SSH di Subsistem Windows untuk Linux. Jika Anda memerlukan bantuan untuk mengonfigurasi kunci klien SSH Anda, lihat Cara Menggunakan kunci SSH dengan Windows di Microsoft Azure, atau Cara membuat dan menggunakan pasangan kunci publik dan privat SSH untuk komputer virtual Linux di Microsoft Azure.

  1. Di portal, navigasikan ke VM Linux Anda dan di Gambaran Umum, pilih Sambungkan.
  2. Sambungkan ke komputer virtual dengan klien SSH pilihan Anda.
  3. Di jendela terminal, menggunakan curl, buat permintaan ke identitas terkelola lokal untuk titik akhir sumber daya Azure guna mendapatkan token akses untuk Azure Resource Manager.   Permintaan curl untuk token akses ada di bawah.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Catatan

Nilai resource parameter harus sama persis dengan apa yang diharapkan oleh ID Microsoft Entra. Dalam kasus ID sumber daya Resource Manager, Anda harus menyertakan garis miring berikutnya pada URI.

Respons mencakup token akses yang Anda butuhkan untuk mengakses Azure Resource Manager.

Respons:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Gunakan token akses ini untuk mengakses Azure Resource Manager; misalnya, untuk membaca detail grup sumber daya tempat Anda sebelumnya memberikan akses VM ini. Ganti nilai <SUBSCRIPTION-ID> , <RESOURCE-GROUP> dan <ACCESS-TOKEN> dengan nilai yang Anda buat sebelumnya.

Catatan

URL peka huruf besar/kecil, jadi pastikan jika Anda menggunakan kasus yang tepat seperti yang Anda gunakan sebelumnya saat Anda menamai grup sumber daya, dan huruf besar "G" di "resourceGroup".

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

Respons kembali dengan informasi grup sumber daya tertentu:

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

Menggunakan identitas terkelola yang ditetapkan pengguna pada VM Windows untuk mengakses Azure Resource Manager

Tutorial ini menjelaskan cara membuat identitas yang ditetapkan pengguna, menetapkannya ke Windows Virtual Machine (VM), lalu menggunakan identitas tersebut untuk mengakses AZURE Resource Manager API. Identitas Layanan Terkelola dikelola secara otomatis oleh Azure. Mereka mengaktifkan autentikasi ke layanan yang mendukung autentikasi Microsoft Entra, tanpa perlu menyematkan kredensial ke dalam kode Anda.

Anda akan mempelajari cara:

  • Membuat identitas terkelola yang ditetapkan pengguna
  • Menetapkan identitas yang ditetapkan pengguna ke Windows VM
  • Memberikan akses identitas yang ditetapkan pengguna ke Grup Sumber Daya di Azure Resource Manager
  • Mendapatkan token akses menggunakan identitas yang ditetapkan pengguna dan menggunakannya untuk menghubungi Azure Resource Manager
  • Membaca properti Grup Sumber Daya

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Mengonfigurasi Azure PowerShell secara lokal

Untuk menjalankan skrip dalam contoh ini, Anda memiliki dua opsi:

  • Gunakan Azure Cloud Shell, yang dapat Anda buka menggunakan tombol Coba di sudut kanan atas blok kode.
  • Jalankan skrip secara lokal dengan Azure PowerShell, seperti yang dijelaskan di bagian berikutnya.

Untuk menggunakan Azure PowerShell secara lokal untuk tutorial ini (daripada menggunakan Cloud Shell), selesaikan langkah-langkah berikut:

  1. Instal versi terbaru Azure PowerShell, jika Anda belum melakukannya.

  2. Masuk ke Azure:

    Connect-AzAccount
    
  3. Instal versi terbaru dari PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Anda mungkin perlu Exit dari sesi PowerShell saat ini setelah menjalankan perintah ini untuk langkah berikutnya.

  4. Instal versi modul yang Az.ManagedServiceIdentity dirilis. Anda memerlukan ini untuk melakukan operasi identitas terkelola yang ditetapkan pengguna dalam tutorial ini:

    Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
    

Aktifkan

Untuk skenario berdasarkan identitas yang ditetapkan pengguna, Anda perlu melakukan langkah-langkah berikut di bagian ini:

  1. Buat identitas.
  2. Tetapkan identitas yang baru dibuat.

Membuat identitas

Bagian ini memperlihatkan kepada Anda cara membuat identitas yang ditetapkan pengguna, yang dibuat sebagai sumber daya Azure mandiri. Dengan menggunakan cmdlet New-AzUserAssignedIdentity, Azure membuat identitas di penyewa Microsoft Entra yang dapat Anda tetapkan ke satu atau beberapa instans layanan Azure.

Penting

Saat Anda membuat identitas terkelola yang ditetapkan pengguna, nama harus dimulai dengan huruf atau angka, dan dapat menyertakan kombinasi karakter alfanumerik, tanda hubung (-) dan garis bawah (_). Untuk penugasan ke komputer virtual atau skala komputer virtual yang diatur agar berfungsi dengan baik, namanya dibatasi hingga 24 karakter. Untuk informasi selengkapnya, lihat Tanya Jawab Umum dan masalah yang sering ditanyakan.

New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1

Respons berisi detail untuk identitas yang ditetapkan pengguna yang dibuat, mirip dengan contoh berikut. Id Tentukan nilai dan ClientId untuk identitas yang ditetapkan pengguna Anda, karena digunakan dalam langkah-langkah berikutnya:

{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: aaaabbbb-0000-cccc-1111-dddd2222eeee
PrincipalId: aaaaaaaa-bbbb-cccc-1111-222222222222
ClientId: 00001111-aaaa-2222-bbbb-3333cccc4444
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb&aid=00001111-aaaa-2222-bbbb-3333cccc4444
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}

Menetapkan identitas

Bagian ini memperlihatkan kepada Anda cara Menetapkan identitas yang ditetapkan pengguna ke VM Windows. Identitas yang ditetapkan pengguna dapat digunakan oleh klien di beberapa sumber daya Azure. Gunakan perintah berikut untuk menetapkan identitas yang ditetapkan pengguna ke satu VM. Gunakan properti Id yang dikembalikan di langkah sebelumnya untuk parameter -IdentityID.

$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVM -ResourceGroupName TestRG -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"

Memberikan akses

Bagian ini memperlihatkan kepada Anda cara memberikan akses identitas yang ditetapkan pengguna ke grup sumber daya di Azure Resource Manager. Identitas terkelola untuk sumber daya Azure menyediakan identitas yang dapat digunakan kode Anda untuk meminta token akses untuk mengautentikasi ke API sumber daya yang mendukung autentikasi Microsoft Entra. Dalam tutorial ini, kode Anda akan mengakses API Azure Resource Manager.

Sebelum kode dapat mengakses API, Anda harus memberikan akses identitas ke sumber daya di Azure Resource Manager. Dalam hal ini, Anda mengakses grup sumber daya tempat VM berada. Perbarui nilai untuk <SUBSCRIPTIONID> yang sesuai dengan lingkungan Anda.

$spID = (Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1).principalid
New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/"

Respons berisi detail penetapan peran yang dibuat, serupa dengan contoh berikut:

RoleAssignmentId: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: 00000000-0000-0000-0000-000000000000
ObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
ObjectType: ServicePrincipal
CanDelegate: False

Mengakses data

Tip

Langkah-langkah dalam artikel ini mungkin sedikit berbeda berdasarkan portal tempat Anda memulai.

Mendapatkan token akses

Untuk sisa tutorial, Anda bekerja dari VM yang Anda buat sebelumnya.

  1. Masuk ke portal Azure.

  2. Di portal, navigasikan ke Komputer Virtual dan buka VM Windows. Di Gambaran Umum, pilih Sambungkan.

  3. Masukkan Nama Pengguna dan Kata Sandi yang Anda gunakan saat membuat VM Windows.

  4. Sekarang setelah Anda membuat Koneksi Desktop Jarak Jauh dengan VM Anda, buka PowerShell dalam sesi jarak jauh.

  5. Menggunakan cmdlet PowerShell Invoke-WebRequest , buat permintaan ke identitas terkelola lokal untuk titik akhir sumber daya Azure untuk mendapatkan token akses untuk Azure Resource Manager. Nilai client_id adalah nilai yang dikembalikan saat Anda membuat identitas terkelola yang ditetapkan pengguna.

    $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"}
    $content = $response.Content | ConvertFrom-Json
    $ArmToken = $content.access_token
    

Membaca properti

Terakhir, gunakan token akses yang diambil pada langkah sebelumnya untuk mengakses Azure Resource Manager, lalu baca properti grup sumber daya yang Anda berikan akses identitas yang ditetapkan pengguna. Ganti <SUBSCRIPTION ID> dengan ID langganan dari lingkungan Anda.

(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content

Respons berisi informasi Grup Sumber Daya tertentu, serupa dengan contoh berikut:

{"id":"/subscriptions/<SUBSCRIPTIONID>/resourceGroups/myResourceGroupVM","name":"myResourceGroupVM","location":"eastus","properties":{"provisioningState":"Succeeded"}}

Pelajari lebih lanjut