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 dengan menggunakan klien 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.

Sekarang, dengan dukungan SFTP untuk Azure Blob Storage, Anda dapat mengaktifkan dukungan SFTP untuk akun Blob Storage dengan satu klik. 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

Klien SFTP tidak dapat diotorisasi dengan menggunakan identitas Microsoft Entra. 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 maksimal 2.000 pengguna lokal untuk akun penyimpanan.

Untuk menyiapkan izin akses, Anda 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). Daftar kontrol akses (ACL) 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.

Mengaktifkan dukungan SFTP tidak mencegah jenis klien lain menggunakan ID Microsoft Entra. Untuk pengguna yang mengakses Blob Storage dengan menggunakan perintah portal Azure, Azure CLI, Azure PowerShell, AzCopy, serta Azure SDK, dan AZURE REST API, Anda dapat terus menggunakan luas pengaturan keamanan Azure Blob Storage untuk mengotorisasi akses. 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 Anda kehilangan kata sandi, Anda harus membuat kata sandi 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 file atau direktori
  • Mengubah Izin p
  • Mengubah ACL file atau direktori
  • Saat melakukan operasi tulis pada blob di subdirektori, izin Baca diperlukan untuk membuka direktori dan mengakses properti blob.

    Daftar kontrol akses (ACL)

    Penting

    Kemampuan ini saat ini berada dalam PRATINJAU. Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku pada fitur Azure dalam versi beta, pratinjau, atau belum dirilis secara umum.

    ACL memungkinkan Anda memberikan akses"halus", seperti akses tulis ke direktori atau file tertentu. Untuk mempelajari selengkapnya tentang ACL, lihat Daftar kontrol akses (ACL) di Azure Data Lake Storage Gen2.

    Untuk mengotorisasi pengguna lokal dengan menggunakan ACL, Anda harus terlebih dahulu mengaktifkan otorisasi ACL untuk pengguna lokal tersebut. Lihat Memberikan izin ke kontainer.

    Catatan

    Meskipun ACL dapat menentukan tingkat izin untuk berbagai jenis identitas, hanya pengguna pemilik, grup pemilik, dan semua identitas pengguna lain yang dapat digunakan untuk mengotorisasi pengguna lokal. Pengguna bernama dan grup bernama belum didukung untuk otorisasi pengguna lokal.

    Tabel berikut ini menjelaskan properti pengguna lokal yang digunakan untuk otorisasi ACL.

    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
  • Bagaimana izin ACL dievaluasi

    ACL dievaluasi hanya jika pengguna lokal tidak memiliki izin kontainer yang diperlukan untuk melakukan operasi. Karena cara izin akses dievaluasi oleh sistem, Anda tidak dapat menggunakan ACL untuk membatasi akses yang telah diberikan oleh izin tingkat kontainer. Itu karena sistem mengevaluasi izin kontainer terlebih dahulu, dan jika izin tersebut memberikan izin akses yang memadai, ACL diabaikan.

    Penting

    Untuk memberikan pengguna lokal akses baca atau tulis ke file, Anda harus memberikan izin Jalankan pengguna lokal tersebut ke folder akar kontainer, dan ke setiap folder dalam hierarki folder yang mengarah ke file. Jika pengguna lokal adalah pengguna pemilik atau grup pemilik, maka Anda dapat menerapkan izin Jalankan ke pengguna pemilik atau grup pemilik. Jika tidak, Anda harus menerapkan izin Jalankan ke semua pengguna lain.

    Memodifikasi ACL dengan klien SFTP

    Meskipun izin ACL dapat dimodifikasi dengan menggunakan alat Atau SDK Azure yang didukung, pengguna lokal juga dapat memodifikasinya. Untuk mengaktifkan pengguna lokal untuk mengubah izin ACL, Anda harus terlebih dahulu memberikan izin pengguna Modify Permissions lokal. Lihat Memberikan izin ke kontainer.

    Pengguna lokal hanya dapat mengubah tingkat izin pengguna pemilik, grup pemilik, dan semua pengguna ACL lainnya. Menambahkan atau memodifikasi entri ACL untuk pengguna bernama, grup bernama, dan prinsip keamanan bernama belum didukung.

    Pengguna lokal juga dapat mengubah ID pengguna pemilik dan grup pemilik. Bahkan, hanya pengguna lokal yang dapat mengubah ID pengguna pemilik atau grup pemilik ke ID pengguna lokal. Anda belum dapat mereferensikan ID pengguna lokal di ACL dengan menggunakan alat Azure atau SDK. Untuk mengubah pengguna pemilik atau grup pemilik direktori atau blob, pengguna lokal harus diberi Modify Ownership izin.

    Untuk melihat contoh, lihat Mengubah ACL file atau direktori.

    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. Panjang 2 kunci RSA harus minimal 2.048 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).

    Pertimbangan jaringan

    SFTP adalah layanan tingkat platform, sehingga port 22 akan terbuka meskipun opsi akun dinonaktifkan. Jika akses SFTP tidak dikonfigurasi, maka semua permintaan menerima pemutusan sambungan dari layanan. Saat menggunakan SFTP, Anda mungkin ingin membatasi akses publik melalui konfigurasi firewall, jaringan virtual, atau titik akhir privat. Pengaturan ini diberlakukan di lapisan aplikasi, yang berarti tidak spesifik untuk SFTP dan akan berdampak pada konektivitas ke semua Titik Akhir Azure Storage. Untuk informasi selengkapnya tentang mengonfigurasi aturan firewall, lihat Konfigurasikan firewall Azure Storage dan jaringan virtual.

    Catatan

    Alat audit yang mencoba menentukan dukungan TLS pada lapisan protokol dapat mengembalikan versi TLS selain versi minimum yang diperlukan saat dijalankan langsung terhadap titik akhir akun penyimpanan. Untuk informasi lebih lanjut, lihat Memberlakukan versi minimum Keamanan Lapisan Transportasi (TLS) yang diperlukan untuk permintaan ke akun penyimpanan.

    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 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.