FILESTREAM Insider Bilgi Arayışı


14

FILESTREAM özelliği Microsoft SQL Server 2012'de etkinleştirildiğinde, SQL Server sistemde "gizli" bir paylaşım oluşturur. Pay aşağıdaki gibi tanımlanır:

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

Ad, SQL Server Yapılandırma Yöneticisi'nde FILESTREAM'i ilk olarak yapılandırırken sağladığınız paylaşımın adıdır . Ama ne için?

Şimdiye kadar

Şuradan başlayarak mevcut tüm FILESTREAM belgelerini okudum:

... fakat paydan ve ne yaptığından ya da ne için olduğundan bahsedilmedi. Adı girin ve SQL Server başlık altında paylaşım oluşturur.

FILESTREAM etkin veritabanı

FILESTREAM etkinleştirilmiş bir veritabanı oluşturduğunuzda, veritabanı, başlangıçta FILESTREAM yapılandırması sırasında oluşturulan paylaşımla hiçbir ilgisi olmayan bir dizine (ayrı bir sürücüde önerilir) başvuran bir dosya grubuna başvurur.

Ekran görüntüsü FILESTREAM etkin veritabanı komut dosyası

FILESTREAM etkin veritabanı oluşturmak için komut dosyası Evet, tüm yolların C:; bu sadece bir örnek

Paul Randall ve ark. açıklamaya devam ediyor ...

FILESTREAM verileri, dosya sistemindeki, veri kapları adı verilen ve veritabanındaki özel dosya gruplarına karşılık gelen bir dizi NTFS dizininde depolanır. FILESTREAM verilerine işlem erişimi SQL Server ve FILESTREAM'i Windows düzeyinde etkinleştirmenin bir parçası olarak yüklenen bir dosya sistemi filtre sürücüsü tarafından denetlenir. Bir dosya sistemi filtre sürücüsünün kullanılması, UNC yolu üzerinden FILESTREAM verilerine uzaktan erişim sağlar. SQL Server, tablo satırlarından kendileriyle ilişkili FILESTREAM dosyalarına bir tür bağlantı sağlar. Bu, herhangi bir FILESTREAM dosyasının doğrudan dosya sistemi üzerinden silinmesinin veya yeniden adlandırılmasının veritabanı bozulmasına neden olacağı anlamına gelir.

... devam ettikleri belgenin (sayfa 14) aşağısında ...

FILESTREAM veri taşıyıcısı olan her NTFS birimi için tek bir FILESTREAM dosya sistemi filtre sürücüsü ve birimde FILESTREAM veri taşıyıcısı olan SQL Server'ın her sürümü için de bir tane var. Her filtre sürücüsü, belirli bir SQL Server sürümünü kullanan tüm örnekler için bu birim için tüm FILESTREAM veri kapsayıcılarını yönetmekten sorumludur.

Örneğin, üç SQL Server 2008 örneğinin her biri için bir tane olmak üzere üç FILESTREAM veri kabını barındıran bir NTFS biriminde yalnızca bir SQL Server 2008 FILESTREAM dosya sistemi filtre sürücüsü bulunur.

Sorular

  1. SQL Server'ın güzel ve bağlı her şeye sahip olduğunu bilmek güzel, ancak bu paylaşım aslında ne yapıyor? Sözde "dosya sistemi filtre sürücüsü" mü?
  2. Kimliği doğrulanmış herhangi bir kullanıcı "paylaşım" a erişebildiğini görünce , güvenlikle ilgili çıkarımlar nelerdir?
  3. Device RsFx0320, Windows Server 2012 ile tanıtılan esnek dosya sistemi biçiminin öncüsü mü?

Sorularıma cevap verebilirseniz, kaynak referansı vermeniz iyi olurdu.

Yanıtlar:


5

FILESTREAM özelliği Microsoft SQL Server 2012'de etkinleştirildiğinde, SQL Server sistemde "gizli" bir paylaşım oluşturur.

Bunu varsayılan olarak yapmaz, paylaşımı etkinleştirmek için SEÇmeniz gerekir. Bu, SQL Server Yapılandırma Yöneticisi aracılığıyla yapılır. Seçimi Enable FILESTREAM for file I/O accesskaldırırsanız paylaşım kaldırılır.

resim açıklamasını buraya girin

  1. SQL Server'ın güzel ve bağlı her şeye sahip olduğunu bilmek güzel, ancak bu paylaşım aslında ne yapıyor?

Paylaşım, istemcilerin (yerel ve uzak), akışlı veriye erişim için akış pencereleri API'sini kullanmak üzere tek bir paylaşılan konuma sahip olmalarını sağlar. Bu, filestream erişimi için SQL Server Instance düzeyi ayarlarıyla birlikte çalışır Full Access Enabled, diğer erişim ayarları akış API'sı ile çalışmamalıdır.

resim açıklamasını buraya girin

  1. ... Sözde "dosya sistemi filtre sürücüsü" mü?

Hayır öyle değil. Bu sadece bir dosya paylaşımı.

Suları çamurlamamaya çalışıyordum ama mümkün olduğunca fazla bilgi istedin. Yukarıdaki üstü çizili metinde aslında bunun filtre sürücüsü olmadığını söyledim. Ancak bu teknik olarak yarı gerçek. Evet, paylaşılan bir klasör ama aslında filtre sürücüsü aracılığıyla paylaşıyor. Bu konuda gerçekten tartıştım çünkü kaynak kodu olmadan gerçekten aşağı inemeyeceğiniz bir tavşan deliği olmaya başlıyor (ve dürüst olmak gerekirse, bence akademik dışında çok az değeri var).

Filtre sürücüsünün amacı birkaç şey yapmaktır, ancak bunlardan biri, çeşitli arayüzler aracılığıyla filestream hedefinde depolanan verilere işlemsel erişim sağlamaktır; SQL Server, Transact SQL, Windows API'leri. Ayrıca bir avuç başka öğe daha yapar - ancak paylaşım yoluyla verilen erişim filtre sürücüsü aracılığıyla yapılır. Aslında, bir dosya akışındaki dosyalara erişmeye çalışırsanız ve yönetici veya SQL Server değilseniz, dosyalara erişemezsiniz.

Yani, evet bu ikisi olduğunu ve değil filtre sürücüsü. Bir filtre sürücüsü aracılığıyla maruz kalan yarım windows dosya paylaşımı. Bunun paylaşımın path özelliğini görüntülediğinizi görebilirsiniz.

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

2.Herhangi bir kimliği doğrulanmış kullanıcının "paylaşım" a erişebilmesi, güvenlik sonuçları nelerdir?

İzinleri değiştirebilir ve ayarların doğru şekilde yapılmasını isteyebilirsiniz. Güvenlikle ilgili çıkarımlar, diğer tüm dosya paylaşımlarının sonuçlarıdır.

Aygıt RsFx0320, Windows Server 2012 ile tanıtılan esnek dosya sistemi biçiminin öncüsü mü?

Hayır, bu filtre sürücüsünün belirli bir sürümünün adıdır. Örneğin, 2016 yüklü olan bir sistem RsFx0410. ReFS bir dosya sistemidir, bu dosya sistemi ile miniport sürücüsü arasında bulunan bir filtre sürücüsüdür. Aslında bunun, irtifanın sonunda .10 ile gösterilen eski bir filtre sürücüsü olması oldukça üzücü ... hmm. Ayrıca, oldukça düşük bir rakama sahip olduğunu fark edeceksiniz , bu da genellikle 3. taraf filtre sürücüleri için kabul edilemez.

resim açıklamasını buraya girin

Sorularıma cevap verebilirseniz, kaynak referansı vermeniz iyi olurdu.

Bunun için hiçbir kaynağım yok, ancak ayarları değiştiren ekran görüntüleri ve yapılandırma seçenekleri aracılığıyla bilgilerimi yedekledim. Bu yanıttaki her şey ürünün kendisine bakarak ve pencere parçalarının nasıl çalıştığını bilerek bulunabilir (örn: filtre sürücüleri).


1, 2 ve 3'e verdiğiniz yanıtlar için teşekkür ederiz. Özellikle filtre sürücüsünün açıklamasını takdir ediyorum. Başlangıçtaki notunuz gerektiği gibi not edilir, ancak paylaşımın yalnızca FILESTREAM seçeneklerindeki seçeneği etkinleştirirsem oluşturulacağını anlıyorum. FILESTREAM yapılandırması / ayarları ve dahili öğelerle ilgili çok sayıda belge okudum.
John aka hot2use

2

İşte sorularınızı ele alacağım:

SQL Server'ın güzel ve bağlı her şeye sahip olduğunu bilmek güzel, ancak bu paylaşım aslında ne yapıyor? Sözde "dosya sistemi filtre sürücüsü" mü?

SQL Server Dosya akışı erişimi tamamen dosyalara erişim ile ilgilidir. Paylaşım, bu konumu bir dosya paylaşımı aracılığıyla sağlar.

Bunu OpenSqlFilestream kullanarak bazı C # kodlarıyla kolayca görebilirsiniz

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

Gördüğünüz gibi CreateFile için FILE_SHARE_READ yok ve dosya büyüsü yok, dosya akışı yok:

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

Not: Neden yerel sunucu / shareless FILESTREAM seçeneği yok - hiçbir fikrim yok. Bazı insanlar bu ekstra güvenlik seviyesinden hoşlanabilir.

2.Herhangi bir kimliği doğrulanmış kullanıcının "paylaşım" a erişebilmesi, güvenlik sonuçları nelerdir?

Vay canına, harika soru. Paylaşım izinlerinin kimliği doğrulanmış herhangi bir kullanıcı tarafından kullanılabildiği anlaşılıyor, ancak temeldeki NTFS izinleri güvenliğe ince ayar yapmalıdır. Ama bu benim için bir güvenlik açığı gibi görünüyor. NTFS izinlerinin ne kadar iyi ayarlandığını daha fazla araştırmak zorundayım, ancak kesinlikle genelleştirilmiş dosya paylaşımı izinlerini beğenmiyorum. Microsoft, TÜM "kimliği doğrulanmış kullanıcılar" Hadi? Doğru ya da yanlış, Microsoft NTFS izinleri paylaşım / odak göz ardı eğilimindedir düşünüyorum.

"Kimliği doğrulanmış kullanıcılar" sağlamak, yıllardır tartışılan bir konudur. İşte "kimliği doğrulanmış kullanıcılar" ın ileri ve geri okuduğum en iyi bloglarından biri. Windows'a o kadar yoğun bir şekilde yerleşmiş ki, bunun meşru bir risk olduğunu söyleyeceklerini sanmıyorum - yeni ürünler çıkana kadar ondan kurtulur.

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

Aygıt RsFx0320, Windows Server 2012 ile tanıtılan esnek dosya sistemi biçiminin öncüsü mü?

O / S yerine SQL tabanlı görünüyor. RsFx0320.sys SQL 2008'dir. Aşağıda görüldüğü gibi SQL 2012 RsFx0201.sys ve SQL 2014 RsFx0300.sys'dir:

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

Microsoft, 2012'den 2014'e yükselttiğinizde neler olabileceğini gösteriyor:

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}'

Sorularım 2 ve 3'e verdiğiniz cevaplar için teşekkür ederiz. Cevabınız 1 için, bu paylaşım yoluyla verilere erişebileceğimin farkındayım, ancak "FILESTREAM Insider Information'ı Arayış" başlığının nasıl olduğunu merak ediyordum .
John aka hot2use
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.