Dukungan Protocol Transfer file SSH (SFTP) untuk Azure Blob Storage

Penyimpanan blob sekarang mendukung Protokol Transfer File SSH (SFTP). Dukungan ini memungkinkan Anda terhubung dengan aman ke Blob Storage melalui titik akhir SFTP, memungkinkan Anda menggunakan SFTP untuk akses file, transfer file, dan manajemen file.

Berikut adalah video yang memberi tahu Anda lebih lanjut tentang hal itu.

Azure memungkinkan transfer data yang aman ke akun Blob Storage menggunakan layanan REST API Azure Blob, SDK Azure, dan alat-alat seperti AzCopy. Namun, beban kerja warisan sering kali menggunakan protokol transfer file tradisional seperti SFTP. Anda dapat memperbarui aplikasi kustom untuk menggunakan REST API dan SDK Azure, tetapi hanya dengan membuat perubahan kode yang signifikan.

Sebelum rilis fitur ini, jika Anda ingin menggunakan SFTP untuk mentransfer data ke Azure Blob Storage, Anda harus membeli produk pihak ketiga atau mengatur solusi Anda sendiri. Untuk solusi kustom, Anda harus membuat mesin virtual (VM) di Azure untuk menghosting server SFTP, lalu memperbarui, mem-patch, mengelola, menskalakan, dan memelihara arsitektur yang kompleks.

Dengan dukungan SFTP untuk Azure Blob Storage, kini Anda dapat mengaktifkan titik akhir SFTP untuk akun Blob Storage dengan satu pengaturan. Kemudian Anda dapat menyiapkan identitas pengguna lokal untuk autentikasi guna terhubung ke akun penyimpanan Anda dengan SFTP melalui port 22.

Artikel ini menjelaskan dukungan SFTP untuk Azure Blob Storage. Untuk mempelajari cara mengaktifkan SFTP untuk akun penyimpanan Anda, lihat Koneksi ke Azure Blob Storage dengan menggunakan Protokol Transfer File SSH (SFTP).

Catatan

SFTP adalah layanan tingkat platform, sehingga port 22 akan terbuka meskipun opsi akun dinonaktifkan. Jika akses SFTP tidak dikonfigurasi, semua permintaan akan menerima pemutusan sambungan dari layanan.

SFTP dan namespace layanan hierarkis

Dukungan SFTP mengharuskan namespace hierarkis diaktifkan. Namespace hirarkis mengatur objek (file) ke dalam hierarki direktori dan subdirektori dengan cara yang sama seperti sistem file di komputer Anda diatur. Ruang nama hierarkis berskala secara linear dan tidak menurunkan kapasitas atau performa data.

Berbagai protokol didukung oleh namespace hierarkis. SFTP adalah salah satu protokol yang tersedia. Gambar berikut menunjukkan akses penyimpanan melalui beberapa protokol dan REST API. Untuk pembacaan yang lebih mudah, gambar ini menggunakan istilah Gen2 REST untuk merujuk ke REST API Azure Data Lake Storage Gen2.

namespace hierarkis

Model izin SFTP

Azure Blob Storage tidak mendukung autentikasi atau otorisasi Microsoft Entra melalui SFTP. Sebaliknya, SFTP menggunakan bentuk baru manajemen identitas yang disebut pengguna lokal.

Pengguna lokal harus menggunakan kata sandi atau kredensial kunci pribadi Secure Shell (SSH) untuk autentikasi. Anda dapat memiliki maksimum 2000 pengguna lokal untuk akun penyimpanan.

Untuk menyiapkan izin akses, Anda akan membuat pengguna lokal, dan memilih metode autentikasi. Kemudian, untuk setiap kontainer di akun Anda, Anda dapat menentukan tingkat akses yang ingin diberikan kepada pengguna tersebut.

Perhatian

Pengguna lokal tidak beroperasi dengan model izin Azure Storage lainnya seperti RBAC (kontrol akses berbasis peran) dan ABAC (kontrol akses berbasis atribut). ACL (daftar kontrol akses) didukung untuk pengguna lokal di tingkat pratinjau.

Misalnya, Jeff memiliki izin baca saja (dapat dikontrol melalui RBAC atau ABAC) melalui identitas Microsoft Entra mereka untuk file foo.txt disimpan dalam kontainer con1. Jika Jeff mengakses akun penyimpanan melalui NFS (ketika tidak dipasang sebagai root/superuser), Blob REST, atau Data Lake Storage Gen2 REST, izin ini akan diberlakukan. Namun, jika Jeff juga memiliki identitas pengguna lokal dengan izin hapus untuk data dalam kontainer con1, mereka dapat menghapus foo.txt melalui SFTP menggunakan identitas pengguna lokal.

Untuk akun penyimpanan yang diaktifkan SFTP, Anda dapat menggunakan luasnya pengaturan keamanan Azure Blob Storage, untuk mengautentikasi dan mengotorisasi pengguna yang mengakses Storage Blob melalui portal Azure, Azure CLI, perintah Azure PowerShell, AzCopy, serta Azure SDK, dan Azure REST API. Untuk mempelajari ACL lebih lanjut, lihat Model kontrol akses di Azure Data Lake Storage Gen2.

Metode autentikasi

Anda dapat mengautentikasi pengguna lokal yang terhubung melalui SFTP dengan menggunakan kata sandi atau pasangan kunci privat-publik Secure Shell (SSH). Anda dapat mengonfigurasi kedua bentuk autentikasi dan membiarkan pengguna lokal yang terhubung memilih yang mana yang akan digunakan. Namun, autentikasi multifaktor, saat kata sandi yang valid dan pasangan kunci publik/privat yang valid diperlukan untuk autentikasi yang berhasil, tidak didukung.

Kata Sandi

Anda tidak dapat mengatur kata sandi kustom, melainkan Azure menghasilkan kata sandi untuk Anda. Jika Anda memilih autentikasi kata sandi, maka kata sandi akan disediakan setelah Anda selesai mengonfigurasi pengguna lokal. Pastikan untuk menyalin kata sandi itu dan menyimpannya di lokasi di mana Anda dapat menemukannya nanti. Anda tidak akan dapat mengambil kata sandi itu dari Azure lagi. Jika kehilangan kata sandi, Anda harus membuat yang baru. Untuk alasan keamanan, Anda tidak dapat mengatur kata sandi sendiri.

Pasangan kunci SSH

Pasangan kunci privat-publik adalah bentuk autentikasi yang paling umum untuk Secure Shell (SSH). Kunci pribadi bersifat rahasia dan harus diketahui hanya untuk pengguna lokal. Kunci umum disimpan di Azure. Saat klien SSH terhubung ke akun penyimpanan menggunakan identitas pengguna lokal, klien SSH mengirim pesan dengan kunci publik dan tanda tangan. Azure memvalidasi pesan dan memeriksa bahwa pengguna dan kunci dikenali oleh akun penyimpanan. Untuk mempelajari selengkapnya, lihat Gambaran Umum SSH dan kunci.

Jika memilih untuk mengautentikasi dengan pasangan kunci privat-umum, Anda dapat menghasilkan kunci, menggunakan yang sudah disimpan di Azure, atau memberi Azure kunci umum dari pasangan kunci umum-privat yang ada. Anda dapat memiliki maksimal 10 kunci umum per pengguna lokal.

Izin Kontainer

Untuk izin tingkat kontainer, Anda dapat memilih kontainer mana yang ingin Anda beri akses dan tingkat akses apa yang ingin Anda berikan (Baca, Tulis, Daftar, Hapus, Buat, Ubah Kepemilikan, dan Ubah Izin). Izin tersebut berlaku untuk semua direktori dan subdirektori dalam kontainer. Anda dapat memberikan setiap akses pengguna lokal ke sebanyak 100 kontainer. Izin kontainer juga dapat diperbarui setelah membuat pengguna lokal. Tabel berikut menjelaskan setiap izin secara lebih rinci.

Izin Simbol Deskripsi
Read r
  • Membaca konten file
  • Write w
  • Mengunggah file
  • Membuat direktori
  • Unggah direktori
  • List l
  • Mencantumkan konten dalam kontainer
  • Mencantumkan konten dalam direktori
  • Hapus d
  • Menghapus file/direktori
  • Buat c
  • Mengunggah file jika file tidak ada
  • Membuat direktori jika belum ada
  • Ubah Kepemilikan o
  • Mengubah pengguna pemilik atau grup pemilik untuk file/direktori
  • Mengubah Izin p
  • Mengubah izin untuk file/direktori
  • Saat melakukan operasi tulis pada blob di subdirektori, izin Baca diperlukan untuk membuka direktori dan mengakses properti blob.

    ACLs

    Untuk izin tingkat direktori atau blob, Anda dapat mengubah pengguna pemilik, grup pemilik, dan mode yang digunakan oleh ACL ADLS Gen2. Sebagian besar klien SFTP mengekspos perintah untuk mengubah properti ini. Tabel berikut ini menjelaskan perintah umum secara lebih rinci.

    Perintah Izin Kontainer yang Diperlukan Deskripsi
    paduan suara o
  • Mengubah pengguna pemilik untuk file/direktori
  • Harus menentukan ID numerik
  • chgrp o
  • Mengubah grup pemilik untuk file/direktori
  • Harus menentukan ID numerik
  • chmod p
  • Mengubah izin/mode untuk file/direktori
  • Harus menentukan izin oktal gaya POSIX
  • ID yang diperlukan untuk mengubah pengguna pemilik dan grup pemilik adalah bagian dari properti baru untuk Pengguna Lokal. Tabel berikut ini menjelaskan setiap properti Pengguna Lokal baru secara lebih rinci.

    Properti Deskripsi
    UserId
  • Pengidentifikasi unik untuk Pengguna Lokal dalam akun penyimpanan
  • Dihasilkan secara default saat Pengguna Lokal dibuat
  • Digunakan untuk mengatur pengguna pemilik pada file/direktori
  • GroupId
  • Identifer untuk sekelompok Pengguna Lokal
  • Digunakan untuk mengatur grup pemilik pada file/direktori
  • AllowAclAuthorization
  • Izinkan otorisasi permintaan Pengguna Lokal ini dengan ACL
  • Setelah ACL yang diinginkan dikonfigurasi dan Pengguna Lokal memungkinkan AllowAclAuthorization, mereka dapat menggunakan ACL untuk mengotorisasi permintaan mereka. Mirip dengan RBAC, izin kontainer dapat beroperasi dengan ACL. Hanya jika pengguna lokal tidak memiliki izin kontainer yang memadai, ACL akan dievaluasi. Untuk mempelajari ACL lebih lanjut, lihat Model kontrol akses di Azure Data Lake Storage Gen2.

    Direktori beranda

    Saat mengonfigurasi izin, Anda memiliki opsi untuk mengatur direktori beranda untuk pengguna lokal. Jika tidak ada kontainer lain yang ditentukan dalam permintaan koneksi SFTP, maka direktori beranda adalah direktori yang disambungkan pengguna secara default. Misalnya, perhatikan permintaan berikut yang dibuat dengan menggunakan SSH Terbuka. Permintaan ini tidak menentukan nama kontainer atau direktori sebagai bagian dari perintah sftp.

    sftp myaccount.myusername@myaccount.blob.core.windows.net
    put logfile.txt
    

    Jika Anda mengatur direktori beranda pengguna mycontainer/mydirectory, maka klien akan terhubung ke direktori itu. Kemudian, file logfile.txt tersebut akan diunggah ke mycontainer/mydirectory. Jika Anda tidak mengatur direktori beranda, maka upaya koneksi akan gagal. Sebagai gantinya, menghubungkan pengguna harus menentukan kontainer bersama dengan permintaan dan kemudian menggunakan perintah SFTP untuk menavigasi ke direktori target sebelum mengunggah file. Contoh berikut menunjukkan ini:

    sftp myaccount.mycontainer.myusername@myaccount.blob.core.windows.net
    cd mydirectory
    put logfile.txt  
    

    Catatan

    Direktori beranda hanyalah direktori awal tempat pengguna lokal yang terhubung ditempatkan. Pengguna lokal dapat menavigasi ke jalur lain dalam kontainer tempat mereka terhubung jika mereka memiliki izin kontainer yang sesuai.

    Algoritme yang didukung

    Anda dapat menggunakan banyak klien SFTP yang berbeda untuk terhubung dengan aman dan kemudian mentransfer file. Menghubungkan klien harus menggunakan algoritma yang ditentukan dalam tabel di bawah ini.

    Jenis Algoritma
    Kunci host 1 rsa-sha2-256 2
    rsa-sha2-512 2
    ecdsa-sha2-nistp256
    ecdsa-sha2-nistp384
    Pertukaran kunci ecdh-sha2-nistp384
    ecdh-sha2-nistp256
    diffie-hellman-group14-sha256
    diffie-hellman-group16-sha512
    diffie-hellman-group-exchange-sha256
    Cipher/enkripsi aes128-gcm@openssh.com
    aes256-gcm@openssh.com
    aes128-ctr
    aes192-cbc
    aes256-ctr
    Integritas/MAC hmac-sha2-256
    hmac-sha2-512
    hmac-sha2-256-etm@openssh.com
    hmac-sha2-512-etm@openssh.com
    Kunci umum ssh-rsa 2
    rsa-sha2-256
    rsa-sha2-512
    ecdsa-sha2-nistp256
    ecdsa-sha2-nistp384
    ecdsa-sha2-nistp521

    1 Kunci host diterbitkan di sini. 2 Panjang kunci RSA minimal harus 2048 bit.

    Dukungan SFTP untuk Azure Blob Storage saat ini membatasi dukungan algoritma kriptografinya berdasarkan pertimbangan keamanan. Kami sangat menyarankan agar pelanggan menggunakan algoritme yang disetujui Microsoft Security Development Lifecycle (SDL) untuk mengakses data mereka dengan aman.

    Saat ini, sesuai dengan Microsoft Security SDL, kami tidak berencana mendukung hal berikut: ssh-dss, , diffie-hellman-group14-sha1, diffie-hellman-group1-sha1diffie-hellman-group-exchange-sha1, hmac-sha1, . hmac-sha1-96 Dukungan algoritme dapat berubah di masa mendatang.

    Menyambungkan dengan SFTP

    Untuk memulai, aktifkan dukungan SFTP, buat pengguna lokal, dan tetapkan izin untuk pengguna lokal tersebut. Lalu, Anda dapat menggunakan klien SFTP untuk menyambungkan dengan aman, lalu mentransfer file. Untuk panduan langkah demi langkah, lihat Menyambungkan ke Azure Blob Storage dengan menggunakan Protokol Transfer File SSH (SFTP).

    Klien yang didukung dan diketahui

    Klien berikut memiliki dukungan algoritma yang kompatibel dengan SFTP untuk Azure Blob Storage. Lihat Batasan dan masalah umum dengan dukungan Protokol Transfer File SSH (SFTP) untuk Azure Blob Storage jika Anda mengalami kesulitan dalam menyambungkan. Daftar ini tidak lengkap dan dapat berubah dari waktu ke waktu.

    • AsyncSSH 2.1.0+
    • Axway
    • Cyberduck 7.8.2+
    • edtFTPjPRO 7.0.0+
    • FileZilla 3.53.0+
    • libssh 0.9.5+
    • Maverick Legacy 1.7.15+
    • Moveit 12.7
    • OpenSSH 7.4+
    • paramiko 2.8.1+
    • phpseclib 1.0.13+
    • PuTTY 0.74+
    • QualysML 12.3.41.1+
    • RebexSSH 5.0.7119.0+
    • Salesforce
    • ssh2js 0.1.20+
    • sshj 0.27.0+
    • SSH.NET 2020.0.0+
    • WinSCP 5.10+
    • Workday
    • XFB.Gateway
    • JSCH 0.1.54+
    • curl 7.85.0+
    • AIX1
    • MobaXterm v21.3

    1 Harus mengatur AllowPKCS12KeystoreAutoOpen opsi ke no.

    Batasan dan masalah yang diketahui

    Lihat artikel batasan dan masalah yang diketahui untuk daftar lengkap batasan dan masalah dengan dukungan SFTP untuk Azure Blob Storage.

    Penetapan harga dan penagihan

    Mengaktifkan titik akhir SFTP memiliki biaya per jam. Untuk informasi harga terbaru, lihat Harga Azure Blob Storage.

    Tip

    Untuk menghindari biaya pasif, pertimbangkan untuk mengaktifkan SFTP hanya ketika Anda secara aktif menggunakannya untuk mentransfer data. Untuk panduan tentang cara mengaktifkan lalu menonaktifkan dukungan SFTP, lihat Koneksi ke Azure Blob Storage dengan menggunakan SSH File Transfer Protocol (SFTP).

    Harga transaksi, penyimpanan, dan jaringan untuk akun penyimpanan yang mendasar berlaku. Semua transaksi SFTP dikonversi ke Transaksi Baca, Tulis, atau Lainnya di akun penyimpanan Anda. Ini termasuk semua perintah SFTP dan panggilan API. Untuk mempelajari selengkapnya, lihat Memahami model tagihan lengkap untuk Azure Blob Storage.

    Lihat juga