An toàn DB2 UDB, Phần 2: Hiểu các trình cắm thêm an
toàn của DB2 cho Linux, UNIX và Windows
Các trình cắm thêm an toàn DB2 — Bức tranh tổng thể
Các trình cắm thêm an toàn là các thư viện có thể tải một cách động mà DB2 gọi ra khi thực hiện
xác thực hoặc tra tìm thành viên nhóm cho người dùng. Trước phiên bản 8.2, một phương tiện
bên ngoài thay cho DB2 đã quản lý các hoạt động này, ví dụ như hệ điều hành, một bộ điều
khiển miền, hoặc một hệ thống an toàn Kerberos. Hình 1 cung cấp các kịch bản minh họa cách
an toàn DB2 đã làm việc trước phiên bản 8.2. Các phần tiếp theo mô tả những gì đã thay đổi với
phiên bản 8.2.
Hình 1. Các kịch bản an toàn Hình 1 minh họa bốn kịch bản an toàn:
1. Các cân nhắc về an toàn khi kết nối với một cơ sở dữ liệu từ một hệ thống máy
khách đến một hệ thống máy chủ
Ở phía bên trái của Hình 1, một người dùng đã ban hành câu lệnh connect to mydb
user raul using raulpsw (kết nối với người dùng mydb là raul bằng cách sử dụng
raulpsw) từ cửa sổ Bộ xử lý dòng lệnh (CLP) của một hệ thống máy khách DB2 để kết
nối với cơ sở dữ liệu mydb, lưu trú trên máy chủ DB2 Aries. Máy khách DB2 giao tiếp
với máy chủ và thỏa thuận sử dụng phương thức xác thực nào. Để đơn giản, chúng ta hãy
giả sử máy khách sử dụng phương thức xác thực do máy chủ trả về. Trong hình này,
AUTHENTICATION được thiết lập cho SERVER. Điều này có nghĩa là hệ điều hành
máy chủ (I) sẽ thực hiện xác thực bằng cách kiểm tra xem ID và mật khẩu người dùng đã
cấp có phù hợp theo các giá trị được lưu trữ trong cơ sở dữ liệu an toàn của hệ điều hành
không. Một khi người dùng được xác thực, DB2 sẽ lấy thông tin thành viên nhóm từ hệ
điều hành. Từ thời điểm tiếp theo, DB2 sẽ không còn sử dụng ID hoặc mật khẩu người
dùng cho bất kỳ việc kiểm tra nào nữa, thay vào đó, DB2 sẽ sử dụng ID ủy quyền
(authID). Nói chung, một authID là phiên bản chữ hoa của một ID người dùng.
2. Các cân nhắc về an toàn khi thực hiện các câu lệnh SQL sau khi kết nối vào cơ sở
dữ liệu
Trong mỗi kịch bản, hệ điều hành được gọi để thực hiện các việc kiểm tra an toàn. Bắt đầu với
phiên bản 8.2, có thể sử dụng các trình cắm thêm an toàn trong mỗi tình huống này. Thay vì luôn
gọi hệ điều hành, có thể gọi một trình cắm thêm máy chủ và nhóm trong kịch bản 1, có thể gọi
một trình cắm thêm nhóm trong kịch bản 2, và có thể gọi các trình cắm thêm máy khách và
nhóm trong kịch bản 3 và 4.
Ví dụ này giới thiệu ba thể loại trình cắm thêm an toàn:
Trình cắm thêm an toàn xác thực phía máy chủ (trình cắm thêm xác thực phía máy chủ).
Trình cắm thêm an toàn xác thực phía máy khách (trình cắm thêm xác thực phía máy
khách).
Trình cắm thêm an toàn tra tìm thành viên nhóm (trình cắm thêm nhóm).
Trình cắm thêm xác thực máy chủ thực hiện xác thực trên máy chủ cơ sở dữ liệu. Nó cũng được
sử dụng để kiểm tra xem trình cắm thêm có biết authID không. Ví dụ, hãy xem xét câu lệnh SQL
grant select on table user1.t1 to FOO, (cấp chọn trên bảng user1.t1 cho FOO), ở đây
DB2 không biết liệu FOO có là một người dùng hoặc nhóm không. Trong trường hợp này, DB2
tra cứu tất cả các trình cắm thêm phía máy chủ và các trình cắm thêm thành viên nhóm để kiểm
tra xem FOO có là một người dùng, một nhóm, không rõ, hoặc cả hai không, để nó có thể đáp
ứng cho phù hợp với câu lệnh SQL.
Trình cắm thêm xác thực máy khách thực hiện xác thực trên máy khách. Nó cũng được dùng để
thực hiện xác thực cục bộ mức cá thể trên máy chủ cơ sở dữ liệu khi thực hiện các lệnh mức cá
thể (chẳng hạn như db2start, db2stop, db2trc, update dbm cfg, và v.v ) Vì vậy, phổ biến là
xem cả hai trình cắm thêm xác thực máy khách và trình cắm thêm xác thực máy chủ được chỉ rõ
trên một máy chủ cơ sở dữ liệu.
Trình cắm thêm nhóm thực hiện tra tìm thành viên nhóm trên cả máy khách lẫn máy chủ cơ sở
dữ liệu. Nó cũng được dùng để kiểm tra xem trình cắm thêm có biết authID không.
Mỗi trình cắm thêm an toàn có chứa một tập các API mà bạn cần thực hiện. DB2 cung cấp cơ sở
hạ tầng của trình cắm thêm an toàn và một số trình cắm thêm an toàn mặc định. Để dành việc
thực hiện trình cắm thêm an toàn tùy chỉnh cho bạn tự quyết định.
Về đầu trang
Các ưu điểm của việc sử dụng trình cắm thêm an toàn
Các ưu điểm chính của việc sử dụng cơ chế an toàn mới của DB2 là tính linh hoạt và tính mở
Ô bên phải trong mỗi cửa sổ của Hình 3 cho thấy các trình cắm thêm mặc định khác nhau. Bảng
1 dưới đây mô tả từng trình cắm thêm này.
Bảng 1. Các trình cắm thêm mặc định IBM DB2
Tên trình cắm
thêm
Mô tả
1IBMOSauthclient Đây là trình cắm thêm xác thực dựa vào hệ điều hành phía máy khách.
2IBMOSauthserver Đây là trình cắm thêm xác thực dựa vào hệ điều hành phía máy chủ.
3IBMOSgroup Đây là trình cắm thêm thành viên nhóm dựa vào hệ điều hành.
4IBMkrb5
Đây là trình cắm thêm an toàn Kerberos (có cả hai mã phía máy khách và
mã phía máy chủ trong cùng một thư viện).
Bất kỳ trình cắm thêm nào trong Hình 3 có hậu tố "TwoPart" đều thực hiện cùng một phương
thức xác thực như một trình cắm thêm không có hậu tố đó, nhưng nó đã thêm khả năng xử lý các
authID hai phần. Các authID hai phần cho phép sử dụng các vùng tên [c1], vì vậy, nhiều tài
khoản có thể sử dụng cùng authID miễn là chúng đang ở trong các vùng tên khác nhau. Ví dụ, cả
hai DOMAIN1\SUSHMA và DOMAIN2\SUSHMA là các authID hợp lệ cho một trình cắm
thêm xử lý các authID hai phần. Trong các ví dụ này, DOMAIN1 và DOMAIN2 là các vùng tên
(theo Windows, gọi chung là các miền của Windows).
Nếu bạn không muốn sử dụng các trình cắm thêm mặc định, bạn có thể hoặc viết các trình cắm
thêm an toàn riêng của bạn, hoặc mua chúng từ một nhà cung cấp thứ ba. Bất kể bạn chọn cách
nào, bạn cần tuân thủ các quy tắc cơ bản do DB2 đưa ra để viết trình các cắm thêm an toàn. Điều
này được thảo luận chi tiết hơn trong phần sau.
Về đầu trang
Các trình cắm thêm ID/mật khẩu người dùng so với các trình cắm thêm GSS-API
Trước khi bạn bắt đầu phát triển các trình cắm thêm riêng của mình, bạn cần hiểu rằng khi sử
một máy chủ DB2 có một danh sách các các trình cắm thêm GSS-API mà nó hỗ trợ. Khi máy
khách #1 kết nối đến máy chủ, máy chủ sẽ duyệt qua danh sách các trình cắm thêm của mình
theo thứ tự từ trái sang phải cho đến khi nó tìm thấy một trình cắm thêm phù hợp với trình cắm
thêm của máy khách, và sau đó sử dụng trình cắm thêm này. Vì vậy, đối với máy khách này máy
chủ thấy rằng trình cắm thêm đầu tiên được nó hỗ trợ là ABC, và phù hợp với ABC.dll, do đó,
máy chủ chọn trình cắm thêm này. Không cần tiếp tục duyệt danh sách xuống nữa, mặc dù trình
cắm thêm DEF cũng được cả hai máy khách và máy chủ hỗ trợ. Đối với máy khách #3, một lỗi
(mã lý do SQLCODE -30082 số 15) được trả về, do không có một trình cắm thêm GSS-API nào
phù hợp giữa máy khách và máy chủ.
Một cá thể máy chủ DB2 sẽ chỉ có thể hỗ trợ một mô đun xác thực ID/mật khẩu người dùng,
nhưng sẽ có thể hỗ trợ một danh sách các trình cắm thêm GSS-API. Tuy nhiên, chỉ có một trình
cắm thêm trong danh sách có thể là một trình cắm thêm Kerberos. Các ứng dụng khách DB2 sẽ
chỉ có thể hỗ trợ một mô đun ID/mật khẩu người dùng, nhưng sẽ thỏa thuận với máy chủ về một
trình cắm thêm GSS-API cụ thể.
Các trình cắm thêm GSS-API phức tạp hơn, và cần có một sự hiểu biết rõ về khái niệm GSS-API
quan trọng.
Về đầu trang
Các tính năng mới có sẵn trong các trình cắm thêm an toàn tùy chỉnh
Với kết quả của mô hình trình cắm thêm an toàn mới được giới thiệu trong Phiên bản 8.2, bạn có
thể:
Thực hiện ánh xạ lại userID, mật khẩu, và vùng tên trên máy khách. Điều này chỉ có thể
áp dụng cho các trình cắm thêm dựa trên ID/mật khẩu người dùng. Tính năng này có
công dụng đặc biệt trong một hệ thống ba tầng ở đó máy chủ Web và máy khách DB2 tạo
nên tầng giữa. Một ví dụ về ánh xạ lại userID, mật khẩu, và vùng tên được minh họa
trong ví dụ 1 của phần Các ví dụ, ở đây người dùng sugsc1ch và mật khẩu của anh ta
được trình cắm thêm máy khách ánh xạ tới người dùng Newton và mật khẩu của anh ta
trước khi gửi yêu cầu kết nối đến máy chủ.
Thực hiện ánh xạ lại authID trên máy chủ. Tính năng này cho phép các ID người dùng
khác nhau chia sẻ cùng ID ủy quyền trên máy chủ cơ sở dữ liệu một khi được xác thực.
Tính năng này được biểu thị trong các thử nghiệm với ví dụ 1 của phần Các ví dụ. Ví dụ,
5. Đặt thư viện này trong thư mục thích hợp.
6. Chạy các trình cắm thêm bằng cách cập nhật các tham số của trình quản lý cơ sở dữ liệu.
Bước 1: Bao gồm các tệp tiêu đề của trình cắm thêm an toàn trong trong trình cắm thêm của bạn
db2secPlugin.h và gssapiDB2.h hai tệp tiêu đề cần thiết để thực hiện các trình cắm thêm an toàn
tùy chỉnh. Tệp tiêu đề gssapiDB2.h chỉ cần thiết nếu bạn đang xây dựng một trình cắm thêm
GSS-API. Hình 5 cho thấy vị trí của hai tệp tiêu đề cần thiết để thực hiện trình cắm thêm an toàn
trên một hệ thống Windows.
Hình 5. Vị trí các tệp tiêu đề của trình cắm thêm trên một hệ thống Windows
Bước 2: Viết các API cấu thành trình cắm thêm của bạn
Tùy thuộc vào liệu bạn có đang làm việc trên một trình cắm thêm máy chủ, trình cắm thêm máy
khách, hoặc trình cắm thêm nhóm hay không, bạn sẽ cần mã hóa các API tương ứng sau đây để
khởi tạo trình cắm thêm:
db2secServerAuthPluginInit
db2secClientAuthPluginInit
db2secGroupPluginInit
Ví dụ, API db2secServerAuthPluginInit có thể được mã hóa theo cách sau:
Liệt kê 1. db2secServerAuthPluginInit
SQL_API_RC SQL_API_FN db2secServerAuthPluginInit(
db2int32 version,
void* server_fns,
db2secGetConDetails* getConDetails_fn,
db2secLogMessage* logMessage_fn,
char** errormsg,
db2int32* errormsglen)
{
struct userid_password_server_auth_functions_1
hàm này thực hiện.
Lưu ý: Các hướng dẫn sử dụng DB2 có một phần mô tả chi tiết cách phát triển các trình cắm
thêm an toàn, cũng như các giải thích về các API của trình cắm thêm an toàn. Các chi tiết đó
nằm ngoài phạm vi của bài này. Phần này chỉ trình bày một tổng quan về API của trình cắm
thêm đơn giản.
Hình 6. Trình cắm thêm tra tìm thành viên nhóm
Hình 7. Trình cắm thêm máy khách
Hình 8. Trình cắm thêm máy chủ
Bước 3: Điền cấu trúc con trỏ hàm trước khi trả về cho DB2
Con trỏ hàm trả về các con trỏ tới tất cả các API cần thiết cho thư viện trình cắm thêm cụ thể mà
bạn đã thực hiện. Ví dụ, trong trường hợp các trình cắm thêm nhóm, nó chứa các con trỏ cho các
công cụ của các API db2secDoesGroupExist, db2secFreeErrormsg,
db2secFreeGroupListMemory, db2secGetGroupsForUser, và db2secPluginTerm của bạn.
Tệp txtgroup.c, có trong tệp ZIP đính kèm ở cuối bài này, cung cấp một ví dụ về cách bạn có thể
điền con trỏ các hàm cho thư viện trình cắm thêm nhóm. Dưới đây là một đoạn trích của mã này.
fns->version = DB2SEC_API_VERSION;
fns->db2secDoesGroupExist = &is_group;
fns->db2secFreeErrormsg = &free_error_message;
fns->db2secFreeGroupListMemory = &free_group_list;
fns->db2secGetGroupsForUser = &get_groups;
fns->db2secPluginTerm = &terminate_plugin;
o sqllib/security32/plugin/IBM/group
Trong Linux và UNIX, các thư mục tương tự cho các thư viện 64-bit được sử dụng như nói trên,
trừ tên thư mục con security64 được sử dụng thay cho security32. Trên các cá thể 64-bit của
Windows, các trình cắm thêm 32-bit và 64-bit sẽ nằm trong cùng thư mục, nhưng các trình cắm
thêm 64-bit sẽ được thêm vào một hậu tố '64', ví dụ, myplugin64.dll.
Lưu ý: Thư mục con IBM (trong thư mục plugin) được dành riêng cho các trình cắm thêm mặc
định do IBM cung cấp. Bất kỳ trình cắm thêm tùy chỉnh nào khác được đặt trong thư mục này sẽ
bị bỏ qua.
Bước 6: Chạy các trình cắm thêm bằng cách cập nhật các tham số của trình quản lý cơ sở dữ liệu
Trước phiên bản 8.2, tham số cấu hình của trình quản lý cơ sở dữ liệu authentication đã nói rõ
vị trí và cơ chế để thực hiện các việc kiểm tra CONNECT/ATTACH, tra tìm nhóm, và ủy quyền
cục bộ. Với phiên bản 8.2, có sẵn nhiều tham số cấu hình hơn, cung cấp nhiều sự linh hoạt hơn
trong việc lựa chọn các tùy chọn xác thực.
Bảng 2 cung cấp một danh sách các tham số cấu hình trình quản lý cơ sở dữ liệu áp dụng cho các
trình cắm thêm, và giải thích về cách chúng áp dụng cho các trình cắm thêm an toàn.
Bảng 2. Mô tả các tham số cấu hình của trình quản lý cơ sở dữ liệu của trình cắm thêm an
toàn
Tên tham số Mô tả
1
Trình cắm thêm ID/mật khẩu người
dùng của máy khách
(CLNT_PW_PLUGIN)
N
ếu giá trị này được thiết lập tại máy khách, và tham số
AUTHENTICATION tại máy chủ được thiết lập là
CLIENT, tham số này cho biết trình cắm thêm ID/mật
khẩu người dùng để dùng cho việc xác thực được thực
hiện ở máy khách. Nếu giá trị này được thiết lập ở máy
lý cơ sở dữ liệu AUTHENTICATION được thiết lập là
GSSPLUGIN hoặc GSS_SERVER_ENCRYPT.
GSSPLUGIN cho biết rằng máy chủ sẽ chỉ xác thực bằng
cách sử dụng một trình cắm thêm dựa trên GSS-API mà
máy chủ đã quen dùng.
GSSPLUGIN_SERVER_ENCRYPT cho biết máy chủ sẽ
chấp nhận thêm các yêu cầu ID/mật khẩu người dùng
được mã hóa; kiểu này được tạo sẵn chủ yếu cho tương
thích hướng xuống.
5
Chế độ trình cắm thêm máy
chủ(SRV_PLUGIN_MODE)
Tham số này quy định liệu có chạy trong chế độ có rào
chắn hoặc chế độ không có rào chắn hay không. Giá trị
mặc định — và giá trị được hỗ trợ duy nhất — là
UNFENCED (không có rào chắn).
6
Danh sách máy chủ của các trình
cắm thêm GSS-API
(SRVCON_GSSPLUGIN_LIST)
Tham số này quy định một danh sách được phân cách
bằng dấu phẩy của các thư viện trình cắm thêm GSS-API
được máy chủ cơ sở dữ liệu hỗ trợ. Danh sách này có thể
chứa một trình cắm thêm Kerberos duy nhất. Nếu tham số
này để trống, và AUTHENTICATION được thiết lập là
Kerberos hoặc KRB_SVR_ENCRYPT, thì trình cắm th
êm
Kerberos của DB2 mặc định (IBMkrb5) sẽ được sử dụng.
7
Trình cắm thêm ID/mật khẩu người
Cập nhật CLNT_PW_PLUGIN
với tên trình cắm th
êm máy khách.
N
ếu CLNT_PW_PLUGIN để
trống, bước này sẽ mặc định là
IBMOSauthclient, một trình cắm
thêm do IBM cung cấp.
Cập nhật SRVCON_PW_PLUGIN với tên trình cắm thêm
máy chủ.
2
Đặt SRVCON_AUTH tới một kiểu xác thực hệ thống
(CLIENT, SERVER, SERVER_ENCRYPT,
DATA_ENCRYPT, hoặc DATA_ENCRYPT_CMP), hoặc
thiết lập SRVCON_AUTH là NOT_SPECIFIED và thi
ết lập
AUTHENTICATION tới một kiểu xác thực hệ thống.
N
ếu SRVCON_PW_PLUGIN để trống, bước này sẽ mặc
định là IBMOSauthserver, trình cắm thêm do IBM cung cấp.Bảng 4 cho thấy các bước mà bạn sẽ nhận được để chạy các trình cắm thêm tra tìm thành viên
nhóm bằng cách sử dụng các tham số cấu hình được liệt kê ở trên.
Bảng 4. Các bước để chạy các trình cắm thêm tra tìm thành viên nhóm
Các bước trên máy khách Các bước trên máy chủ
1
Nhi
ều trình cắm thêm có thể cùng tồn tại tr
ên
máy khách. Trong trường hợp này, máy chủ
sẽ nói rõ sử dụng một trình cắm thêm nào.
Cập nhật SRVCON_GSSPLUGIN_LIST với một
danh sách theo thứ tự các tên của trình cắm thêm
có hỗ trợ. Để chạy trình cắm thêm GSS-API, bạn
có thể hoặc:
Đặt SRVCON_AUTH là GSSPLUGIN,
hoặc
Đặt SRVCON_AUTH là
NOT_SPECIFIED, và đặt
AUTHENTICATION là GSSPLUGIN.
Để chạy ủy quyền cục bộ:
1. Đặt thư viện trình cắm thêm máy khách
trong thư mục trình cắm thêm máy khách.
2. Cập nhật LOCAL_GSSPLUGIN với tên
của trình cắm thêm này.
Bảng 6 cho thấy các bước bạn sẽ nhận được để chạy các trình cắm thêm xác thực Kerberos bằng
cách sử dụng các tham số cấu hình liệt kê ở trên.
Bảng 6. Các bước để chạy các trình cắm thêm Kerberos
Các bước trên máy khách Các bước trên máy chủ
1
Đặt thư viện trình cắm thêm trong thư mục
trình cắm thêm máy khách.
AUTHENTICATION là KERBEROS hoặc
KRB_SERVER_ENCRYPT.
Về đầu trang
Các ví dụ trình diễn cách thực hiện các trình cắm thêm an toàn đơn giản
Tệp ZIP đi kèm theo bài này gồm có mã nguồn của các trình cắm thêm được sử dụng trong phần
này và một tệp README có nhiều thông tin hơn về chúng.
Ví dụ 1: Thực hiện một trình cắm thêm an toàn ID/mật khẩu người dùng đơn giản
Các tệp cần thiết: txtserver.c, txtclient.c, txtcommon.c, và txtplugin_makefile.
Bạn sẽ cần thực hiện cả hai trình cắm thêm phía máy chủ và phía khách như sau.
1. Mở tệp txtcommon.c và sửa đổi dòng sau đây để chứa ID và mật khẩu người dùng của
bạn. Giữ lại authID là REMAP. Thay đổi myuserid theo ID người dùng của bạn và
er9etw0 theo mật khẩu của bạn.
{ 0, 0, "REMAP", "REMAP", "myuserid", "er9etw0", "build" }
2. Tạo một thư mục con dưới thư mục C:\ \sqllib\security\plugins, đặt tên thư mục mới sau
tên cá thể của bạn.
3. Tạo hai thư mục con có tên là máy khách và máy chủ trong thư mục con mà bạn đã tạo ở
bước trước.
4. Ban hành các lệnh sau từ một Cửa sổ lệnh DB2 (DB2 Command Window) để tạo
noplatos và cơ sở dữ liệu mẫu:
o db2start
o db2 create db noplatos
o db2sampl
o db2stop
5. Đổi tên tệp txtplugin_makefile là makefile.
6. Biên dịch tệp txtserver.c bằng cách ban hành lệnh sau:
nmake /f makefile txtserver
Sao chép tệp txtserver.dll đã tạo vào thư mục
C:\ \sqllib\security\plugins\<instance_name>\server để DB2 có thể tìm thấy nó.
7. Cập nhật các tham số cấu hình của trình quản lý cơ sở dữ liệu bằng cách ban hành lệnh
nmake /f makefile txtclient
Sao chép tệp txtclient.dll đã tạo tới thư mục máy khách
C:\ \sqllib\security\plugins\<instance_name>\client để DB2 có thể tìm thấy nó.
11. Cập nhật các tham số cấu hình của trình quản lý cơ sở dữ liệu bằng cách đưa ra lệnh sau
từ Cửa sổ lệnh DB2:
db2 update dbm cfg using srvcon_auth client clnt_pw_plugin txtclient
12. Ban hành các lệnh sau từ Cửa sổ lệnh DB2 để đảm bảo rằng các thay đổi cấu hình của
bạn có hiệu lực:
o db2 terminate
o db2stop
o db2start
13. Bây giờ bạn đã sẵn sàng thử nghiệm trình cắm thêm xác thực ID/mật khẩu người dùng
phía máy khách của bạn. Hãy ban hành các lệnh sau từ Cửa sổ lệnh DB2.
a. db2 connect to sample user sugsc1ch using cdsecpwd
API db2secRemapUserid được gọi, và người dùng là sugsc1ch có mật khẩu
cdsecpwd được ánh xạ tới người dùng newton có mật khẩu er9etw0 và sau đó sử
dụng authID cho newton để nối với cơ sở dữ liệu. Chức năng này được thực hiện
trong hàm remap_userid của tệp txtclient.c như sau:
/* remap the userid sugsc1ch to newton */
else if (!strncmp("sugsc1ch", userid, 8) &&
!strncmp("cdsecpwd", password, 8))
{
/* this is for testing purposes only: userid sugsc1ch/cdsecpwd
normally has no privileges, but I am going to remap it to
newton/er9etw0 so that it will be allowed to connect if
server plugin is txtserver, and fail if the os plugin is used */
strcpy(userid, "newton");
strcpy(password, "er9etw0");
o db2 update dbm cfg using sysadm_group build
o db2 update dbm cfg using group_plugin txtgroup
4. Ban hành các lệnh sau từ Cửa sổ lệnh DB2 để đảm bảo rằng những thay đổi cấu hình của
bạn có hiệu lực:
o db2 terminate
o db2stop
o db2start
5. Bây giờ bạn đã sẵn sàng để thử nghiệm trình cắm thêm nhóm của bạn. Ban hành các
lệnh/các câu lệnh sau từ Cửa sổ lệnh DB2. (Lưu ý: người dùng newton thuộc nhóm
build là sysadm, và user2 thuộc về nhóm doody và một số nhóm khác)
o db2 connect to sample user newton using er9etw0
db2 "create table t1 (x int)"
db2 terminate
Hình 12 cho thấy kết quả của bước này:
Hình 12. Thử nghiệm thành viên nhóm và các ủy quyền của newton
o db2 connect to sample user user2 using er9etw0
db2 "select * from newton.t1"
db2 terminate
Hình 13 cho thấy kết quả của bước này:
Hình 13. Thử nghiệm các ủy quyền của user2
o db2 connect to sample user newton using er9etw0
db2 grant select on t1 to group doody
db2 terminate
Hình 14 cho thấy kết quả của bước này:
Hình 14. Thử nghiệm các ủy quyền của newton để cấp các đặc quyền
phép.
Bây giờ nếu bạn ban hành lệnh db2 connect to loopbackdb user beauvoir using
er9etw0, (db2 kết nối tới người dùng loopbackdb là beauvoir bằng cách sử dụng er9etw0), bạn
sẽ nhận được kết quả được minh họa trong Hình 17.
Hình 17. Thử nghiệm khả năng hạn chế kết nối
Kịch bản ở trên gọi hàm validatePassword (tương ứng với API db2secValidatePassword) trong
tệp txtserver.c. Việc thực hiện hàm này nói rõ nếu ID người dùng là beauvoir cố gắng để kết nối
từ một máy khách ở xa có một địa chỉ IP giống như địa chỉ IP của máy chủ cơ sở dữ liệu, thì
chặn nó lại. Trong một kịch bản thực tế, bạn sẽ mã hóa hàm validatePassword sao cho bạn có
một danh sách các địa chỉ IP được phép hoặc các địa chỉ IP không được phép, và kiểm tra lại
danh sách đó trước khi chặn không cho một người dùng cụ thể truy cập vào cơ sở dữ liệu.
Ví dụ 3: Thực hiện một trình cắm thêm dựa vào Active Directory (Thư mục tích cực)
Các tệp cần thiết: ldap.c, ldap_makefile.
Active Directory là công cụ của một máy chủ LDAP của Microsoft và có mặt trên tất cả các trình
điều khiển miền. Nó chứa thông tin tài khoản miền, nhóm, và máy tính. Active Directory hỗ trợ
bộ API v2 và v3 của LDAP. Ví dụ này sẽ sử dụng LDAP_VERSION3.
Ví dụ này giả định rằng bạn đã hiểu các khái niệm cơ bản của LDAP và biết cách thiết lập một
thư mục tích cực. Hướng dẫn "Hướng dẫn khởi động nhanh để thiết lập Active Directory" của
serverwatch.com (xem phần Tài nguyên) cung cấp một tài liệu tham khảo tốt.
Khi một ứng dụng sử dụng máy chủ LDAP để xác thực, nó thường sử dụng kết buộc để truyền
thông với máy chủ, và không kết buộc từ máy chủ để đóng kết nối.
Thông thường, có 4 bước được một ứng dụng thực hiện trong quá trình xác thực bằng cách sử
dụng thư mục hoạt động là:
1. Mở một kết nối đến máy chủ LDAP.
2. Xác thực dựa vào máy chủ LDAP.
3. Thực hiện một số hoạt động, như lấy các kết quả tìm kiếm.
4. Đóng kết nối.
Trình cắm thêm của ví dụ này sử dụng các hàm API sau: