Mencari Informasi Orang Dalam FILESTREAM

14

Ketika fitur FILESTREAM diaktifkan di Microsoft SQL Server 2012, SQL Server akan membuat bagian "tersembunyi" pada sistem. Pembagian didefinisikan sebagai berikut:

Sharename          FILESTREAM_SHARE
Path               \\?\GLOBALROOT\Device\RsFx0320\<localmachine>\FILESTREAM_SHARE
Remark             SQL Server FILESTREAM share
Maximum users      unlimited
Users Caching      Manual caching of documents 
Permissions        NT-AUTHORITY\Authenticated Users, FULL

Nama ini adalah nama saham yang Anda berikan ketika awalnya mengkonfigurasi FILESTREAM di SQL Server Configuration Manager . Tapi untuk apa ini?

Sejauh ini

Saya membaca semua dokumentasi FILESTREAM yang tersedia mulai dari:

... tapi tidak disebutkan tentang bagian dan untuk apa atau untuk apa. Anda memasukkan nama dan SQL Server akan membuat bagian di bawah tenda.

Basis data yang diaktifkan FILESTREAM

Saat Anda membuat database yang mengaktifkan FILESTREAM, database mereferensikan grup fileg yang mereferensikan direktori (direkomendasikan pada drive terpisah) yang sama sekali tidak ada hubungannya dengan share, yang awalnya dibuat selama konfigurasi FILESTREAM.

Cuplikan layar skrip basis data yang diaktifkan FILESTREAM

Skrip untuk Membuat database yang mengaktifkan FILESTREAM Ya, saya menyadari bahwa semua jalur ada di C :; itu hanyalah sebuah contoh

Buku putih oleh Paul Randall et al. melanjutkan untuk menjelaskan bahwa ...

Data FILESTREAM disimpan dalam sistem file dalam satu set direktori NTFS yang disebut wadah data, yang sesuai dengan grup-grup fileg khusus dalam database. Akses transaksional ke data FILESTREAM dikendalikan oleh SQL Server dan driver filter sistem file yang diinstal sebagai bagian dari mengaktifkan FILESTREAM di tingkat Windows. Penggunaan driver filter sistem file juga memungkinkan akses jarak jauh ke data FILESTREAM melalui jalur UNC. SQL Server memelihara semacam tautan dari baris tabel ke file FILESTREAM yang terkait dengannya. Ini berarti bahwa menghapus atau mengganti nama file FILESTREAM secara langsung melalui sistem file akan mengakibatkan korupsi basis data.

... lebih jauh ke bawah dokumen (halaman 14) yang mereka bawa ...

Ada pengandar filter sistem file FILESTREAM tunggal untuk setiap volume NTFS yang memiliki wadah data FILESTREAM, dan ada juga satu untuk setiap versi SQL Server yang memiliki wadah data FILESTREAM pada volume. Setiap pengandar filter bertanggung jawab untuk mengelola semua wadah data FILESTREAM untuk volume itu, untuk semua contoh yang menggunakan versi tertentu dari SQL Server.

Misalnya, volume NTFS yang menampung tiga wadah data FILESTREAM, satu untuk masing-masing dari tiga contoh SQL Server 2008, hanya akan memiliki satu pengandar filter sistem file SQL Server 2008 FILESTREAM.

Pertanyaan

  1. Sangat menyenangkan mengetahui bahwa SQL Server memiliki semuanya yang baik dan terikat, tetapi apa yang sebenarnya dilakukan oleh share itu? Apakah itu disebut "driver filter sistem file"?
  2. Melihat setiap pengguna yang diautentikasi dapat mengakses "bagikan", apa implikasi keamanannya?
  3. Apakah Device RsFx0320 merupakan pendahulu dari format sistem file yang tangguh yang diperkenalkan dengan Windows Server 2012?

Jika Anda dapat memberikan jawaban atas pertanyaan saya, maka alangkah baiknya jika Anda dapat memberikan referensi sumber.

John alias hot2use
sumber

Jawaban:

5

Ketika fitur FILESTREAM diaktifkan di Microsoft SQL Server 2012, SQL Server akan membuat bagian "tersembunyi" pada sistem.

Ini tidak melakukan ini secara default, Anda harus MEMILIH untuk mengaktifkan berbagi. Ini dilakukan melalui Manajer Konfigurasi SQL Server. Jika Anda membatalkan pilihan Enable FILESTREAM for file I/O access, bagian itu akan dihapus.

masukkan deskripsi gambar di sini

  1. Sangat menyenangkan mengetahui bahwa SQL Server memiliki semuanya yang baik dan terikat, tetapi apa yang sebenarnya dilakukan oleh share itu?

Bagian ini memungkinkan klien (lokal dan jarak jauh) memiliki lokasi bersama tunggal untuk menggunakan api windows streaming untuk akses ke data streaming data. Ini berfungsi bersama dengan pengaturan tingkat SQL Server Instance untuk akses Full Access Enabledstreaming, pengaturan akses lainnya tidak boleh bekerja dengan streaming API.

masukkan deskripsi gambar di sini

  1. ... Apakah itu disebut "driver filter sistem file"?

Tidak, bukan itu. Ini hanya berbagi file.

Saya berusaha untuk tidak mengeruhkan air, tetapi Anda memang meminta informasi sebanyak mungkin. Dalam teks dicoret di atas saya lakukan, pada kenyataannya, mengatakan bahwa ini bukan driver filter. Namun itu secara teknis setengah kebenaran. Ya, itu adalah folder bersama tetapi sebenarnya berbagi melalui driver filter. Saya benar-benar memperdebatkan hal ini karena itu mulai menjadi lubang kelinci yang Anda benar-benar tidak bisa turun tanpa kode sumber (dan sejujurnya itu bernilai kecil selain akademik menurut saya).

Inti dari driver filter adalah melakukan beberapa hal, tetapi salah satu dari hal itu adalah untuk memberikan akses transaksional ke data yang disimpan dalam target filestream melalui berbagai antarmuka; SQL Server, Transact SQL, API Windows. Ia juga melakukan beberapa item lainnya - namun akses yang diberikan melalui share dilakukan melalui driver filter. Bahkan, jika Anda mencoba mengakses file dalam filestream dan bukan administrator atau SQL Server Anda seharusnya tidak dapat mengaksesnya.

Jadi, ya ini baik adalah dan tidak driver filter. Ini setengah dari fileshare windows yang diekspos melalui driver filter. Anda dapat melihat ini Anda melihat properti path dari share.

get-wmiobject -class Win32_share | where {$_.Description -like 'SQL Server*'} | ft name, path -autosize

2. Melihat sebagai pengguna yang diautentikasi dapat mengakses "bagikan", apa implikasi keamanannya?

Anda dapat mengubah izin dan mengharuskan pengaturan diatur dengan benar. Implikasi keamanannya adalah dari berbagi file lainnya.

3. Apakah Perangkat RsFx0320 merupakan pendahulu dari format sistem file tangguh yang diperkenalkan dengan Windows Server 2012?

Tidak, ini adalah nama versi tertentu dari driver filter. Sebagai contoh, berikut adalah sistem dengan 2016 yang dimuat RsFx0410. ReFS adalah sistem file, ini adalah driver filter yang terletak di antara filesystem dan driver miniport. Sebenarnya cukup membingungkan bahwa ini adalah driver filter warisan seperti dilambangkan oleh .10 di ujung ketinggian ... hmm. Anda juga akan melihat bahwa itu memiliki ketinggian yang cukup rendah , yang umumnya tidak dapat diterima untuk driver filter pihak ke-3.

masukkan deskripsi gambar di sini

Jika Anda dapat memberikan jawaban atas pertanyaan saya, maka alangkah baiknya jika Anda dapat memberikan referensi sumber.

Saya tidak punya sumber untuk ini tetapi telah mencadangkan informasi saya melalui tangkapan layar dan opsi konfigurasi yang mengubah pengaturan. Segala sesuatu dalam jawaban ini dapat ditemukan dengan melihat melalui produk itu sendiri dan mengetahui bagaimana potongan-potongan windows bekerja (mis: driver filter).

Sean mengatakan Hapus Sara Chipps
sumber
Terima kasih atas jawaban untuk 1, 2 & 3. Saya sangat menghargai penjelasan Anda tentang driver filter. Komentar Anda di awal telah dicatat, tetapi saya menyadari bahwa pembagian hanya akan dibuat jika saya mengaktifkan opsi di opsi FILESTREAM. Saya telah membaca sejumlah besar dokumentasi mengenai konfigurasi / pengaturan FILESTREAM dan hal-hal internal.
John aka hot2use
2

Inilah pendapat saya tentang pertanyaan Anda:

1. Senang mengetahui bahwa SQL Server memiliki segalanya yang baik dan terkait, tetapi apa yang sebenarnya dilakukan oleh share itu? Apakah itu disebut "driver filter sistem file"?

Akses file SQL Server File adalah semua tentang, baik, akses ke file. Berbagi menyediakan lokasi itu melalui berbagi file.

Anda dapat dengan mudah melihat ini dengan beberapa kode C # menggunakan OpenSqlFilestream on

https://docs.microsoft.com/en-us/sql/relational-databases/blob/access-filestream-data-with-opensqlfilestream

Seperti yang Anda lihat, tidak ada FILE_SHARE_READ untuk CreateFile dan tidak ada keajaiban file, tidak ada filestream:

try
    {
        if ( (srcHandle = CreateFile(
            srcFilePath,
            GENERIC_READ,
            FILE_SHARE_READ,
            NULL,
            OPEN_EXISTING,
            FILE_FLAG_SEQUENTIAL_SCAN,
            NULL)) == INVALID_HANDLE_VALUE )
            throw szErrMsgSrc;

Catatan: Mengenai mengapa tidak ada opsi server / shareless FILESTREAM lokal - Saya tidak tahu. Kedengarannya seperti beberapa orang mungkin menyukai tingkat keamanan ekstra itu.

2. Melihat sebagai pengguna yang diautentikasi dapat mengakses "bagikan", apa implikasi keamanannya?

Wow, pertanyaan bagus. Tampaknya, bahwa izin berbagi tersedia untuk setiap pengguna yang diautentikasi, tetapi, izin NTFS yang mendasarinya harus menyempurnakan keamanan. Tapi, ini sepertinya lubang keamanan bagiku. Saya harus menyelidiki lebih lanjut bagaimana memperbaiki izin NTFS, tetapi saya jelas tidak menyukai izin berbagi file yang digeneralisasi. Ayo Microsoft, SEMUA "pengguna terotentikasi"? Benar atau salah, saya pikir Microsoft cenderung mengabaikan berbagi / fokus pada izin NTFS.

Menyediakan "pengguna terotentikasi" telah menjadi topik perdebatan selama bertahun-tahun. Inilah salah satu blog terbaik yang pernah saya baca di belakang dan belakang "pengguna terotentikasi". Ini sangat mengakar di Windows Saya tidak berpikir mereka akan mengatakan itu risiko yang sah - sampai produk baru mereka keluar yang menghilangkannya.

https://social.technet.microsoft.com/Forums/windowsserver/en-US/bb74fa7c-89bd-476d-88bf-e88cd66618e6/why-is-authenticated-users-in-the-local-users-group-by- default? forum = winserversecurity

3. Apakah Perangkat RsFx0320 merupakan pendahulu dari format sistem file tangguh yang diperkenalkan dengan Windows Server 2012?

Terlihat berbasis SQL daripada berbasis O / S. RsFx0320.sys adalah SQL 2008. Seperti yang terlihat di bawah ini SQL 2012 adalah RsFx0201.sys dan SQL 2014 adalah RsFx0300.sys:

https://support.microsoft.com/en-us/help/2961258/fix-cannot-access-the-data-in-filetable-after-you-upgrade-from-sql-ser

Microsoft menunjukkan apa yang bisa terjadi ketika Anda memutakhirkan 2012-2014:

To work around this issue, change manually the path property of the resource <AvailabilityGroupName>_FSShare to point to the correct driver: From
'\\?\GLOBALROOT\Device\RsFx0201\<localmachine>\{AvailabilityGroupID}' to '\\?\GLOBALROOT\Device\RsFx0300\<localmachine>\{AvailabilityGroupID}'
Menyengat
sumber
Terima kasih atas jawaban atas pertanyaan saya 2 & 3. Saya sadar atas jawaban Anda 1, bahwa saya dapat mengakses data melalui bagian itu, tetapi saya bertanya-tanya tentang caranya, maka judulnya "Mencari Pencarian Informasi Orang Dalam FILESTREAM ".
John aka hot2use