Tìm kiếm thông tin nội bộ của FILESTREAM


14

Khi tính năng FILESTREAM được kích hoạt trên Microsoft SQL Server 2012 thì SQL Server sẽ tạo chia sẻ "ẩn" trên hệ thống. Chia sẻ được định nghĩa như sau:

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

Tên là tên của chia sẻ mà bạn cung cấp khi định cấu hình ban đầu FILESTREAM trong Trình quản lý cấu hình máy chủ SQL . Nhưng nó để làm gì?

Cho đến nay

Tôi đã đọc qua tất cả các tài liệu FILESTREAM có sẵn bắt đầu từ:

... nhưng không có đề cập đến chia sẻ và những gì nó làm hoặc những gì nó được làm. Bạn nhập tên và SQL Server sẽ tạo phần chia sẻ.

Cơ sở dữ liệu hỗ trợ FILESTREAM

Khi bạn tạo cơ sở dữ liệu hỗ trợ FILESTREAM, cơ sở dữ liệu sẽ tham chiếu một nhóm tệp tham chiếu một thư mục (được khuyến nghị trên một ổ đĩa riêng) hoàn toàn không liên quan gì đến chia sẻ, ban đầu được tạo trong cấu hình FILESTREAM.

Ảnh chụp màn hình tập lệnh cơ sở dữ liệu hỗ trợ FILESTREAM

Tập lệnh tạo cơ sở dữ liệu hỗ trợ FILESTREAM Vâng, tôi nhận ra rằng tất cả các đường dẫn đều nằm trên C:; nó chỉ là một ví dụ

Sách trắng của Paul Randall et al. tiếp tục khám phá rằng ...

Dữ liệu FILESTREAM được lưu trữ trong hệ thống tệp trong một tập hợp các thư mục NTFS được gọi là bộ chứa dữ liệu, tương ứng với các nhóm tệp đặc biệt trong cơ sở dữ liệu. Quyền truy cập giao dịch vào dữ liệu FILESTREAM được kiểm soát bởi SQL Server và trình điều khiển bộ lọc hệ thống tệp được cài đặt như một phần của việc bật FILESTREAM ở cấp độ Windows. Việc sử dụng trình điều khiển bộ lọc hệ thống tệp cũng cho phép truy cập từ xa vào dữ liệu FILESTREAM thông qua đường dẫn UNC. SQL Server duy trì một liên kết sắp xếp từ các hàng trong bảng đến các tệp FILESTREAM được liên kết với chúng. Điều này có nghĩa là việc xóa hoặc đổi tên bất kỳ tệp FILESTREAM trực tiếp thông qua hệ thống tệp sẽ dẫn đến hỏng cơ sở dữ liệu.

... tiếp tục xuống tài liệu (trang 14) họ tiếp tục với ...

Có một trình điều khiển bộ lọc hệ thống tệp FILESTREAM duy nhất cho mỗi ổ NTFS có bộ chứa dữ liệu FILESTREAM và cũng có một trình điều khiển cho mỗi phiên bản SQL Server có bộ chứa dữ liệu FILESTREAM trên ổ đĩa. Mỗi trình điều khiển bộ lọc chịu trách nhiệm quản lý tất cả các bộ chứa dữ liệu FILESTREAM cho khối lượng đó, cho tất cả các trường hợp sử dụng một phiên bản SQL Server cụ thể.

Ví dụ: một ổ NTFS đang lưu trữ ba bộ chứa dữ liệu FILESTREAM, một bộ chứa cho ba phiên bản SQL Server 2008, sẽ chỉ có một trình điều khiển bộ lọc hệ thống tệp SQL Server 2008 FILESTREAM.

Câu hỏi

  1. Thật tuyệt khi biết rằng SQL Server có mọi thứ tốt đẹp và được gắn kết, nhưng chia sẻ đó thực sự làm gì? Có phải cái gọi là "trình điều khiển bộ lọc hệ thống tập tin" không?
  2. Xem như bất kỳ người dùng được xác thực nào cũng có thể truy cập vào "chia sẻ", ý nghĩa bảo mật là gì?
  3. Thiết bị RsFx0320 có phải là tiền thân của định dạng hệ thống tệp đàn hồi được giới thiệu với Windows Server 2012 không?

Nếu bạn có thể cung cấp câu trả lời cho câu hỏi của tôi, thì thật tuyệt nếu bạn có thể cung cấp một tài liệu tham khảo nguồn.

Câu trả lời:


5

Khi tính năng FILESTREAM được kích hoạt trên Microsoft SQL Server 2012 thì SQL Server sẽ tạo chia sẻ "ẩn" trên hệ thống.

Nó không làm điều này theo mặc định, bạn phải CHẮC CHẮN để kích hoạt chia sẻ. Điều này được thực hiện thông qua Trình quản lý cấu hình SQL Server. Nếu bạn bỏ chọn Enable FILESTREAM for file I/O access, chia sẻ sẽ bị xóa.

nhập mô tả hình ảnh ở đây

  1. Thật tuyệt khi biết rằng SQL Server có mọi thứ tốt đẹp và được gắn kết, nhưng chia sẻ đó thực sự làm gì?

Chia sẻ cho phép khách hàng (cục bộ và từ xa) có một vị trí chia sẻ duy nhất để sử dụng api cửa sổ phát trực tuyến để truy cập vào dữ liệu quay phim. Điều này hoạt động cùng với các cài đặt cấp độ SQL Server Instance để truy cập filestream của Full Access Enabled, mọi cài đặt truy cập khác sẽ không hoạt động với API truyền phát.

nhập mô tả hình ảnh ở đây

  1. ... Có phải cái gọi là "trình điều khiển bộ lọc hệ thống tập tin" không?

Không có nó không phải là. Đây chỉ là một chia sẻ tập tin.

Tôi đã cố gắng không làm vũng nước nhưng bạn đã yêu cầu càng nhiều thông tin càng tốt. Trong văn bản gạch ngang trên tôi đã làm, trên thực tế, nói rằng đây không phải là trình điều khiển bộ lọc. Tuy nhiên, về mặt kỹ thuật là một nửa sự thật. Vâng, nó là một thư mục chia sẻ nhưng nó thực sự chia sẻ thông qua trình điều khiển bộ lọc. Tôi thực sự đã tranh luận về điều này bởi vì nó bắt đầu trở thành một lỗ thỏ mà bạn thực sự không thể đi xuống nếu không có mã nguồn (và thành thật mà nói, nó không có giá trị gì ngoài ý kiến ​​học thuật).

Toàn bộ quan điểm của trình điều khiển bộ lọc là thực hiện một số điều, nhưng một trong những điều đó là cấp quyền truy cập giao dịch vào dữ liệu được lưu trữ trong mục tiêu quay phim thông qua nhiều giao diện khác nhau; Máy chủ SQL, SQL giao dịch, API Windows. Nó cũng thực hiện một số mục khác - tuy nhiên quyền truy cập được chia sẻ thông qua chia sẻ được thực hiện thông qua trình điều khiển bộ lọc. Trong thực tế, nếu bạn cố gắng truy cập các tệp trong một filestream và không phải là quản trị viên hoặc SQL Server, bạn không thể truy cập chúng.

Vì vậy, có điều này cả hai không phải là tài xế lọc. Đó là một nửa tệp windows được hiển thị thông qua trình điều khiển bộ lọc. Bạn có thể thấy đây là bạn xem thuộc tính đường dẫn của chia sẻ.

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

2. Xem như bất kỳ người dùng được xác thực nào cũng có thể truy cập vào "chia sẻ", ý nghĩa bảo mật là gì?

Bạn có thể thay đổi quyền và yêu cầu cài đặt được đặt đúng. Ý nghĩa bảo mật là của bất kỳ chia sẻ tập tin khác.

3. Thiết bị RsFx0320 có phải là tiền thân của định dạng hệ thống tệp đàn hồi được giới thiệu với Windows Server 2012 không?

Không, đây là tên của một phiên bản cụ thể của trình điều khiển bộ lọc. Ví dụ, đây là một hệ thống với một năm 2016 được tải RsFx0410. ReFS là một hệ thống tệp, đây là trình điều khiển bộ lọc nằm giữa hệ thống tệp và trình điều khiển miniport. Thực sự khá khó tin rằng đây là trình điều khiển bộ lọc kế thừa được ký hiệu là .10 ở cuối độ cao ... hmm. Bạn cũng sẽ nhận thấy nó có độ cao khá thấp , thường không được chấp nhận đối với trình điều khiển bộ lọc của bên thứ 3.

nhập mô tả hình ảnh ở đây

Nếu bạn có thể cung cấp câu trả lời cho câu hỏi của tôi, thì thật tuyệt nếu bạn có thể cung cấp một tài liệu tham khảo nguồn.

Tôi không có nguồn cho việc này nhưng đã sao lưu thông tin của mình thông qua ảnh chụp màn hình và các tùy chọn cấu hình thay đổi cài đặt. Mọi thứ trong câu trả lời này có thể được tìm thấy bằng cách xem qua chính sản phẩm và biết cách các phần của cửa sổ hoạt động (ví dụ: trình điều khiển bộ lọc).


Cảm ơn câu trả lời cho 1, 2 & 3. Tôi đặc biệt đánh giá cao lời giải thích của bạn về trình điều khiển bộ lọc. Nhận xét của bạn khi bắt đầu được ghi chú hợp lệ, nhưng tôi nhận ra rằng chia sẻ sẽ chỉ được tạo nếu tôi kích hoạt tùy chọn trong các tùy chọn FILESTREAM. Tôi đã đọc một số lượng lớn tài liệu liên quan đến cấu hình / cài đặt của FILESTREAM và nội dung bên trong.
John aka hot2use

2

Đây là câu hỏi của tôi về câu hỏi của bạn:

1. Thật vui khi biết rằng SQL Server có mọi thứ tốt đẹp và được gắn kết, nhưng chia sẻ đó thực sự làm gì? Có phải cái gọi là "trình điều khiển bộ lọc hệ thống tập tin" không?

Truy cập luồng tệp SQL Server là tất cả về quyền truy cập vào tệp. Chia sẻ cung cấp vị trí đó thông qua một chia sẻ tập tin.

Bạn có thể dễ dàng thấy điều này với một số mã C # bằng cách sử dụng OpenSqlFilestream trên

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

Như bạn có thể thấy, không có FILE_SHARE_READ cho CreatFile và không có phép thuật tập tin, không có đoạn phim:

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

Lưu ý: Về lý do tại sao không có tùy chọn FILESTREAM không có máy chủ cục bộ - tôi không có đầu mối. Âm thanh như một số người có thể thích mức độ bảo mật thêm.

2. Xem như bất kỳ người dùng được xác thực nào cũng có thể truy cập vào "chia sẻ", ý nghĩa bảo mật là gì?

Wow, câu hỏi tuyệt vời. Dường như, các quyền chia sẻ có sẵn cho bất kỳ người dùng được xác thực nào, nhưng, các quyền NTFS cơ bản sẽ tinh chỉnh bảo mật. Nhưng, điều này có vẻ như là một lỗ hổng bảo mật đối với tôi. Tôi sẽ phải điều tra thêm về cách điều chỉnh các quyền NTFS nhưng tôi chắc chắn không thích các quyền chia sẻ tệp chung chung. Nào Microsoft, TẤT CẢ "người dùng xác thực"? Đúng hay sai, tôi nghĩ Microsoft có xu hướng bỏ qua việc chia sẻ / tập trung vào các quyền NTFS.

Cung cấp "người dùng xác thực" đã là một chủ đề tranh luận trong nhiều năm. Đây là một trong những blog tốt nhất tôi đã đọc qua lại về "người dùng được xác thực". Nó cố thủ quá nhiều trong Windows Tôi không nghĩ họ từng nói đó là rủi ro chính đáng - cho đến khi sản phẩm mới của họ ra mắt đã loại bỏ nó.

https://social.technet.microsoft.com/Forums/windowsserver/en-US/bb74fa7c-89bd-476d-88bf-e88cd66618e6/why-is-authenticated-users-in-the-local-users- mặc định? forum = winerversecurance

3. Thiết bị RsFx0320 có phải là tiền thân của định dạng hệ thống tệp đàn hồi được giới thiệu với Windows Server 2012 không?

Có vẻ là dựa trên SQL chứ không phải dựa trên O / S. RsFx0320.sys là SQL 2008. Như được thấy bên dưới SQL 2012 là RsFx0201.sys và SQL 2014 là RsFx0300.sys:

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

Microsoft cho thấy những gì có thể xảy ra khi bạn nâng cấp từ 2012 đến 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}'

Cảm ơn câu trả lời cho câu hỏi của tôi 2 & 3. Tôi nhận ra câu trả lời của bạn 1, rằng tôi có thể truy cập dữ liệu thông qua chia sẻ đó, nhưng tôi đã tự hỏi về cách thức, do đó, tiêu đề "Tìm kiếm thông tin nội bộ của FILESTREAM ".
John aka hot2use
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.