Tutorial: Menggunakan identitas yang ditetapkan sistem komputer virtual Linux untuk mengakses kredensial SAS

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.

Tutorial ini memperlihatkan cara menggunakan identitas terkelola yang ditetapkan sistem untuk komputer virtual (VM) Linux untuk mendapatkan kredensial Tanda Tangan Akses Bersama (SAS) penyimpanan. Secara khusus, kredensial SAS Layanan.

Catatan

Kunci SAS yang dibuat dalam tutorial ini tidak akan dibatasi/terikat dengan komputer virtual.

SAS Layanan memberikan akses terbatas ke objek di akun penyimpanan tanpa mengekspos kunci akses akun. Akses dapat diberikan untuk waktu yang terbatas dan layanan tertentu. Anda dapat menggunakan kredensial SAS seperti biasa saat melakukan operasi penyimpanan, misalnya saat menggunakan SDK Penyimpanan. Untuk tutorial ini, kami menunjukkan cara mengunggah dan mengunduh blob menggunakan Azure Storage CLI. Anda akan mempelajari cara:

  • Buat akun penyimpanan
  • Membuat kontainer blob di 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

Prasyarat

Buat akun penyimpanan

Jika Anda belum memilikinya, Anda sekarang akan membuat akun penyimpanan. Anda juga dapat melewati langkah ini dan memberikan akses identitas terkelola yang ditetapkan sistem komputer virtual Anda ke kunci akun penyimpanan yang ada.

  1. Klik tombol +/Buat layanan baru yang ditemukan di sudut kiri atas portal Azure.

  2. Pilih Penyimpanan, lalu Akun Penyimpanan, dan panel baru “Buat akun penyimpanan” akan tampil.

  3. Masukkan Nama untuk akun penyimpanan, yang akan Anda gunakan nanti.

  4. Model penyebaran dan Jenis akun masing-masing harus diatur ke "Manajer Sumber Daya" dan "Tujuan umum".

  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 layar pembuatan akun penyimpanan baru.

Membuat kontainer blob di akun penyimpanan

Kemudian kami akan mengunggah dan mengunduh file ke akun penyimpanan baru. Karena file memerlukan penyimpanan objek besar biner, kita perlu membuat kontainer objek besar biner tempat untuk menyimpan file.

  1. Arahkan kembali ke akun penyimpanan yang baru dibuat.

  2. Klik tautan Kontainer di panel kiri, di bawah "Blob service."

  3. Pilih + Kontainer di bagian atas halaman, dan panel “Kontainer baru” muncul.

  4. Beri nama kontainer, pilih tingkat akses, lalu pilih OK. Nama yang Anda tentukan akan digunakan nanti dalam tutorial.

    Cuplikan layar memperlihatkan layar pembuatan kontainer penyimpanan.

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

Azure Storage secara asli mendukung autentikasi Microsoft Entra, sehingga Anda dapat menggunakan identitas terkelola yang ditetapkan sistem VM 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. Tetapkan peran Kontributor Akun Penyimpanan ke identitas terkelola pada cakupan grup sumber daya yang berisi akun penyimpanan Anda.

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

Catatan

Untuk informasi selengkapnya tentang berbagai peran yang dapat Anda gunakan untuk memberikan izin ke tinjauan penyimpanan Otorisasi akses ke blob dan antrean menggunakan ID Microsoft Entra.

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

Untuk sisa tutorial, kami akan mengerjakannya dari mesin virtual yang dibuat sebelumnya.

Anda memerlukan klien SSH untuk menyelesaikan langkah-langkah ini. Jika menggunakan Windows, Anda dapat menggunakan klien SSH di Subsistem Windows untuk Linux. Jika Anda memerlukan bantuan untuk mengonfigurasi kunci klien SSH, lihat:

Sekarang setelah Anda memiliki klien SSH lanjutkan ke langkah-langkah di bawah ini:

  1. Di portal Azure, navigasikan ke Mesin Virtual, buka mesin virtual Linux Anda, lalu dari halaman Ringkasan pilih Hubungkan di bagian atas. Salin string untuk menyambungkan ke komputer virtual Anda.

  2. Sambungkan ke komputer virtual Anda menggunakan klien SSH.

  3. Selanjutnya, Anda akan diminta untuk memasukkan Kata sandi yang Anda tambah saat membuat mesin virtual Linux. Anda seharusnya berhasil masuk.

  4. Gunakan CURL untuk mendapatkan token akses untuk Microsoft Azure Resource Manager.

    Permintaan dan respons CURL untuk token akses di bawah:

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true    
    

    Catatan

    Dalam permintaan sebelumnya, nilai parameter "sumber daya" 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. Dalam respons berikut, elemen access_token dipendekkan untuk tujuan keringkasan.

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

Dapatkan kredensial SAS dari Azure Resource Manager untuk memanggil penyimpanan

Sekarang gunakan CURL untuk memanggil Resource Manager menggunakan token akses yang kita ambil di bagian sebelumnya, untuk membuat kredensial SAS penyimpanan. Setelah memiliki kredensial SAS, kita dapat memanggil operasi unggah/unduh penyimpanan.

Untuk permintaan ini, kami akan menggunakan parameter permintaan HTTP berikut untuk membuat informasi masuk 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 ini disertakan dalam isi POST permintaan kredensial SAS. Untuk informasi selengkapnya tentang parameter untuk membuat kredensial SAS, lihat referensi Mencantumkan SAS REST Layanan.

Gunakan permintaan CURL berikut untuk mendapatkan kredensial SAS. Pastikan untuk mengganti nilai parameter <SUBSCRIPTION ID>, <RESOURCE GROUP>, <STORAGE ACCOUNT NAME>, <CONTAINER NAME>, dan <EXPIRATION TIME> dengan nilai Anda sendiri. Ganti nilai <ACCESS TOKEN> dengan token akses yang Anda ambil sebelumnya:

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listServiceSas/?api-version=2017-06-01 -X POST -d "{\"canonicalizedResource\":\"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>\",\"signedResource\":\"c\",\"signedPermission\":\"rcw\",\"signedProtocol\":\"https\",\"signedExpiry\":\"<EXPIRATION TIME>\"}" -H "Authorization: Bearer <ACCESS TOKEN>"

Catatan

Teks dalam URL sebelumnya peka huruf besar/kecil, sehingga, pastikan jika Anda menggunakan huruf kecil/besar agar Grup Sumber Daya Anda mencerminkannya dengan benar. Selain itu, penting untuk mengetahui bahwa ini adalah permintaan POST, bukan permintaan GET.

Respons CURL mengembalikan kredensial SAS:

{"serviceSasToken":"sv=2015-04-05&sr=c&spr=https&st=2017-09-22T00%3A10%3A00Z&se=2017-09-22T02%3A00%3A00Z&sp=rcw&sig=QcVwljccgWcNMbe9roAJbD8J5oEkYoq%2F0cUPlgriBn0%3D"} 

Pada mesin virtual Linux, buat contoh file blob untuk diunggah ke kontainer penyimpanan blob Anda menggunakan perintah berikut:

echo "This is a test file." > test.txt

Selanjutnya, otentikasi dengan perintaj az storage CLI menggunakan kredensial SAS, dan unggah file ke kontainer blob. Untuk langkah ini, Anda harus memasang Azure CLI terbaru di mesin virtual Anda, jika belum melakukannya.

 az storage blob upload --container-name 
                        --file 
                        --name
                        --account-name 
                        --sas-token

Respons:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-21T03:58:56+00:00"
}

Selain itu, Anda dapat mengunduh file menggunakan Azure CLI dan mengautentikasi dengan kredensial SAS.

Permintaan:

az storage blob download --container-name
                         --file 
                         --name 
                         --account-name
                         --sas-token

Respons:

{
  "content": null,
  "metadata": {},
  "name": "testblob",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 16,
    "contentRange": "bytes 0-15/16",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "Aryr///Rb+D8JQ8IytleDA==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D4F9929765C139\"",
    "lastModified": "2017-09-21T03:58:56+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

Langkah berikutnya

Di tutorial ini, Anda mempelajari cara menggunakan identitas terkelola yang ditetapkan sistem komputer virtual Linux menggunakan kredensial SAS. Untuk mempelajari lebih lanjut tentang SAS Azure Storage, lihat: