Tải bản đầy đủ (.pdf) (36 trang)

Bổ sung các khả năng an toàn mới trong DB2 9.5, Phần 2: Hiểu rõ các bối cảnh tin cậy pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (882.09 KB, 36 trang )

Bổ sung các khả năng an toàn mới trong DB2 9.5, Phần 2: Hiểu rõ các bối
cảnh tin cậy
Bảo đảm an toàn cho cơ sở dữ liệu của bạn
Paul Read, Giám đốc giới thiệu sản phẩm của IBM, EMC
Tóm tắt: IBM® DB2® 9.5 cung cấp các tùy chọn mới để bảo đảm an toàn chặt
chẽ hơn và cho phép các mức độ chi tiết và linh hoạt hơn trong việc quản trị cơ sở
dữ liệu. Hướng dẫn này là phần đầu tiên trong hai hướng dẫn nói về các vai trò
(roles) và các bối cảnh tin cậy. Hãy làm theo các bài tập trong hướng dẫn này, và
tìm hiểu cách tận dụng các đặc tính mới là vai trò của DB2 trong việc phối hợp với
các công nghệ e-business cốt yếu khác như các dịch vụ Web, máy chủ ứng dụng
Web và máy chủ cơ sở dữ liệu DB2.
Trước khi bạn bắt đầu
Hướng dẫn
Một bối cảnh tin cậy thiết lập một mối quan hệ tin cậy giữa DB2 và một thực thể
ngoài, như một máy chủ Web, một máy chủ ứng dụng hay một máy chủ DB2
khác. Trong thời gian kết nối, máy chủ DB2 kiểm tra xem kết nối đã phù hợp với
định nghĩa của một đối tượng bối cảnh tin cậy trong cơ sở dữ liệu chưa. Khi đã
phù hợp, kết nối cơ sở dữ liệu này được nói là tin cậy. Việc sử dụng các bối cảnh
tin cậy cung cấp khả năng kiểm soát lớn hơn, trong khi chỉ sử dụng các quyền ưu
tiên nhạy cảm, có hạn chế. Nó cũng cho phép các máy chủ hay các ứng dụng lớp
giữa xác định nhận dạng của người sử dụng với máy chủ cơ sở dữ liệu. Để biết
thêm thông tin về các bối cảnh tin cậy, xem bài "Sử dụng bối cảnh tin cậy trong
các ứng dụng khách của DB2" (developerWorks, 09. 2006).


Về hướng dẫn này
Hướng dẫn đưa bạn qua một loạt các bài tập để bạn tự làm quen với các bối cảnh
tin cậy, một đặc tính mới của DB2 9.5.
Hướng dẫn này tiếp theo Phần1 của loạt bài này, trong đó đã nói về các khái niệm
và các đặc tính của các vai trò trong DB2. Nó trình diễn cách làm sao để lợi dụng
đặc tính mới này của DB2 và cách làm sao để sử dụng các vai trò kết hợp với các


công nghệ e-business cốt yếu khác như các dịch vụ Web, máy chủ ứng dụng Web,
và máy chủ cơ sở dữ liệu DB2.


Các mục tiêu
Hướng dẫn này giúp bạn làm quen với các khái niệm và các đặc tính của các bối
cảnh tin cậy trong DB2 9.5. Trong các bài tập này, hãy tìm hiểu:
1. Các khái niệm cơ bản về các bối cảnh tin cậy
2. Làm sao để tạo ra và quản lý một bối cảnh tin cậy
3. Làm sao để sử dụng các bối cảnh tin cậy trong một chương trình mẫu
4. Cơ sở về xác định vấn đề


Các điều kiện cần có trước
Hướng dẫn được viết cho các chuyên gia DB2 có kỹ năng và kinh nghiệm ở mức
bắt đầu tới mức trung cấp. Bạn cần phải quen thuộc với việc sử dụng một dòng
lệnh DB2, lập trình CLI, và có kiến thức thực tế về quản lý cơ sở dữ liệu.


Các yêu cầu về hệ thống
Để thực hiện các ví dụ trong hướng dẫn này, bạn cần có các chương trình:
 DB2 9.5 Express-C
 Microsoft Windows 2003, XP hay Linux (môi trường đã hợp lệ)
 Phiên bản Java® Runtime Environment 1.4.2 hoặc mới hơn
Ngoài ra bạn phải bảo đảm phần cứng của mình đáp ứng được các yêu cầu chạy
DB2 9.5. (Xem trang Các yêu cầu hệ thống.)
Bản tải về DB2 9.5 Express-C có sẵn trong đường liên kết ở trên. DB2 9.5 là một
bản cài đặt đầy đủ, không phải là bản vá lỗi nâng cấp. Theo mặc định, DB2 sẽ tự
động khởi động sau khi cài đặt trừ khi bạn cài đặt nó không khởi động tự động.
Sử dụng các kịch bản lệnh và dữ liệu mẫu có trong tệp tin nén kèm theo (xem

phần Tải về) để giải thích các khái niệm trong hướng dẫn này. Giải nén tệp tin,
chứa các nội dung vào trong một thư mục con có tên là DB2Roles (C:\DB2Roles
hay home/userid/DB2Roles). Thư mục này sẽ được nói đến với tên đơn giản là
DB2Roles, xuyên suốt toàn bộ hướng dẫn này. Hướng dẫn này cũng giả thiết rằng
bạn sử dụng các thư mục mặc định trong khi cài đặt DB2 và yêu cầu bạn tạo ra
một số userid (tên nhận dạng người dùng) và tất cả các bài tập sẽ sử dụng các
userid được tạo ra này.


Định nghĩa một bối cảnh tin cậy
Các bối cảnh tin cậy giới thiệu khái niệm về các quyền ưu tiên nhạy bối cảnh
(context-sensitive). Các quyền ưu tiên cảm bối cảnh cho phép một tổ chức có
quyền kiểm soát nhiều hơn về việc lúc nào (trong bối cảnh nào) một người sử
dụng có một quyền ưu tiên nào đó. Ví dụ, một tổ chức có thể muốn một giám đốc
chỉ có khả năng truy nhập vào bảng lương khi giám đốc kết nối tới cơ sở dữ liệu từ
bên trong các văn phòng của công ty, nhưng không truy nhập được khi giám đốc
kết nối từ nhà.
Theo truyền thống, tất cả các tương tác với máy chủ cơ sở dữ liệu xảy ra thông qua
một kết nối cơ sở dữ liệu được thiết lập bởi lớp giữa, sử dụng một tổ hợp gồm ID
của người sử dụng và một sự uỷ nhiệm, chứng nhận lớp giữa đó với máy chủ cơ sở
dữ liệu. Nói cách khác, máy chủ cơ sở dữ liệu sử dụng các quyền cơ sở dữ liệu gắn
kết với ID người sử dụng lớp giữa, phục vụ mọi bước kiểm tra cấp phép và kiểm
toán tài khoản phải thực hiện trong bất kỳ truy nhập cơ sở dữ liệu nào, bao gồm
những truy nhập do lớp giữa thay mặt người sử dụng thực hiện.
Hình 1 1 minh họa mô hình ứng dụng có 3 lớp. Mặc dù mô hình ứng dụng 3 lớp có
nhiều lợi ích, thì việc tất cả các tương tác với máy chủ cơ sở dữ liệu (ví dụ, một
yêu cầu của người sử dụng) xảy ra dưới ID cấp phép của lớp giữa gây ra một số
quan ngại về an toàn

Hình 1. Mô hình ứng dụng có ba lớp



Các khả năng về bối cảnh tin cậy của DB2 được thiết kế đặc biệt để giải quyết các
mối quan ngại về an toàn này. Độ an toàn được tăng cường vì nó sử dụng nhận
dạng và quyền ưu tiên thực tế của người sử dụng để thực hiện các hoạt động cơ sở
dữ liệu. Hiệu năng có thể được nâng cao do không cần có kết nối mới khi bạn
chuyển đổi người sử dụng; nếu người sử dụng mới cần phải được xác thực, thì sẽ
không có quá tải vì xác thực người sử dụng mới tại máy chủ cơ sở dữ liệu:
 ID được cấp phép của hệ thống: Đây là ID được cấp phép, đại diện cho
người sử dụng thiết lập một kết nối cơ sở dữ liệu.
 Địa chỉ IP (hay tên miền): Là địa chỉ IP mà từ đó thiết lập kết nối cơ sở dữ
liệu .
 Mật mã hóa luồng dữ liệu: Đây là mức mật mã hóa (nếu có) được dùng để
mật mã hóa truyền dẫn dữ liệu giữa máy chủ cơ sở dữ liệu và người sử
dụng kết nối đến.
Khi một kết nối cơ sở dữ liệu được thiết lập, DB2 so sánh các thuộc tính của kết
nối đó với các định nghĩa của từng đối tượng bối cảnh tin cậy trong cơ sở dữ liệu.
Nếu các thuộc tính kết nối phù hợp với định nghĩa của một đối tượng bối cảnh tin
cậy, kết nối đó được coi như là một kết nối tin cậy. Một kết nối tin cậy cho phép
người khởi đầu kết nối đó nhận được các khả năng bổ sung thêm thường không có
sẵn, nếu ở ngoài phạm vi kết nối tin cậy đó.

Xây dựng môi trường
Hướng dẫn này sử dụng khung công tác đã xây dựng trong Phần 1, "Hiểu các vai
trò trong DB2 9.5" (developerWorks, 12.2007). Nếu bạn đã hoàn thành Phần 1,
tiếp tục đi tới phần "Quản lý bối cảnh tin cậy". Nếu không, bạn cần xây dựng môi
trường cơ sở theo chỉ dẫn sau đây.
Phần này giới thiệu một số mã lệnh mẫu, có sẵn để tải xuống cùng với hướng dẫn
này, để mô tả hành vi của các vai trò. (Xem phần Tải về .) Các mẫu dựa vào các
đối tượng cơ sở dữ liệu có thể được bổ sung vào cơ sở dữ liệu SAMPLE. Tất cả

các kịch bản lệnh cho phần này nằm trong thư mục con Section 2.
Để chạy các kịch bản lệnh trong một cửa sổ lệnh DB2, sử dụng lệnh:
db2 –tvf scriptname.sql


Các hướng dẫn
Đầu tiên, hãy đăng nhập vào hệ thống của bạn bằng userid của người quản
trị/userid gốc, rồi tạo ra các userid sau:
 DB2SEC cho SECADM
 MARK, ALLY, và SAUL sẽ là nhóm quản lý
 ADAM, DEBS, PETE, YANG, MARY, và ANNE
 ROSE, STAN, ALAN, LORI, EVAN, và KLEM
Các userid này không cần có bất kỳ các quyền hành động đặc biệt nào do chúng sẽ
chỉ được sử dụng với cơ sở dữ liệu DB2; tất cả các quyền ưu tiên và quyền hành
động cần thiết sẽ được phát ra bằng SQL. Bạn cũng cần một nhóm có tên là
Pension_gp. Đặt Rose vào trong nhóm này. Không thiết lập bất kỳ các quyền hạn
nhóm nào. Nếu sử dụng Windows, hãy chắc rằng những người sử dụng trên không
nằm trong nhóm Administrators.
Sơ đồ sau cho thấy sự phân cấp trong công ty và các vai trò sẽ được sử dụng trong
các bài tập.:

Hình 2. Cấu trúc của các vai trò


Cần chú ý rằng một số tên xuất hiện trong hai hộp vì một số cá nhân có công việc
ở cả hai ban và vì thế họ cần có nhiều hơn một role. KLEM là một người mới
được tuyển dụng nên anh ta chưa được gán tới một role nào.
Trong các bài tập sau đây, DB2inst1 được sử dụng như người quản trị cơ sở dữ
liệu DB2 và cơ sở dữ liệu SAMPLE được dùng làm cơ sở dữ liệu. Tất cả các kịch
bản lệnh đều sử dụng userid DB2inst1 và một mật khẩu là "password". Bạn phải

soạn thảo các kịch bản lệnh khớp với hệ thống của mình nếu bạn sử dụng một cơ
sở dữ liệu hay số ID quản trị cơ sở dữ liệu (DBA) khác. Xin kiểm tra xem cơ sở
dữ liệu "Sample" hay cơ sở dữ liệu khả dụng khác đã tồn tại chưa. Nếu không, bạn
cần sử dụng lệnh DB2SAMPL , để tạo ra cơ sở dữ liệu SAMPLE vì nó được sử
dụng xuyên suốt các phần còn lại của hướng dẫn này.
Bây giờ, hãy thêm những người sử dụng mới và các bảng mới vào cơ sở dữ liệu
cho tập hợp các bài tập này:
1. Thêm những người sử dụng vào cơ sở dữ liệu.
2. Nối đến cơ sở dữ liệu như là DBA và cấp các quyền ưu tiên sau đây:

Liệt kê lệnh 1. Cấp các quyền cho những người sử dụng cơ sở dữ liệu

GRANT CONNECT ON DATABASE TO USER MARK;


GRANT CONNECT ON DATABASE TO USER ALLY;

GRANT CONNECT ON DATABASE TO USER ADAM;


GRANT CONNECT ON DATABASE TO USER DEBS;

GRANT CONNECT ON DATABASE TO USER PETE;

GRANT CONNECT ON DATABASE TO USER YANG;


GRANT CONNECT ON DATABASE TO USER SAUL;

GRANT CONNECT ON DATABASE TO USER MARY;



GRANT CONNECT ON DATABASE TO USER ANNE;


GRANT CONNECT ON DATABASE TO USER ROSE;

GRANT CONNECT ON DATABASE TO USER STAN;

GRANT CONNECT ON DATABASE TO USER ALAN;


GRANT CONNECT ON DATABASE TO USER LORI;

GRANT CONNECT ON DATABASE TO USER EVAN;


GRANT SECADM ON DATABASE TO USER DB2SEC;

3.
hoặc sử dụng kịch bản lệnh AddUsers.sql để bổ sung thêm những người sử
dụng mới.
4. Tạo các bảng mới cho cơ sở dữ liệu SAMPLE bằng kịch bản lệnh
luwebase.sql. Nó giả thiết rằng bạn đang đặt các bảng vào trong
USERSPACE1.
Phần sau đây bổ sung thêm các bảng cơ sở:

Liệt kê lệnh 2. Bổ sung thêm các bảng cơ sở

LE_DEPARTMENT



LE_EMPLOYEE

LE_EMP_PHOTO

LE_EMP_RESUME


LE_ORG

LE_SALES

LE_PENSIONS
5.
6. Nạp dữ liệu vào trong các bảng mới bằng kịch bản lệnh luweload.sql. Bạn
phải soạn thảo kịch bản lệnh cho Linux hoặc khi bạn thay đổi các vị trí của
các tệp nạp vào.
7. Hoàn thành công việc cài đặt, hãy chạy kịch bản lệnh luweplus.sql để tạo ra
các khung nhìn, các chỉ mục và các đối tượng cơ sở dữ liệu khác bổ sung
thêm.
8. Tạo vai trò cơ sở, sử dụng lệnh sau:

Liệt kê lệnh 3. Tạo các vai trò cơ sở

CREATE ROLE Sales;

CREATE ROLE Mktg;

CREATE ROLE Admin;


CREATE ROLE Payroll;

CREATE ROLE Pension;

CREATE ROLE SalesMgr;


CREATE ROLE AdminMgr;


CREATE ROLE CEO;
9.
hoặc sử dụng kịch bản lệnh CreateRoles.sql để bổ sung thêm vai trò mới.
10. Cấp quyền cho các vai trò bằng lệnh sau đây:

Liệt kê lệnh 4. Cấp các quyền cho các vai trò

GRANT SELECT ON TABLE db2inst1.le_org TO ROLE Sales;

GRANT SELECT, UPDATE, INSERT ON TABLE db2inst1.le_sales TO
ROLE Sales;

GRANT SELECT ON TABLE db2inst1.le_org TO ROLE Mktg;

GRANT SELECT ON TABLE db2inst1.le_sales TO ROLE Mktg;

GRANT SELECT ON TABLE db2inst1.le_department TO ROLE Admin;



GRANT SELECT ON TABLE db2inst1.le_employee TO ROLE Admin;

GRANT SELECT ON TABLE db2inst1.le_org TO ROLE Admin;

GRANT SELECT ON TABLE db2inst1.le_sales TO ROLE Admin;

GRANT UPDATE ON TABLE db2inst1.le_department TO ROLE Admin;


GRANT UPDATE ON TABLE db2inst1.le_employee TO ROLE Admin;

GRANT SELECT ON TABLE db2inst1.le_department TO ROLE Payroll;


GRANT SELECT ON TABLE db2inst1.le_emp_photo TO ROLE Payroll;


GRANT SELECT ON TABLE db2inst1.le_emp_resume TO ROLE
Payroll;

GRANT SELECT ON TABLE db2inst1.le_pensions TO ROLE Payroll;

GRANT UPDATE, INSERT, DELETE ON TABLE db2inst1.le_employee
TO ROLE Payroll;

GRANT SELECT, UPDATE, INSERT, DELETE, ALTER ON TABLE
db2inst1.le_pensions TO ROLE Pension;
11.
hoặc sử dụng kịch bản lệnh AssignRoles.sql để tạo các vai trò.
12. Bây giờ bạn cần đặt các cá nhân vào trong vai trò tương ứng với họ. Cấp tư

cách thành viên của các vai trò, sử dụng lệnh sau:

Liệt kê lệnh 5. Cấp tư cách thành viên của các vai trò

GRANT ROLE SalesMgr, AdminMgr to ROLE CEO;
GRANT ROLE CEO TO USER Mark;

GRANT ROLE Admin, Payroll to ROLE AdminMgr;
GRANT ROLE AdminMgr TO USER Ally;

GRANT ROLE Sales, Mktg to ROLE SalesMgr;
GRANT ROLE SalesMgr TO USER Saul;

GRANT ROLE Admin TO USER Adam, Debs, Mary;


GRANT ROLE Mktg TO USER Mary, Anne, Rose;

GRANT ROLE Payroll TO USER Adam, Pete, Yang;

GRANT ROLE Pension TO USER Yang;

GRANT ROLE Sales TO USER Stan, Alan, Lori, Evan;

13.
hoặc sử dụng kịch bản lệnh AssignUsers.sql để cấp tư cách thành viên của
các vai trò.
Xin hãy kiểm tra các lỗi và các cảnh báo khi bạn chạy các kịch bản lệnh SQL. Bạn
có thể cũng muốn kiểm tra các đối tượng, sử dụng Trung tâm điều khiển hay công
cụ khác để xác nhận xem bạn có các bảng và dữ liệu chưa.


Quản lý bối cảnh tin cậy
Cách dùng các bối cảnh tin cậy
Xin chú ý rằng chỉ một bối cảnh tin cậy có thể được chỉ rõ cho một authid và bối
cảnh tin cậy sẽ không làm việc trên một cơ sở dữ liệu tại chỗ.
Trong DB2 9.5, bạn có thể tạo ra một đối tượng bối cảnh tin cậy trong cơ sở dữ
liệu để định nghĩa một mối quan hệ tin cậy giữa cơ sở dữ liệu và máy chủ ứng
dụng lớp giữa. Máy chủ ứng dụng lớp giữa sau đó có thể thiết lập một kết nối tin
cậy tường minh (explicit) tới cơ sở dữ liệu, cho phép ứng dụng lớp giữa chuyển ID
của người sử dụng hiện tại trên kết nối này sang một ID của người sử dụng khác,
có hoặc không cần xác thực.
Các bối cảnh tin cậy tạo ra một cơ chế mà nhờ đó việc nhận dạng người sử dụng
thực tế và các quyền cơ sở dữ liệu của người đó, được dùng phục vụ các yêu cầu
cơ sở dữ liệu do ứng dụng lớp giữa thay mặt người sử dụng thực hiện. Hơn nữa,
các bối cảnh tin cậy cho phép bạn kiểm soát khi nào một quyền ưu tiên có hiệu lực
với một người sử dụng cơ sở dữ liệu.
Giả thiết tất cả các kịch bản lệnh và các chương trình nằm trong thư mục DB2TC.
Nếu bạn thay đổi tên thư mục, bạn có thể phải biên tập lại các kịch bản lệnh.
Thiết lập một cơ sở dữ liệu từ xa
Để mô phỏng một cơ sở dữ liệu từ xa, bạn có thể sử dụng vòng phản hồi và định
nghĩa cơ sở dữ liệu tại chỗ, hiểu các bối cảnh tin cậy như là từ xa. Một phương
pháp để đạt được điều này là như sau:
1. Khởi động Trung tâm điều khiển DB2.
2. Nhấn chuột phải vào nút All Databases (tất cả cơ sở dữ liệu), và chọn
Add
3. Gõ hostname là 127.0.0.1, và chọn nút Search .
4. Chọn cơ sở dữ liệu SAMPLE, gõ nhập vào SAMPLER làm bí danh DB, và
nhấp OK.
5. Nhấn chuột phải vào nút cơ sở dữ liệu SAMPLER, và chọn Connect.
6. Nhập vào userid và mật khẩu đã chọn của các bạn khi được nhắc kiểm tra

kết nối.
Chúng tôi khuyến cáo rằng bạn soạn thảo tệp tin Hosts của mình để tạo ra các mục
cần thiết cho các bước thử này:
Giao thức truyền thông các bối cảnh tin cậy
Xin lưu ý rằng giao thức truyền thông duy nhất được bối cảnh tin cậy hỗ trợ là
TCP/IP. Các địa chỉ có thể được chỉ rõ theo định dạng IPv4, IPv6, hay DNS.
Chúng tôi khuyến cáo bạn sử dụng định dạng DNS để các địa chỉ không bị mã hoá
cứng vào trong cơ sở dữ liệu.
127.0.0.1 localhost
192.168.73.134 host1.Admin.LUWent.com


ở đây địa chỉ IP cho host1 là địa chỉ IP vật lý của máy bạn.
Chúng ta hãy khám phá cách tạo, thay đổi, và loại bỏ các bối cảnh tin cậy:
1. Nối tới cơ sở dữ liệu bằng userid SECADM. (Nếu bạn sử dụng các userid
từ Phần 1, thì đó là DB2SEC). Sau đó thử tạo ra bối cảnh tin cậy đầu tiên
của bạn:

Liệt kê lệnh 6. Tạo bối cảnh tin cậy đầu tiên

CREATE TRUSTED CONTEXT MktgTrustedContext
BASED UPON CONNECTION USING SYSTEM AUTHID Ally

ATTRIBUTES (
ADDRESS 'qwerty',
ENCRYPTION 'HIGH')
DEFAULT ROLE Mktg
ENABLE;



2.
hoặc sử dụng kịch bản lệnh MktgTCFail.sql. Kịch bản lệnh này thất bại với
DB21034E vì địa chỉ đã cho là không hợp lệ.

Liệt kê lệnh 7. Bối cảnh tin cậy đầu tiên thất bại

CREATE TRUSTED CONTEXT MktgTrustedContext BASED UPON
CONNECTION USING SYSTEM
AUTHID Ally ATTRIBUTES ( ADDRESS 'qwerty', ENCRYPTION
'HIGH') DEFAULT ROLE Mktg
ENABLE
DB21034E The command was processed as an SQL statement because it
was not a
valid Command Line Processor command. During SQL processing it
returned:
SQL0644N Invalid value specified for keyword "ADDRESS" in statement
"TRUSTED
CONTEXT". SQLSTATE=42615
3.
4. Nối tới cơ sở dữ liệu bằng userid SECADM, và sau đó thử tạo ra bối cảnh
tin cậy đầu tiên thành công của bạn. Lần này cung cấp một địa chỉ hợp lệ:

Liệt kê lệnh 8. Tạo ra bối cảnh tin cậy hợp lệ

CREATE TRUSTED CONTEXT MktgTrustedContext
BASED UPON CONNECTION USING SYSTEM AUTHID Ally

ATTRIBUTES (
ADDRESS 'localhost',
ENCRYPTION 'HIGH')

DEFAULT ROLE Mktg
ENABLE;


5.
hoặc sử dụng kịch bản lệnh MktgTC.sql. Kịch bản lệnh này cần phải thành
công.

Liệt kê lệnh 9. Tạo ra bối cảnh tin cậy thành công

CREATE TRUSTED CONTEXT MktgTrustedContext BASED UPON
CONNECTION USING SYSTEM
AUTHID Ally ATTRIBUTES ( ADDRESS '127.0.0.1', ENCRYPTION
'HIGH') DEFAULT ROLE
Mktg ENABLE
DB20000I The SQL command completed successfully.
6.
7. Nối tới cơ sở dữ liệu bằng userid SECADM, và sau đó thử tạo ra một bối
cảnh tin cậy thứ hai cho Ally. Điều này sẽ thất bại bởi vì bạn có thể chỉ có
một bối cảnh tin cậy cho mỗi người sử dụng:

Liệt kê lệnh 10. Tạo ra bối cảnh tin cậy thứ hai cho Ally

CREATE TRUSTED CONTEXT DupTrustedContext
BASED UPON CONNECTION USING SYSTEM AUTHID Ally

ATTRIBUTES (
ADDRESS 'localhost',
ENCRYPTION 'HIGH')
DEFAULT ROLE Mktg

ENABLE;

8.
hoặc sử dụng kịch bản lệnh DupTC.sql. Kịch bản lệnh này sẽ không thành
công.

Liệt kê lệnh 11. Tạo ra bối cảnh tin cậy thứ hai cho Ally thất bại

CREATE TRUSTED CONTEXT DupTrustedContext BASED UPON
CONNECTION USING SYSTEM
AUTHID Ally ATTRIBUTES ( ADDRESS '127.0.0.1', ENCRYPTION
'HIGH') DEFAULT ROLE
Mktg ENABLE
DB21034E The command was processed as an SQL statement because it
was not a
valid Command Line Processor command. During SQL processing it
returned:
SQL20372N The trusted context "DUPTRUSTEDCONTEXT" specified
authorization ID
"ALLY " which is already specified for another trusted context.
SQLSTATE=428GL
9.
10. Bây giờ, thay đổi bối cảnh tin cậy hiện tại cho Ally để cho phép cô ấy
chuyển ID thành Stan mà không cần xác thực. Nối tới cơ sở dữ liệu bằng
userid SECADM, và sau đó thay đổi MktgTrustedContext để thêm việc sử
dụng cho Stan.
ALTER TRUSTED CONTEXT MktgTrustedContext
ADD USE FOR Stan WITHOUT AUTHENTICATION;



11.
hoặc sử dụng kịch bản lệnh AltTC.sql. Kịch bản lệnh này cần phải thành
công.

Liệt kê lệnh 12. Kịch bản lệnh thành công

ALTER TRUSTED CONTEXT MktgTrustedContext
ADD USE FOR Stan WITHOUT AUTHENTICATION

DB20000I The SQL command completed successfully.

12.
13. Đôi khi, bạn có thể muốn vô hiệu hóa một bối cảnh tin cậy để tạm thời
ngăn không cho sử dụng nó. Nối tới cơ sở dữ liệu bằng userid SECADM ,
và sau đó thay đổi MktgTrustedContext để vô hiệu hóa bối cảnh tin cậy.
ALTER TRUSTED CONTEXT MktgTrustedContext
ALTER DISABLE;


14.
hoặc sử dụng kịch bản lệnh AltTC.sql. Kịch bản lệnh này cần phải thành
công.
ALTER TRUSTED CONTEXT MktgTrustedContext ALTER DISABLE

DB20000I The SQL command completed successfully.
15.
16. Cuối cùng, các bối cảnh tin cậy, giống như bất kỳ đối tượng cơ sở dữ liệu
khác, có thể bị loại bỏ. Nối tới cơ sở dữ liệu bằng userid SECADM , và sau
đó loại bỏ MktgTrustedContext.
DROP TRUSTED CONTEXT MktgTrustedContext;




17.
hoặc sử dụng kịch bản lệnh DropTC.sql. TKịch bản lệnh này cần phải thành
công.
DROP TRUSTED CONTEXT MktgTrustedContext
DB20000I The SQL command completed successfully.


Chuyển đổi Userid trong các kết nối tin cậy
Cách dùng các bối cảnh tin cậy
Xin chú ý rằng khả năng chuyển đổi chỉ có thể xảy ra thông qua hoặc một ứng
dụng CLI DB2 hoặc một ứng dụng JDBC DB2.
DB2 cho phép một kết nối tin cậy đã thiết lập được dùng dưới một ID được cấp
phép khác. Để cho phép điều này, bối cảnh tin cậy phải được định nghĩa để sử
dụng cho một ID cụ thể. Nếu chỉ rõ là PUBLIC, nó cho phép kết nối tin cậy được
sử dụng bởi bất kỳ ID được cấp phép nào. Khi một kết nối tin cậy hiển được thiết
lập, người khởi đầu kết nối tin cậy như vậy có được khả năng chuyển đổi ID được
cấp phép của kết nối này sang một ID được cấp phép khác.
Những người sử dụng chuyển đổi các bối cảnh tin cậy
Sự chuyển đổi ID được cấp phép phải được tiến hành ngoài ranh giới một giao
dịch, nếu không, bất kỳ giao dịch còn mở nào sẽ được cuộn ngược lại (roll back)
và kết nối sẽ chấm dứt với một lỗi xuất hiện.

Một thói quen tốt là hoàn thành tất cả các đơn vị công việc lôgic hay các giao dịch
bằng một lệnh COMMIT WORK tường minh. Điều này thiết lập một ranh giới
giao dịch và bảo đảm rằng bất kỳ công việc đang tiến hành nào cũng được hoàn
thành trước khi chuyển đổi ID.


Đối với mỗi đối tượng bối cảnh tin cậy, người quản trị an toàn có tùy chọn có hay
không chỉ rõ danh sách của các ID mà được phép chuyển đổi tới, và có hay không
cần xác thực khi tiến hành chuyển đổi. Người quản trị an toàn cũng có thể chỉ rõ
một vai trò mặc định hay một vai trò thay thế cho mỗi ID cá thể.

Chúng ta hãy khảo sát kỹ việc sử dụng các bối cảnh tin cậy và khả năng chuyển
đổi người sử dụng:
1. Trước khi bạn tạo ra bối cảnh tin cậy cho Ally, hãy nối tới cơ sở dữ liệu
SAMPLER với tư cách là Ally, và thử cập nhật bảng LE_PENSIONS:
UPDATE DB2INST1.LE_PENSIONS SET BA
SE=BASE + 2500 WHERE
EMPNO='012214'

2.
hoặc sử dụng kịch bản lệnh UPDtab.sql, hoặc sử dụng kịch bản lệnh
UPDtab.sql. Kịch bản lệnh này thất bại bởi vì Ally không có các quyền để
thực hiện hoạt động này.

Liệt kê lệnh 13. Kịch bản lệnh thất bại

DB21034E The command was processed as an SQL statement because it
was not a
valid Command Line Processor command. During SQL processing it
returned:
SQL0551N "ALLY" does not have the privilege to perform operation
"UPDATE" on
object "DB2INST1.LE_PENSIONS". SQLSTATE=42501
3.
4. Bây giờ, nối tới cơ sở dữ liệu bằng userid SECADM, và sau đó tạo ra một
bối cảnh tin cậy để cho phép Ally chuyển đổi sang Evan mà không cần đưa

ra thẻ xác thực. Tuy nhiên, khi chuyển thành Yang hay Stan thì lại cần xác
thực. Ngoài ra, thiết lập vai trò mặc định là Admin.

Liệt kê lệnh 14. Tạo ra bối cảnh tin cậy cho Ally

CREATE TRUSTED CONTEXT AdminUserCtxt
BASED UPON CONNECTION USING SYSTEM AUTHID Ally
ATTRIBUTES (ADDRESS 'host1.Admin.LUWent.com')
WITH USE FOR Yang WITH AUTHENTICATION,
Stan WITH AUTHENTICATION,
Evan WITHOUT AUTHENTICATION,
DEFAULT ROLE Admin
ENABLE;


5.
hoặc sử dụng kịch bản lệnh AdminTC.sql. Kịch bản lệnh này sẽ tạo thành
công bối cảnh tin cậy cho Ally.

Liệt kê lệnh 15. Tạo thành công bối cảnh tin cậy

CREATE TRUSTED CONTEXT AdminUserCtxt BASED UPON
CONNECTION USING SYSTEM AUTHID
Ally ATTRIBUTES (ADDRESS 'host1.Admin.LUWent.com') WITH
USE FOR Yang WITH
AUTHENTICATION, Stan WITH AUTHENTICATION, Evan
WITHOUT AUTHENTICATION, DEFAULT
ROLE Admin ENABLE
DB20000I The SQL command completed successfully.
6.

Khi đã chuyển đổi ID trên một kết nối tin cậy, tất cả các vết tích của môi
trường kết nối dưới ID trước bị loại bỏ. Nói cách khác, việc chuyển đổi các
ID dẫn đến một môi trường đồng nhất với một môi trường kết nối mới. Nếu
việc chuyển đổi thất bại vì bất kỳ lý do nào, kết nối sẽ bị ngắt.
7. Mỗi khi bạn tạo ra một bối cảnh tin cậy cho Ally, bạn có thể sử dụng nó với
một kịch bản lệnh CLI đơn giản. Hãy sử dụng kịch bản lệnh TC.CLI cung
cấp kèm theo trong tệp tải xuống. Kịch bản lệnh này nối tới cơ sở dữ liệu
SAMPLER với tư cách Ally và cập nhật bảng LE_EMPLOYEE, rồi chuyển
ID được cấp phép sang Yang để cập nhật bảng LE_PENSIONS:

Liệt kê lệnh 16. Kịch bản lệnh TC.CLI

# setup the script
Option ECHO ON
Option CALLERROR ON

# setup the environment
SQLAllocEnv 1
SQLAllocConnect 1 1

# enable trusted connections using
SQL_ATTR_USE_TRUSTED_CONTEXT (2561)
SQLSetConnectAttr 1, 2561, 1

# connect to a remote database
SQLConnect 1 SAMPLER SQL_NTS Ally SQL_NTS password
SQL_NTS

# perform some work
SQLAllocStmt 1 1

SQLExecDirect 1 "SELECT * FROM DB2INST1.LE_EMPLOYEE
WHERE EMPNO='012214'" SQL_NTS
FetchAll 1
SQLFreeStmt 1 SQL_CLOSE
SQLExecDirect 1
"UPDATE DB2INST1.LE_EMPLOYEE SET JOB='SeniorSR'
WHERE EMPNO='012214'" SQL_NTS
SQLTransact 1 1 SQL_COMMIT

# switch the userid on the trusted connection using
SQL_ATTR_TRUSTED_CONTEXT_USERID (2562)
SQLSetConnectAttr 1, 2562, "Yang"
# when context switching requires a password, use
SQL_ATTR_TRUSTED_CONTEXT_PASSWORD (2563)
SQLSetConnectAttr 1, 2563, "password"

# perform some work using the new userid
SQLAllocStmt 1 2
SQLExecDirect 2 "SELECT * FROM DB2INST1.LE_EMPLOYEE
WHERE empno='012214'" SQL_NTS
FetchAll 2
SQLFreeStmt 2 SQL_CLOSE
SQLExecDirect 2
"UPDATE DB2INST1.LE_PENSIONS SET BASE=BASE + 2500
WHERE EMPNO='012214'" SQL_NTS
SQLTransact 1 1 SQL_COMMIT

# clean up the environment
SQLDisconnect 1
SQLFreeConnect 1

SQLFreeEnv 1


8.
Để sử dụng kịch bản lệnh TC.cli, bạn cần gõ vào DB2CLI < TC.cli. Kết
qua đưa ra sẽ tương tự như sau:

Liệt kê lệnh 17. Kết quả đầu ra của TC.cli

> > > Option CALLERROR ON
>
> # setup the environment
> SQLAllocEnv 1
SQLAllocEnv: rc = 0 (SQL_SUCCESS)
CLI henv = 1, Test Driver henv = 1
> SQLAllocConnect 1 1
SQLAllocConnect: rc = 0 (SQL_SUCCESS)
CLI hdbc = 1, Test Driver hdbc = 1
>
> # enable trusted connections using
SQL_ATTR_USE_TRUSTED_CONTEXT (2561)
> SQLSetConnectAttr 1, 2561, 1
SQLSetConnectAttr: rc = 0 (SQL_SUCCESS)
>

×