Những thể hiện này dùng loại xác nhận mặc định của máy chủ lưu trữ trong tệp cấu hình quản lý cơ sở dữ liệu.. Loại xác thực này chỉ có hiệu lực trong tệp cấu hình quản lý cơ sở dữ liệu v
Trang 1Chuẩn bị cho kỳ thi cơ bản về DB2 9, Phần 2: Các vấn đề về bảo mật
Graham G Milne, Chuyên gia DB2, IBM Canada
Tóm tắt: Bài viết này giới thiệu các khái niệm xác thực, quyền xác nhận, và các
đặc quyền vì chúng có liên quan đến DB2® 9 Đây là bài viết thứ hai trong loạt bảy bài viết giúp bạn chuẩn bị cho bài kiểm tra về các nguyên tắc cơ bản của DB2
9 (730) Bạn cần có các kiến thức cơ bản về các khái niệm cơ sở dữ liệu và bảo mật hệ điều hành Đây là bài viết thứ hai trong loạt bảy bài viết để giúp bạn chuẩn
bị cho bài kiểm tra về các nguyên tắc cơ bản của DB2® 9 cho Linux®, UNIX®,
và Windows™
Trước khi bắt đầu
Về loạt bài viết này
Bạn đã nghĩ tới việc có một chứng chỉ về các khái niệm cơ bản của DB2 (Bài kiểm tra 730)? Nếu bạn nghĩ như thế thì bạn đã đến đúng chỗ Loạt bảy bài viết chuẩn bị cho bài thi đề cập tới tất cả các khái niệm cơ bản các chủ đề mà bạn cần hiểu trước khi bạn đọc câu hỏi trong bài kiểm tra đầu tiên Thậm chí nếu bạn không có
ý định lấy chứng chỉ thì loạt bài viết này cũng là một bắt đầu tuyệt vời cung cấp cho bạn những điều mới mẻ về DB2 9
Về bài viết này
Trong bài viết này bạn sẽ học về các đặc điểm bảo mật DB2 9, bao gồm thẩm định quyền và các quyền hạn
Đây là bài viết thứ hai trong loạt bài viết giúp bạn chuẩn bị cho bài kiểm tra 730
về các nguyên tắc cơ bản của DB2 9 Nội dung bài viết này đề cập đến các mục
Trang 2tiêu trong phần 2 của bài kiểm tra, phần này có tên là "Bảo mật" ("Security") Bạn
có thể xem các mục tiêu này tại: http://www.ibm.com/certify/tests/
Các điều kiện tiên quyết
Để hiểu các khái niệm được mô tả trong bài viết này, bạn cần phải có kiến thức cơ bản về các khái niệm cơ sở dữ liệu và hiểu về các đặc điểm của hệ thống bảo mật của hệ điều hành
Các yêu cầu của hệ thống
Các ví dụ trong bài viết này là cố định đối với DB2 chạy trên hệ điều hành
Windows™ (với các đặc điểm bảo mật cơ bản) Tuy nhiên, các khái niệm và thông tin cung cấp cũng tương thích với DB2 chạy trên bất kỳ nền nào
Bạn không cần một bản sao DB2 9 để hoàn thành bài học này Tuy nhiên, bạn sẽ biết được nhiều hơn những gì bài viết cung cấp nếu bạn tải phiên bản thử nghiệm miễn phí của IBM DB2 9 để làm việc cùng bài viết này
Cài đặt
Trang 3Để hoàn thành các bước trong bài viết, bạn cần phải:
1 Đăng nhập vào một máy Windows như một thành viên của nhóm quản trị Trong các ví dụ của bài viết này, chúng ta sẽ đăng nhập bằng tài khoản
người dùng là gmilne
2 Cài đặt DB2 9
3 Tạo một nhóm mới trên máy đã cài DB2 Bài viết sử dụng tài khoản nhóm
là db2grp1
4 Tạo một tài khoản người dùng thứ hai trên đó DB2 đã được cài đặt Trong
bài viết, vì mục đích đó mà chúng ta sẽ dùng tài khoản người dùng là test1 Lưu ý rằng người dùng test1 không phải là một thành viên trong nhóm quản
trị
Bảo mật DB2
Các khía cạnh của bảo mật cơ sở dữ liệu
Ngày nay, bảo mật có sở dữ liệu là điều tối quan trọng Dữ liệu cơ sở của bạn có thể cho phép khách hàng mua các sản phẩm qua mạng, hoặc nó có thể chứa các dữ liệu đã dùng để tiên đoán về xu hướng kinh doanh và dù vì lý do gì thì công ty của bạn cũng cần một kế hoạch bảo mật cơ sở dữ liệu thật tốt
Một kế hoạch bảo mật cơ sở dữ liệu cần hiểu:
Ai được phép truy cập các thể hiện hay các dữ liệu
Mật khẩu người dùng sẽ được kiểm tra ở đâu và như thế nào?
Trang 4 Giới hạn quyền mà người dùng được phép
Các lệnh mà người dùng được thực hiện
Dữ liệu mà người dùng được phép đọc hoặc thay đổi
Các đối tượng cơ sở dữ liệu mà người dùng được phép tạo ra, thay đổi hoặc loại bỏ
Cơ chế bảo mật DB2
Có ba cơ chế bảo mật trong DB2 cho phép một DBA (người quản trị CSDL) thực
hiện một kế hoạch bảo mật cơ sở dữ liệu: xác thực, quyền xác nhận, và các đặc quyền
Xác thực là đặc điểm bảo mật đầu tiên bạn sẽ phải giải quyết khi bạn cố truy cập một thể hiện hoặc cơ sở dữ liệu DB2 Xác thực DB2 làm việc gần với các đặc điểm bảo mật của hệ điều hành bên dưới để kiểm tra lại tài khoản người dùng và mật khẩu DB2 cũng làm việc với các giao thức bảo mật như là Kerberos để xác thực người dùng
Quyền xác nhận liên quan đến việc chỉ định các thao tác mà người dùng/ nhóm người dùng có thể trình bày, và các đối tượng dữ liệu mà họ có thể truy cập Khả năng trình bày dữ liệu bậc cao và thao tác quản lý thể hiện của người dùng được chỉ định bởi các quyền xác nhận mà họ đã được gán cho Có năm mức xác nhận khác nhau trong DB2 là SYSADM, SYSCTRL, SYSMAINT, DBADM, và
LOAD
Các đặc quyền có vẻ cụ thể hơn các xác thực và có thể được gán cho người dùng hoặc nhóm người dùng Các đặc quyền cho phép định nghĩa các đối tượng mà người dùng có thể tạo ra hoặc bỏ đi Các đặc quyền cũng định nghĩa các lệnh mà người dùng có thể sử dụng để truy cập đối tượng như là các bảng biểu, các khung
Trang 5nhìn, các chỉ mục và các gói Điều mới trong DB2 là khái niệm kiểm soát truy cập theo nhãn (LBAC) cho phép kiểm soát cụ thể hơn về người dùng nào có thể truy cập các hàng hoặc cột riêng lẻ nào
Để chuẩn bị cho phần tiếp theo của bài viết, bạn sẽ cần tạo ra một cơ sở dữ liệu trong ví dụ DB2 Hãy đảm bảo rằng biến %DB2INSTANCE% vẫn có ở DB2 và
sau đó tạo cơ sở dữ liệu mẫu sử dụng lệnh db2sampl drive (ổ đĩa), dùng tên của ổ
mà bạn muốn tạo mẫu đó Đối với những ví dụ trong bài viết này bạn sẽ tạo cơ sở
dữ liệu mẫu trên ổ D của chúng ta như sau:
D:\SQLLIB\BIN> db2sampl d:
Các máy khách (clients), máy chủ (servers), cổng vào ra (gateways) và máy chủ lưu trữ (hosts)
Việc bạn hiểu các khái niệm máy khách, máy chủ, cổng vào ra, và máy chủ phục
vụ rất quan trọng khi chúng ta xem xét sự bảo mật của toàn bộ môi trường cơ sở
dữ liệu Một môi trường cơ sở dữ liệu bao gồm các máy khác nhau, bạn phải bảo
vệ cơ sở dữ liệu ở bất kỳ điểm truy cập nào Các khái niệm máy khách, máy chủ, cổng vào ra và máy chủ lưu trữ đặc biệt quan trọng khi làm việc với xác thực DB2
Sơ đồ dưới đây sẽ minh hoạ cấu hình cơ bản client-server-host
Máy chủ cơ sở dữ liệu là một máy (hoặc nhiều máy trong một hệ thống) mà cơ sở
dữ liệu tồn tại một cách tự nhiên ở đó Máy khách cơ sở dữ liệu DB2 là các máy
Trang 6được định cấu hình tìm các truy vấn ngược lại với các cơ sở dữ liệu trên máy chủ
Những máy khách này có thể tồn tại ở ngay trong một máy như máy chủ cơ sở dữ
liệu hoặc có thể ở xa (trong các máy riêng biệt)
Nếu cơ sở dữ liệu nằm trong một hệ thống máy chạy hệ điều hành như AS/400
(iSeries) hay OS/390 (zSeries), thì nó được gọi là một máy chủ lưu trữ hoặc máy chủ lưu trữ phục vụ Một cổng vào ra là một máy chạy sản phẩm kết nối DB2
Thông qua cổng vào ra, máy khách DB2 có thể kết nối với một cơ sở dữ liệu DB2 nằm trên máy chủ lưu trữ Cổng vào ra cũng được đề cập đến như một máy chủ lưu trữ kết nối DB2 Hệ thống cùng với bộ cài sản phẩm Enterprise Server Edition cũng có hàm kết nối DB2 cài sẵn
Xác thực DB2
Khi xác thực DB2
Xác thực DB2 kiểm soát các mặt sau của một kế hoạch bảo mật cơ sở dữ liệu:
Ai có quyền truy cập thể hiện và/hoặc cơ sở dữ liệu
Mật khẩu người dùng sẽ được kiểm tra lại khi nào và như thế nào?
DB2 thực hiện các điều trên nhờ sự hỗ trợ của các đặc điểm bảo mật hệ điều hành
cơ sở khi một lệnh đính kèm hoặc hoặc kết nối được phát ra Một lệnh đính kèm
được dùng để kết nối với thể hiện DB2 khi một lệnh kết nối được dùng để kết nối với cơ sở dữ liệu trong thể hiện DB2 Các thể hiện dưới đây đưa bạn đến với các cách thức khác nhau mà xác thực DB2 là người dùng đang phát ra các lệnh này Những thể hiện này dùng loại xác nhận mặc định của máy chủ lưu trữ trong tệp cấu hình quản lý cơ sở dữ liệu Ví dụ 3 dưới đây minh họa cách dùng DB2 để thay đổi mật khẩu trên OS của máy chủ lưu trữ
Trang 7Đăng nhập vào máy có cài sẵn DB2 với tên người dùng bạn dùng để tạo thể hiện DB2 Phát ra các lệnh sau:
db2 attach to DB2
Ở đây, xác thực được thực hiện hoàn toàn Tài khoản người dùng thường đăng nhập vào máy đang dùng và giả định là nó đã được hệ điều hành kiểm tra lại
db2 connect to sample user test1 using password
Database Connection Information
Database server = DB2/NT 9.1.0
SQL authorization ID = TEST1
Local database alias = SAMPLE
Ở đây, xác thực được thực hiện rõ ràng Người dùng test1 với mật khẩu là
password được hệ điều hành kiểm tra lại Người dùng test1 kết nối thành công tới
cơ sở dữ liệu mẫu
Trang 8
db2 connect to sample user test1 using password new chgpass confirm chgpass
Tài khoản người dùng test1 với mật khẩu password được hệ điều hành kiểm tra lại như trong ví dụ 2 Mật khẩu cho test1 sau đó được hệ điều hành thay đổi từ
password thành chgpass Và kết quả là lệnh trong ví dụ 2 sẽ thất bại nếu bạn gửi
lại lệnh trên
Các loại xác thực DB2
Các loại xác thực được DB2 dùng để chỉ định khi xác thực xảy ra Ví dụ, trong
môi trường một máy khách-máy chủ (client-server), máy khách hay máy chủ sẽ kiểm tra lại tài khoản và mật khẩu người dùng? Trong môi trường máy khách-cổng vào ra-máy chủ lưu trữ (client-gateway-host), liệu máy khách hay máy chủ lưu trữ sẽ kiểm tra lại tài khoản và mật khẩu người dùng?
DB2 9 có khả năng xác định các cơ chế bảo mật khác nhau tùy thuộc vào liệu người dùng có cố kết nối với cơ sở dữ liệu hay trình bày các thể hiện đính kèm và các thể hiện mức thao tác Thông qua mặc định, thể hiện được thiết lập để dùng một loại xác thực cho tất cả các mức của thể hiện cũng như mức yêu cầu kết nối Điều này được xác định bằng tham số cấu hình quản lý dữ liệu
AUTHENTICATION Tham số cấu hình quản lý dữ liệu SRVCON_AUTH được
Trang 9giới thiệu trong V9.1 Tham số này giải quyết việc kết nối tới cơ sở dữ liệu Vì thế,
ví dụ là nếu bạn có tập hợp sau trong DBM CFG của bạn:
DB2 GET DBM CFG
Server Connection Authentication (SRVCON_AUTH) = KERBEROS
Database manager authentication (AUTHENTICATION) =
SERVER_ENCRYPT
Thì các tệp đính kèm vào thể hiện sẽ dùng SERVER_ENCRYPT Dẫu sao kết nối tới cơ sở dữ liệu có thể dùng xác thực KERBEROS Nếu KERBEROS ban đầu không phải dành cho máy chủ nhưng một tài khoản người dùng còn hiệu lực kèm mật khẩu được cung cấp thì người dùng sẽ được phép đính kèm vào thể hiện
nhưng không được phép truy cập dữ liệu
Bảng sau tổng kết các loại xác thực DB2 Trong một môi trường máy máy chủ lưu trữ, những lựa chọn xác thực này được lập trong máy khách và cổng vào ra chứ không phải trong máy chủ lưu trữ Trong phần này chúng ta sẽ thảo luận kỹ hơn về việc lập các lựa chọn này Xem Máy khách, máy chủ, cổng vào ra,
khách-cổng-và máy chủ lưu trữ để biết thêm chi tiết
Trang 10Máy chủ (SERVER) Xác thực xảy ra trong máy chủ
SERVER_ENCRYPT Xác thực xảy ra trong máy chủ Mật khẩu được mã
hóa ở máy khách trước khi được gửi tới máy chủ
Máy khách (CLIENT)
Xác thực xảy ra trong máy khách (xem Giải quyết các máy khách không chính xác đối với các trường hợp ngoại lệ)
*KERBEROS Xác thực được trình bày bởi phần mềm bảo mật
Kerberos
*KRB_SERVER_ENCRYPT
Xác thực được trình bày bởi phần mềm bảo mật Kerberos nếu máy khách có cài KERBEROS Nếu không, SERVER_ENCRYPT sẽ được dùng
Trang 11kết nối được phép dùng xác thực SERVER_ENCRYPT Trong trường hợp này dữ liệu sẽ không bị mã hóa Nếu khách hàng kết nối cung cấp DATA_ENCRYPT thì sẽ phải mã hóa dữ liệu, và không thể đánh giá thấp đối với xác thực SERVER_ENCRYPT Loại xác thực này chỉ có hiệu lực trong tệp cấu hình quản lý cơ sở dữ liệu và không có hiệu lực khi dùng một lệnh CATALOG DATABASE trên thể hiện máy khách hoặc cổng vào ra
GSSPLUGIN Xác thực được kiểm soát bởi một đầu cắm ngoài
GSS-API
GSS_SERVER_ENCRYPT
Xác thực được kiểm soát bởi một đầu cắm ngoài GSS-API Trong trường hợp máy khách không cung cấp một trong các đầu cắm ngoài GSS-API của máy chủ lưu trữ, thì xác thực
Trang 12Cài đặt xác thực trên máy chủ
Xác thực được cài trên cơ sở dữ liệu máy chủ trong tệp cấu hình quản lý cơ sở dữ liệu (DBM CFG) dùng tham số AUTHENTICATION Lưu ý, tệp DBM CFG là một tệp cấu hình mức thể hiện Do đó, tham số AUTHENTICATION ảnh hưởng tới tất cả các cơ sở dữ liệu trong thể hiện Lệnh sau đây minh họa cách mà tham số được thay đổi
Để xem tham số xác thực trong tệp cấu hình:
db2 get dbm cfg
Để thay đổi tham số xác thực cho server_encrypt:
C:\PROGRA~1\SQLLIB\BIN> db2 update dbm cfg using authentication
Trang 13SRV_PLUGIN_MODE, và SRVCON_PW_PLUGIN Xem thêm chi tiết trong các cài đặt dưới đây
Cài đặt xác thực cho cổng vào ra
Xác thực được cài đặt vào cổng vào ra bằng cách dùng lệnh danh mục cơ sở dữ liệu Trong các ví dụ dưới đây, chúng ta sẽ dùng một cơ sở dữ liệu máy chủ lưu trữ
được đặt tên là myhostdb
Để cài đặt loại xác thực của cổng vào ra gửi tới SERVER, bạn có thể phát ra lệnh sau trên cổng vào ra:
db2 catalog database myhostdb at node nd1 authentication SERVER
db2 terminate
Lưu ý là xác thực không bao giờ được trình bày trên cổng vào ra Trong DB2 phiên bản 8, xác thực luôn xuất hiện ở trên máy khách hoặc trên cơ sở dữ liệu máy chủ lưu trữ phục vụ
Trang 14
Thiết lập xác thực trên máy khách
Hãy xem xét hai kịch bản trên hai máy khách tách biệt nhau Chúng ta sẽ định cấu hình là một máy kết nối với cơ sở dữ liệu trên một máy chủ (nền tảng phân phối DB2 UDB LUW), và một máy kết nối với cơ sở dữ liệu trên một máy chủ lưu trữ (ví dụ như DB2 cho zSeries)
Máy khách kết nối với một cơ sở dữ liệu máy chủ: Cài đặt xác nhận máy
khách trong thư mục cơ sở dữ liệu nhập vì cơ sở dữ liệu đang được kết nối phải phù hợp với cơ sở dữ liệu của cơ sở dữ liệu máy chủ (ngoại lệ là các trường hợp KRB_SERVER_ENCRYPT, DATA_ENCRYPT_CMP, và GSS_SERVER_ENCRYPT)
Hãy giả sử rằng loại xác thực cho máy chủ được cài trên máy chủ Lệnh sau
sẽ được phát từ máy khách tới danh mục cơ sở dữ liệu máy chủ có tên là
spamle:
db2 catalog database sample at node nd1 authentication SERVER
Nếu loại xác thực không cụ thể thì máy khách sẽ dùng
SERVER_ENCRYPT như mặc định
Máy khách kết nối với cơ sở dữ liệu của máy chủ lưu trữ: Chúng ta giả
định rằng loại xác thực trên cổng vào ra được cài trên SERVER Nếu một loại xác thực không được xác định thì xác thực SERVER_ENCRYPT được thừa nhận khi truy cập một cơ sở dữ liệu bằng kết nối DB2 Xác thực sẽ xẩy
ra trên máy chủ lưu trữ cơ sở dữ liệu Câu lệnh sau được phát ra từ máy khách sẽ buộc máy khách gửi bản giải mã mật khẩu và tài khoản người dùng tới cổng vào ra
Trang 15
db2 catalog database myhostdb at node nd1 authentication SERVER
Bây giờ, giả định rằng xác thực được cài trên SERVER_ENCRYPT ở cổng vào ra Lại một lần nữa xác thực xảy ra trên máy chủ lưu trữ cơ sở dữ liệu Mật khẩu và tài khoản người dùng được mã hóa trên máy khách trước khi được gửi tới cổng vào ra và mã hóa trên cổng vào ra trước khi được gửi tới máy chủ lưu trữ dữ liệu Đây là một hành động mặc định
Đối phó với máy khách không đủ độ tin cậy
Nếu máy chủ hoặc cổng vào ra có tổ hợp xác thực trong CLIENT thì có nghĩa là máy khách đó sẽ xác thực tài khoản và mật khẩu người dùng Tuy nhiên một vài máy khách có thể không có hệ điều hành có các đặc điểm bảo mật cục bộ Những
máy khách không đủ độ tin cậy này bao gồm máy khách DB2 chạy trên Window
98 và Window ME DB2 V9.1 không hỗ trợ Window 98 và Window ME nhưng
nó hỗ trợ các máy khách bậc thấp và cũng phải đối phó với các máy khách không
đủ độ tin cậy V8
Có hai loại tham số thêm vào trong tệp DBM CFG thường chỉ định khi nào thì xác thực nên xảy ra và khi phương pháp xác thực máy chủ và máy chủ lưu trữ được cài vào CLIENT và các máy khách không đủ độ tin cậy đang cố kết nối tới cơ sở
dữ liệu hoặc được đính kèm vào thể hiện DB2 Đây chính là các tham số
TRUST_ALLCLNTS và TRUST_CLNTAUTH
Trang 16Khi loại xác thực máy chủ hoặc cổng vào ra là CLIENT thì sẽ có hai yếu tố khác thêm vào các tham số TRUST_ALLCLNTS và TRUST_CLNTAUTH Yếu tố đầu tiên là liệu tài khoản và mật khẩu người dùng có được cung cấp cụ thể rõ ràng hay không, và yếu tố thứ hai là loại kết nối của máy khách Có ba loại khách hàng DB2 là:
Máy khách không đủ độ tin cậy: như mô tả trên
Các máy khách hoạt động trên máy chủ lưu trữ: Máy khách chạy trên
hệ điều hành máy chủ lưu trữ như là zSeries
Máy khách đủ độ tin cậy: Máy khách chạy trên hệ điều hành không có
máy chủ lưu trữ mà có các đặc điểm bảo mật như là Windows NT, 2000,
2003, XP và tất cả các dạng của Unix/Linux
Khi xác thực được cài lên CLIENT
Bảng kê dưới đây tổng hợp các điểm xác thực diễn ra khi một lệnh kết nối hoặc đính kèm được phát ra từ mỗi máy khách tới một máy chủ có loại xác thực được cài trên CLIENT
Truste
d Client
Host Client
Trang 17No Yes CLIENT CLIENT CLIEN
Trang 18Yes No CLIENT SERVE
DRDAONLY chỉ đề cập tới các máy khách thuộc máy chủ lưu trữ, mặc dù thực tế
là DB2 phiên bản 8 kết nối máy khách cũng sử dụng DRDA
Các ví dụ dưới đây minh hoạ các loại cài đặt xác thực và tham số trên máy chủ và máy khách:
Cài đặt xác thực trên máy chủ:
db2 update dbm cfg using authentication client
db2 update dbm cfg using trust_allclnts yes
db2 update dbm cfg using trust_clntauth server
db2stop
Trang 19db2start
Cài đặt xác thực trên máy khách:
db2 catalog database sample at node nd1 authentication client
Trong ví dụ trước, nếu lệnh
db2 connect to sample
được phát ra từ bất kỳ máy khách nào, xác thực sẽ xảy ra trên máy khách đó Nếu lệnh
db2 connect to sample user test1 using password
được phát ra từ bất kỳ máy khách nào, thì xác thực sẽ xẩy ra trên máy chủ
Trang 20
Cấu trúc chốt bảo mật của DB2
DB2 V8.2 giới thiệu khái niệm cấu trúc chốt bảo mật cho DB2 Khái niệm này nổi bật nhiều tính năng trong DB2 V9.1 Dùng lệnh gọi chuẩn GSS-AIP, người dùng
có thể viết một chốt bảo mật và thông qua việc xác thực tài khoản người dùng tới một chương trình bảo mật rõ ràng Một ví dụ cho việc này chính là xác thực
KERBEROS của DB2 Khi bạn cài đặt DB2 ESE hoặc ứng dụng phát triển máy khách trên một phần của máy, mã ứng dụng mẫu của cài đặt đó sẽ được đặt trong
thư mục thể hiện của bạn Nếu bạn nhìn vào thư mục samples\security\plugins
bạn sẽ thấy trong các ví dụ này cách mã hoá các chốt bảo mật Phần này sẽ phác thảo cách dùng các chốt trong cấu trúc bảo mật DB2 nhưng không bao quát cách
mã hoá hoặc biên soạn chính các chốt Để hiểu thêm chi tiết về vấn đề này hãy xem Bảo mật DB2 phần 2: Hiểu về chốt bảo mật tổng quát DB2
Xác thực Kerberos
Xác thực Kerberos cung cấp cho DB2 cách xác thực người dùng mà không cần gửi tài khoản và mật khẩu người dùng trên mạng Giao thức bảo mật Kerberos trình bày xác thực như một dịch vụ xác thực thứ ba bằng việc sử dụng mật mã quy ước
để tạo ra khóa bí mật chia sẻ Chìa khóa này sẽ trở thành chứng thư người dùng và được dùng để kiểm tra lại nhận dạng của người dùng trong tất cả các trường hợp
mà dịch vụ cục bộ hoặc diện rộng được yêu cầu Sử dụng giao thức xác thực
Kerberos cho phép người dùng đăng nhập vào một máy chủ cơ sở dữ liệu DB2 từ
xa
Đầu tiên, hãy xem lại quá trình cài đặt DB2 để sử dụng xác thực Kerberos Như đề cập ở trên, xác thực Kerberos được cài đặt trên DB2, dùng cấu trúc chốt Mã
Trang 21nguồn cho chốt Kerberos mặc định được cung cấp trong thư mục
samples/security/plugins, gọi là IBMkrb5.c Trước khi Kerberos làm việc cho DB2, Kerberos phải được cho phép và hỗ trợ trên cả máy khách lẫn máy chủ Để thực hiện điều này, chúng ta phải có những điều kiện sau:
1 Máy khách và máy chủ phải thuộc về một phạm vi chung (tên miền tin cậy trong thuật ngữ Windows)
2 Các nguyên tắc phù hợp phải được cài đặt (tài khoản người dùng trên Kerberos)
3 Tệp keytab của máy chủ phải được tạo và đọc được bởi chính các thể hiện
4 Tất cả các máy phải được đồng bộ hóa về thời gian
Bạn có thể tìm thêm thông tin về cài đặt Kerberos trong tài liệu đi kèm với sản phẩm cài đặt Kerberos
Để cho phép DB2 sử dụng xác thực KERBEROS, trước tiên bạn phải chỉ cho máy khách vị trí của chốt Kerberos mà bạn đang dùng Trên máy khách bạn chạy lệnh sau:
DB2 UPDATE DBM CFG USING CLNT_KRB_PLUGIN IBMkrb5
DB2 TERMINATE
Trang 22
Trong ví dụ này, chốt Kerberos mặc định được sử dụng Chốt Kerberos cũng có thể được DBA thay đổi để trình bày các hàm đặc biệt nếu nó nhận được yêu cầu từ Kerberos đang được sử dụng
Chốt Kerberos cũng có khả năng báo cho máy khách biết chính xác nguyên tắc máy chủ nào mà nó đang chứng minh ngược lại Lựa chọn này là bước đầu tiên của xác thực Kerberos khi máy khách phải tìm ra nguyên tắc máy chủ của các thể hiện mà nó đang kết nối tới Tham số AUTHENTICATION có thể được xác định khi một danh mục có trong cơ sở dữ liệu trên máy khách Định dạng của nó là:
DB2 CATALOG DB dbname AT NODE node name AUTHENTICATION
KERBEROS TARGET PRINCIPAL
service/host@REALM
Bước này mang tính lựa chọn
DB2 CATALOG DB sample AT NODE testnd AUTHENTICATION
KERBEROS TARGET PRINCIPAL
gmilne/gmilne02.torolab.ibm.com@TOROLAB.IBM.COM
Bước tiếp theo để cài đặt xác thực Kerberos là cài đặt máy chủ Tham số
srvcon_gssplugin_list có thể được cài đặt cùng một danh sách các chốt GSS-API
Trang 23khác nhau, nhưng bạn chỉ được phép có một chốt Kerberos Nếu không có chốt Kerberos nào trong danh sách thì chốt mặc định IBMkrb5 sẽ được dùng tự động Nếu bạn định cho phép tất cả các xác thực (cài đặt phần đính kèm cũng như kết nối cơ sở dữ liệu) được sử dụng Kerberos, thực hiện như sau:
DB2 UPDATE DBM CFG USING AUTHENTICATION KERBEROS
Trang 24Phụ thuộc vào độ rộng của bit (32 hoặc 64 bit) của thể hiện, DB2 sẽ tự động tải IBMkrb5 khi thể hiện được bắt đầu
Các cài đặt xác thực khác
Nếu bạn nhìn vào thể hiện của DBM CFG phiên bản 9.1, bạn sẽ nhìn thấy các cài đặt khác nhau ảnh hưởng đến cách DB2 xác thực tài khoản người dùng Như đã đề cập ở trên có rất nhiều cài đặt cho xác thực tài khoản người dùng OS chuẩn
(CLIENT, SERVER, SERVER_ENCRYPT, DATA_ENCRYPT,
DATA_ENCRYPT_CMP), và các chốt để đưa xác thực tới chương trình mở rộng (KERBEROS, KRB_SERVER_ENCRYPT, GSSPLUGIN,
GSS_SERVER_ENCRYPT) Phần này đặc biệt giải quyết một số biến cấu hình
mà có ảnh hưởng tới cách một người dùng được xác thực
Client Userid-Password Plugin (CLNT_PW_PLUGIN) =
Group Plugin (GROUP_PLUGIN) =
GSS Plugin for Local Authorization (LOCAL_GSSPLUGIN) =
Server Plugin Mode (SRV_PLUGIN_MODE) = UNFENCED
Server List of GSS Plugins (SRVCON_GSSPLUGIN_LIST) =
Server Userid-Password Plugin (SRVCON_PW_PLUGIN) =
Cataloging allowed without authority (CATALOG_NOAUTH) = NO
Trang 25Bypass federated authentication (FED_NOAUTH) = NO
Trong bản danh sách trên, các tham số được đề cập tới đã được loại bỏ
CLNT_PW_PLUGIN
Tham số này được xác định trên máy khách DBM CFG Nó cụ thể hóa tên của chốt máy khách được dùng cho máy khách và xác thực cục bộ
GROUP_PLUGIN
Mặc định cho giá trị này là rỗng (NULL) Cài đặt GROUP_PLUGIN vào tên của chốt người dùng được định nghĩa sẽ thể hiện ra rằng chốt cho tất cả các bảng liệt kê nhóm thay vì phụ thuộc vào nhóm tìm kiếm hệ điều hành Điều này liên quan chặt chẽ tới phần "quyền hạn" sẽ được thảo luận chi tiết ở sau
LOCAL_GSSPLUGIN
Tham số này xác định tên của thư viện chốt GSS API mặc định được dùng cho mức độ thể hiện quyền hạn cục bộ khi một giá trị của tham số cấu hình quản lý cơ sở dữ liệu xác thực được cài đặt trong GSSPLUGIN hoặc
GSS_SERVER_ENCRYPT
SRV_PLUGIN_MODE
(YES/NO) Cài đặt mặc định cho tham số này là
Trang 26NO Khi chuyển sang YES, các chốt GSS-API được dùng thì sẽ được khởi tạo trong chế độ FENCED tương tự cách FENCED được lưu trữ tiến hành từng bước Một chốt FENCED "đổ vỡ" (crash) không thể làm cho thể hiện DB2 cũng "đổ vỡ" theo Trong khi các chốt khác triển khai nên chạy chúng trong chế độ fenced để những sai sót lôgic và bộ nhớ trong các chốt đó sẽ không là "đổ vỡ" các thể hiện Một khi mà chốt được chỉ định
là an toàn nó cần được chạy unfenced vì lý do trình bày
SRVCON_GSSPLUGIN_LIST
Một danh sách các chốt mà hệ quản trị cơ sở dữ liệu trên máy chủ sẽ dùng trong quá trình xác thực khi mà KERBEROS,
KRB_SERVER_ENCRYPT, GSSPLUGIN hoặc GSS_SERVER_ENCRYPT được dùng Mỗi chốt trong danh sách nên được ngăn cách bởi dấu phẩy (',') mà không có dấu cách ở giữa Các chốt được lên danh sách theo thứ tự ưu tiên, chốt đứng đầu tiên trong danh sách được dùng đầu tiên để xác thực tài khoản và mật khẩu người dùng gửi tới Chỉ khi tất cả các chốt trong danh sách báo về một lỗi, DB2 mới gửi xác thực lỗi tới người dùng
SRVCON_PW_PLUGIN Tham số này cho phép người dùng thay đổi xác
thực DB2 mặc định để kiểm tra lại tài khoản và
Trang 27mật khẩu của người dùng khi xác thực CLIENT, SERVER, hoặc SERVER_ENCRYPT được xác định Mặc định giá trị của nó là rỗng và các phương thức DB2 mặc định được dùng
CATALOG_NOAUTH
(YES/NO) Mặc định NO Thay đổi tham số này sang YES cho phép người dùng chưa được kiểm tra lại là thành viên của nhóm SYSADM,
SYSCTRL, hoặc SYSMAINT thay đổi danh mục
cơ sở dữ liệu, nút, Admin và DCS trên máy Việc này chỉ có ích đối với tình huống máy khách nơi
mà người dùng đăng nhập vào máy dùng một máy khách không đủ độ tin cậy (đã định nghĩa ở trên) hoặc đăng nhập với tài khoản người dùng không được phép kết nối với cơ sở dữ liệu hoặc đính kèm với thể hiện mà danh mục phải nhập trên máy khách
ra tại gốc dữ liệu Các thao tác cảnh báo khi
"fed_noauth" được cài là YES Xác thực không được thực hiện tại máy khách hay DB2 Bất kỳ người dùng nào biết tên xác thực SYSADM có thể cho rằng quyền hạn SYSADM dành cho các
Trang 28máy chủ liên kết
Quyền hạn DB2
Giới thiệu về quyền hạn
Các quyền hạn DB2 kiểm soát các mặt sau trong một kế hoạch bảo mật cơ sở dữ liệu:
Mức độ quyền hạn mà người dùng được phép
Các lệnh mà người dùng được thực hiện
Các dữ liệu người dùng được đọc hoặc thay đổi
Các đối tượng cơ sở dữ liệu người dùng được phép tạo ra, thay đổi hoặc loại bỏ
Quyền hạn được hình thành bởi một nhóm các đặc quyền, quản lý cơ sở dữ liệu mức cao và các thao tác tiện ích (mức thể hiện) Trong năm quyền hạn có ở trong
DB2, SYSADM, SYSCTRL, SYSMAINT, và SYSMON là các quyền hạn mức thể hiện (instance-level authorities) Điều này có nghĩa là phạm vi của chúng bao
gồm các lệnh cũng như các lệnh ngược lại cơ sở dữ liệu trong thể hiện Những quyền hạn này chỉ có thể gán cho một nhóm, bạn có thể thực hiện việc gán thông qua tệp DBM CFG
Trang 29Các quyền DBADM, LOAD, và SECADM được gán cho một người dùng hoặc một nhóm đối với các cơ sở dữ liệu riêng biệt Điều này được thể hiện rõ ràng bằng lệnh GRANT
Những phần sau đây sẽ mô tả cách mỗi quyền hạn được gán và lệnh nào người dùng có quyền hạn đó được phép trình bày Lưu ý rằng bất kỳ tham chiếu nào tới từng thành viên của nhóm đều ngụ ý rằng người dùng hoặc tên nhóm đã được định nghĩa ở mức hệ điều hành
Người dùng có thể chỉ định những quyền hạn nào và những đặc quyền mức dữ liệu mà họ có bằng cách phát ra lệnh sau:
db2 get authorizations
Khai thác quyền hạn SYSADM
Quyền hạn SYSADM trong DB2 có thể được so sánh với quyền hạn gốc trên UNIX hoặc quyền quản trị trên Window Những người dùng có quyền hạn
SYSADM đối với thể hiện DB2 có khả năng phát ra bất kỳ lệnh DB2 nào ngược lại với thể hiện, với bất kỳ cơ sở dữ liệu nào trong thể hiện, hay với bất kỳ đối tượng nào trong cơ sở dữ liệu Họ cũng có khả năng truy cập dữ liệu trong cơ sở
dữ liệu và có quyền thay đổi đặc quyền và quyền hạn Chỉ duy nhất người dùng SYSADM được phép cập nhật tệp DBM CFG
Trang 30Quyền hạn SYSADM được kiểm soát trong tệp DBM CFG thông qua tham số SYSADM_GROUP Khi thể hiện được tạo ra, tham số này được cài cho người quản trị trên Windows (mặc dù nó có thể bằng rỗng nếu bạn phát ra lệnh db2 get dbm cfg) Trên UNIX, tham số này được cài lên nhóm người dùng thấp nhất tạo ra thể hiện
Vì người dùng SYSADM là người dùng duy nhất được phép cập nhật DBM CFG,
họ cũng là người dùng duy nhất được phép cho bất kỳ nhóm nào khác quyền hạn
Ví dụ sau đây minh họa cách cho quyền SYSADM tới nhóm db2grp1:
db2 update dbm cfg using SYSADM_GROUP db2grp1
Lưu ý rằng thay đổi này sẽ không ảnh hưởng cho đến khi thể hiện ngừng lại và bắt đầu lại Cũng nhớ rằng nếu hiện tại bạn không đăng nhập như một thành viên của
db2grp1, bạn không có quyền bắt đầu lại thể hiện! Bạn sẽ phải đăng xuất và sau
đó đăng nhập lại bằng một tài khoản có ở trong nhóm, hoặc là thêm tài khoản hiện
tại của bạn vào db2grp1
Khai thác quyền hạn SYSCTRL
Người dùng có quyền hạn SYSCTRL có thể trình bày tất cả các lệnh quản trị và lưu giữ trong thể hiện Tuy nhiên, không giống như người dùng SYSADM họ không thể truy cập bất kỳ dữ liệu nào trong cơ sở dữ liệu trừ khi họ được cho phép các đặc quyền thực hiện điều đó Đây là các ví dụ các lệnh người dùng SYSCTRL
có thể trình bày ngược lại bất kỳ cơ sở dữ liệu này trong thể hiện:
Trang 31 db2start/db2stop
db2 create/drop database
db2 create/drop tablespace
db2 backup/restore/rollforward database
db2 runstats (against any table)
db2 update db cfg for database dbname
Người dùng có quyền hạn SYSADM có thể gán SYSCTRL cho một nhóm, dùng lệnh sau:
db2 update dbm cfg using SYSCTRL_GROUP group name
Khai thác quyền hạn SYSMAINT
Các lệnh mà một người dùng có quyền hạn SYSMAINT có thể phát ra là một tập con của các lệnh mà người dùng có quyền hạn SYSCTRL được phép thực hiện Người dùng SYSMAINT có thể trình bày các tác vụ có liên quan đến lưu giữ, như là:
Trang 32 db2start/db2stop
db2 backup/restore/rollforward database
db2 runstats (against any table)
db2 update db cfg for database dbname
Lưu ý rằng người dùng SYSMAINT không thể tạo hoặc xóa cơ sở dữ liệu hay bảng biểu Họ không thể truy cập bất kỳ dữ liệu nào trong cơ sở dữ liệu trừ khi họ được cho các đặc quyền để thực hiện điều đó
Nếu bạn có quyền hạn SYSADM, bạn có thể gán quyền của mình cho một nhóm
sử dụng lệnh sau:
db2 update dbm cfg using SYSMAINT_GROUP group name
Khai thác quyền hạn SYSMON
Quyền hạn SYSMON cung cấp khả năng lấy hệ thống cơ sở dữ liệu lưu giữ hình ảnh hiển thị trên màn hình của một hiển thị quản lý cơ sở dữ liệu hoặc cơ sở dữ liệu của hình ảnh màn hình Quyền hạn SYSMON được gán cho nhóm được xác định bởi tham số cấu hình sysmon_group Nếu một nhóm được xác định, các
Trang 33thành viên trong nhóm đó sẽ được kiểm soát ngoài hệ quản trị cơ sở dữ liệu thông qua chế độ bảo mật sử dụng trong platform
Các quyền hạn SYSMON cho phép người dùng thực thi các lệnh sau:
GET DATABASE MANAGER MONITOR SWITCHES
GET MONITOR SWITCHES
UPDATE MONITOR SWITCHES
Quyền hạn SYSMON cho phép người dùng sử dụng APIs như sau:
db2GetSnapshot - Lấy chụp nhanh (snapshot)
db2GetSnapshotSize - Ước lượng kích thước cần cho bộ đệm đầu ra của db2GetSnapshot()
db2MonitorSwitches - Chuyển chế độ giám sát Get/update
db2ResetMonitor - Đặt lại chế độ giám sát
Quyền hạn SYSMON cho phép người dùng tất cả các hàm bảng SQL hiển thị màn hình mà không phải chạy SYSPROC.SNAP_WRITE_FILE
Trang 34SYSPROC.SNAP_WRITE_FILE, lấy hiển thị màn hình và lưu nội dung của nó vào một tệp Nếu bất kỳ hàm bảng hiển thị màn hình được gọi với tham số nhập là rỗng, nội dung của tệp sẽ được gửi lại chứ không phải là một hiển thị màn hình hệ thống
Người dùng với các mức quyền hạn SYSADM, SYSCTRL, hoặc SYSMAINT cũng sở hữu quyền hạn SYSMON
Người dùng có quyền hạn SYSADM có thể gán SYSMON cho một nhóm người dùng theo lệnh sau:
db2 update dbm cfg using SYSMON_GROUP group name
Khai thác quyền hạn DBADM
Quyền hạn DBADM là là một quyền hạn mức dữ liệu chứ không phải quyền hạn mức thể hiện Nói tóm lại, người dùng DBADM có quyền kiểm soát hoàn toàn đối với cơ sở dữ liệu Người dùng DBADM không thể trình bày tác vụ quản trị hay lưu giữ như:
drop database
drop/create tablespace
backup/restore database
Trang 35 update db cfg for database db name
Tuy nhiên, họ có thể trình bày các tác vụ sau:
db2 create database test
Lệnh này cho người dùng có quyền hạn DBADM ngầm trên cơ sở dữ liệu
có tên là test để thực thi lệnh
db2 connect to sample
db2 grant dbadm on database to user tst1
Lệnh này chỉ được thực hiện bởi người dùng SYSADM, nó cho người dùng
tst1 quyền hạn DBADM trên cơ sở dữ liệu mẫu Chú ý rằng, người phát
lệnh cần được kết nối với cơ sở dữ liệu mẫu trước khi cho quyền hạn
DBADM
db2 grant dbadm on database to group db2grp1
Lệnh này cho tất cả người dùng trong nhóm db2grp1 quyền hạn DBADM
Và cũng chỉ người dùng SYSADM có thể thực thi lệnh đó
Trang 36
Khai thác quyền hạn LOAD
Quyền hạn LOAD cũng được xem là quyền hạn mức cơ sở dữ liệu và do đó có thể được cấp cho cả người dùng và nhóm người dùng Như tên gọi, quyền hạn LOAD cho phép người dùng thực thi lệnh LOAD ngược lại bảng Lệnh LOAD được sử dụng đặc biệt như một thay thế để chèn hoặc nhập các lệnh khi hiển thị một bảng
có nhiều dữ liệu Tùy vào loại LOAD mà bạn muốn thực hiện, chỉ có mỗi quyền LOAD không thì không đủ Các đặc quyền cụ thể trên bảng cũng rất cần thiết
Lệnh sau có thể được thực hiện bởi người dùng có quyền hạn LOAD:
db2 quiesce tablespaces for table
db2 list tablespaces
db2 runstats (bảng bất kỳ)
db2 load insert (cần phải chèn các đặc quyền trên bảng)
db2 load restart/terminate after load insert (cần phải chèn các đặc quyền trên bảng)
db2 load replace (cần phải chèn và xóa các đặc quyền trên bảng)
db2 load restart/terminate after load replace (cần phải chèn và xóa các đặc quyền trên bảng)
Chỉ người dùng có quyền hạn SYSADM hoặc DBADM mới được phép cấp quyền hạn LOAD cho người dùng hoặc nhóm người dùng Các ví dụ sau minh họa cách
Trang 37quyền hạn LOAD cho phép người dùng LOAD dữ liệu vào bảng có tên là sales
Giả sử câu lệnh db2 connect to sample được thực hiện
db2 grant load on database to user tst1
db2 grant insert on table sales to user tst1
Với quyền hạn LOAD và các đặc quyền chèn, tst1 có thể thực hiện LOAD
INSERT hoặc LOAD RESTART, hay TERMINATE sau một LOAD
INSERT trong bảng sales
db2 grant load on database to group grp1
db2 grant delete on table sales to group grp1
db2 grant insert on table sales to group grp1
Với quyền hạn LOAD, cũng như các đặc quyền xóa và chèn, bất kỳ thành
viên nào của grp1 có thể thực hiện LOAD REPLACE hoặc LOAD
RESTART, hoặc TERMINATE sau một LOAD REPLACE bảng sales
Khai thác quyền hạn SECADM
Quyền hạn được xem là quyền hạn mức cơ sở dữ liệu nhưng chỉ có thể cấp cho một người dùng cụ thể bằng một người dùng SYSADM Một người dùng có
SECADM có thể thực hiện các việc sau:
Tạo và xóa các thành phần nhãn bảo mật
Tạo và xóa các chính sách bảo mật
Tạo và xóa các nhãn bảo mật