Archive

Posts Tagged ‘SQL08’

POLICY – BASED MANAGEMENT trong SQL Server 2008


Bạn đã từng chắc chắn rằng việc đăng nhập hay các nhóm người dùng của WIndows đều được đưa vào trong SQL Server, hay dịch vụ xp_cmdshell bị tắt đi, hoặc là không có một Store Procedure nào có định danh bắt đầu với “sp_”? Bạn đã từng làm việc với nhiều hơn một server trong hệ thống của bạn? Và đây chắc chắn là một vấn đề phức tạp, gây nhiều khó khăn khi làm việc với nhiều server, từ một instance của server này đến một instance của một server khác, việc truy vấn các đối tượng hệ thống, kiểm tra các thiết lập cấu hình, đảm bảo các instances của SQL Server đều được ổn định. Toàn bộ qui trình đều đã được thay đổi trong SQL Server 2008.

Policy Management in SQL Server 2008

Phiên bản SQL Server 2008 giới thiệu đến cho chúng ta một tính năng mới được biết đến với tên gọi “Policy – Based Management”. Framework này hỗ trợ bạn thiết lập các chính sách trên các đối tượng khác nhau và sau đó các policy này sẽ được thực hiện tự động hoặc là thủ công, để ngăn chặn các thay đổi vi phạm chính sách. Việc quản lí trở nên rất đơn giản thông qua công cụ SQL Server Management Studio, hoặc bạn có thể xây dựng các bộ mã nguồn của riêng mình trong việc quản lí các chính sách. Chúng ta hãy bắt đầu từ đầu.

Framework này hỗ trợ chúng ta quản lí một cách dễ dàng và tiên phong trong việc quản lí các chính sách khác nhau, sắp xếp 1 dãy từ việc bảo mật dữ liệu đến việc quản lí siêu dữ liệu. Và được thực hiện bằng 2 cách:

  • Hỗ trợ việc giám sát các thay đổi với các chính sách đã được thiết lập, tùy chọn này cho phép việc kiểm tra các chính sách một cách thủ công, kiểm tra các chính sách theo thời khóa biểu, ghi nhận các thay đổi của chính sách và các truy xuất bất hợp pháp.
  • Cho phép quản lí một hay nhiều instances của SQL Server trêng 1 server hay thông qua nhiều server.

Bạn có thể thiết lập ngay lập tức các chính sách quản lí cho sql server của bạn dựa trên các đặc tả hệ thống và ngăn chặn các thay đổi với các chính sách này, và ghi nhận lại các truy xuất bát hợp pháp vào trong server, vi phạm chính sách quản lí đã được thiết lập. Khả năng ngăn chặn các thay đổi phụ thuộc vào các tính năng, các khía cạnh khác và tùy thuộc vào chính sách mà bạn đã thiết lập.  Ví dụ, nếu như bạn muốn xp_cmdshell không bao giờ được bật trên bất cứ server nào được bạn quản lí, bạn có thể thiết lập chính sách kiểm tra việc này, và khi có thay đổi sẽ thông báo đến bạn,,  đồng thời được ghi nhận lại, thậm chí là bạn có thể tiến hành kiểm tra theo thời kóa biểu đã được thiết lập, nhưng bạn không thể ngăn chặn các thay đổi này một cách hoàn toàn tự động. Khả năng ngăn chặn các thay đổi rất đa dạng, phụ thuộc vào từng khía cạnh của bài toán.

Policy – Based Management in SQL Server  Management Studio

Việc thực hành tạo và áp các chính sách một cách dễ dàng với SQL Server Management Studio. Việc quản lí dựa trên các chính sách dễ dàng bị truy xuất bởi Policy Management trong Objects Explorer, như trong hình sau

Trong Objects Explorer, bạn dễ dàng tìm thấy được 3 items cơ bản là: Policies, Conditions, and Facets. Tuy không hiển thị ra ngoài, nhưng Policy Access Management có thể được truy xuất bằng cách phải chuột trên Policy Management của Object Explorer và chọn Manage Categories. Nhưng chúng ta sử dụng các chức năng này như thế nào? Bạn đừng lo, chúng ta sẽ đi sâu hơn vào trong các phần sau.

Policy – Based Management Objects

Policy – Based Management dùng nhiều đối tượng khác nhau để quản lí chính sách như: facets, conditions, policies, targets và categories.

Facets – các khía cạnh, tác vụ trong việc quản lí SQL Server Management

Facets là đơn vị trong framework. Facets là một loại đối tượng, như tính năng Surface Area, server, logon, database, user và một số vấn để khác. Mỗi facet là một tập các thuộc tính được định nghĩa trước áp vào các điều kiện được thiết lập.

Trong phiên bản CTP của SQL Server 2008, có tổng cộng 47 facets, với tổng cộng hơn 1492 thuộc tính. Bộ công cụ SQL Server Management Studio bao gồm một danh sách các facets dưới node FACETS trong Objects Explorer (Tìm thấy dưới Management\Policy Management).

 

Nếu như bạn muốn xem danh sách các thuộc tính của mỗi facets, bạn hãy mở Properties của mỗi facet. Nếu như muốn xem nhanh danh sách và các thuộc tính của mỗi facet, bạn có thể dùng SQL Server Management Objects (SMO) để lặp qua các facets hiện hữu và các thuộc tính tương ứng như sau:

Facets – bản chất không thể tự đưa vào ứng dụng các Policies. Chúng được dùng bởi Conditions, để định nghĩa các Rules bạn cần và áp đặt vào các database, servers, hoặc các đối tượnng khác mà policies cần kiểm tra, giám sát.

Conditions – các điều kiện trong quản lí của SQL Server

Condition là một biểu thức  xác định trạng thái của một facet. Việc đặc tả một điều kiện bằng cách thiết lập các thuộc tính cho facet, các toán tử so sánh, và giá trị. Mội thuộc tính điều kiện trạng thái được thiết lập riêng cho từng loại dữ liệu  đặc trưng. Ví dụ, thuộc tính Name của facet Store Procedure thuộc kiểu dữ liệu String và ta có toán tử điều kiện là “bằng” (=), “không bằng” (!=), LIKE, NOT LIKE, IN, hoặc NOT IN, và có thể được so sánh với một String khác hay một danh sách các String. Thuộc tính SQL Mail của Surface Area facet có kiểu dữ liệu là Boolean, và chỉ có toán tử bằng và không bằng, đồng thời chỉ có tập giá trị là True và False.

Ngoài ra, một condition có thể chỉ gồm 1 thuộc tính của 1 loại facet đơn lẻ. Ví dụ, bạn có thể tạo một condition với state như sau “SQL Mail is disable and Database Mail is disable” bởi vì các thuộc tính này là thành phần của Surface Area facet. Bạn không thể tạo 1 condition cho 2 thuộc tính thuộc 2 facets khác nhau. Ví dụ như “Store Procedure Names must begin with ‘pr’ and xp_cmdshell is disable”. (2 facets đó là Store Procedure và Surface Area).

Bạn có thể tạo nhiều conditions cho cùng một facet, tuy nhiên việc làm này không nên làm cho 1 server, vì 1 trong 2 conditions sẽ ko có tác dụng. Ví dụ như bạn có thể tạo 2 conditions sau “SQL Mail is disable and Database Mail is disable” và “SQL Mail is enable and Database Mail is disable” cho cùng facet Surface Area.

SQL Server 2008 với một tập các conditions đựoc định nghĩa trước, bạn có thể sử dụng ngay lập tức. Ví dụ một condition có tên là Auto Shrink Disable – được sử dụng bởi một policy để đảm bảo rằng database không  được bật tùy chọn Auto Shrink.

Như mình đã trình bày ở phần trên, các bạn có thể thiết lập nhiều thuộc tính cho cùng một condition, một condition đa thuôc tính được thiết lập thông qua các toán tử OR, AND, …

Policies – các chính sách quản lí

Một policy kết hợp với một điều kiện với mục đích thúc đẩy hoặc kiểm tra điều kiện trên một hoặc nhiều server. Excution Mode của Policy xác định cách mà một policy được đưa vào thực hiện như thế nào. Excution Mode có 4 giá trị:

  • On Demand: Không kiểm tra hay thực hiện Policy. Chế độ này dùng là chế độ kiểm tra policy một cách thủ công.
  • On Schedule: Kiểm tra policy theo thời khóa biểu và tự động log thông tin lại khi có sự vi phạm policy
  • On Change – Log Only: Kiểm tra policy bất  khi nào có sự thay đổi thuộc tính liên quan của facet và log lại thông tin nếu như có sự vi phạm
  • On Change – Prevent: Kiểm tra policy bất cứ khi nào có sự thay đổi thuộc tính liên quan của facet và log lại thông tin, không chấp nhận sự thay đổi.

Tất cả policies đều có excution mode là On Demand hoặc On shedule. Nhưng chỉ một ít, có thể thiết lập giữa On Change – Log Only hoặc On Change – Prevent. Thiết lập cấu hình của Excution Mode thuộc một Policy được xác định bởi Condition cơ bản của Facet tương ứng. Thuộc tính của facet tương ứng có thể không cho phép bất cứ sự thay đổi nào. Bất cứ facet nào được kiểm tra bị log lại chỉ khi nào thay đổi đó vi phạm policy, hoặc là được check theo thời khóa biểu đã được thiết lập trước.

Target Sets

Conditions là nền tảng của việc thực hiện các Policies,ngoài ra còn được dùng trong các filter policies thông qua các target sets. Một target sets bao gồm một hay nhiều đối tượng trong cây phân cấp đối tượng, ví dụ như database, table, và conditions có nhiệm vụ lọc các đối tượng này khi policies tiến hành kiểm tra.

Tronng việc sử dụng target sets, ta liên kết với các conditions trong việc kiểm tra, ta có thể dùng các loại khác nhau của facets cơ bản của cùng một policy, thông qua việc dùng một condition để kiểm tra từng cấp độ một trong cây phân cấp các đối tượng.

Policy Category

Policy Category có chức năng nhóm các policies lại với nhau và hiện thực việc kiểm tra của các policy hoặc có thể cho phép các nhà quản trị database khả năng đặc tả tùy chọn tập các policy. Một policy thuộc về một policy category do người dùng định nghĩa hoặc là Category mặc định. Các policy Categories có thể được tạo khi định nghĩa một policy và được quản lí thông qua Manage Policy Categories Dialog Box.

Ta có thể tạo và enable một tập các policies, nhóm chúng lại trong một Policy Category và force cho toàn bộ các database để thực hiện các policies này. Nếu bạn không đưa một policy vào trong một Policy Category thì mặc định policy này sẽ được đưa vào trong Default Category. Đặc điểm của Default Category là không thể thay đổi một cách tùy ý các tùy chọn. Nếu như bạn áp 1 loạt các policy cho một loạt các database, nhưng có 1 database đặc biệt có tùy chọn khác với các databse khác thì bạn phải đưa policy này vào một category khác với Default Category và tùy chỉnh lại cấu hình.

Advertisements