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

Thiết lập một vùng SQL với DB2 pdf

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 (1.13 MB, 40 trang )

Thiết lập một vùng SQL với DB2 Express-C, WTP Eclipse, và Máy chủ Ứng
dụng WebSphere, Bản Cộng đồng V1.1
Thực hiện bảo mật cơ sở dữ liệu với gói khởi công Java (Java kick-start)
Krishnakumar Balachandar, Kỹ sư phần mềm, IBM
Tóm tắt: Hướng dẫn này chỉ cho bạn biết cách lập ra một vùng SQL (SQL realm)
để thực hiện bảo mật cơ sở dữ liệu cho một ứng dụng Web bằng cách sử dụng gói
phần mềm miễn phí để khởi công Java ™ (Java kick-start package).
Trước khi bạn bắt đầu
Khi triển khai thực hiện bảo mật trong một ứng dụng Web, cần phải có một mô-
đun JAAS dành riêng để xử lý việc xác thực và cấp quyền cho người dùng. Máy
chủ Ứng dụng WebSphere Bản Cộng đồng (WebSphere Application Server
Community Edition) cung cấp một vùng SQL, có thể kết nối đến một cơ sở dữ liệu
để thu thập các quyền hạn của người sử dụng. Trong hướng dẫn này bạn sẽ thấy
cách thiết lập các bảng để tạo một vùng SQL trong DB2 Express-C, cách thiết lập
một môi trường phát triển bằng cách sử dụng nền công cụ Web của Eclipse
(Eclipse Web Tooling Platform) để tạo một ứng dụng Web, và cách triển khai ứng
dụng Web từ Eclipse lên Máy chủ Ứng dụng WebSphere Bản Cộng đồng.
Tất cả các ứng dụng Web sẽ áp dụng một mức độ bảo mật nào đó đối với việc xác
thực và cấp quyền người sử dụng để xác minh nhận dạng của người sử dụng và
cho phép truy cập các chức năng của ứng dụng, áp dụng được đối với vai trò của
người sử dụng này.
Các ứng dụng Web có thể sử dụng LDAP, cơ sở dữ liệu, hệ thống tệp tin,
Kerberos, hoặc các hệ thống tương tự như vậy, để cung cấp việc xác thực và cấp
quyền. Để truy cập dữ liệu bảo mật từ phương thức hoặc hệ thống được chọn, một
vùng SQL được thiết lập ra bằng cách tạo các bảng trong một cơ sở dữ liệu và xác
lập cấu hình cho một mô đun dịch vụ xác thực và cấp quyền trong Java (Java
Authentication and Authorization Service - JAAS) để truy cập vào các bảng ấy từ
một máy chủ ứng dụng.
Hình 1 cho thấy các thành phần khác nhau trong Máy chủ Ứng dụng WebSphere
Bản Cộng đồng (sau đây gọi tắt là Bản Cộng đồng) được sử dụng để cung cấp một
vùng SQL. Các ứng dụng Web sử dụng một vùng SQL kết nối vào cơ sở dữ liệu


bằng cách sử dụng một pool hoặc trình điều khiển cơ sở dữ liệu. Quyền hạn của
người sử dụng được lưu trong bảng trong cơ sở dữ liệu và được chuyển tải về khi
thực hiện các lời gọi, bằng cách sử dụng vùng SQL JAAS.

Hình 1. Các thành phần của một vùng SQL

Dịch vụ xác thực và cấp quyền trong Java (Java Authentication and Authorization
Service - JAAS) là một bộ các API cho phép các ứng dụng Java truy cập vào các
dịch vụ xác thực và dịch vụ kiểm soát truy cập mà không bị buộc vào dịch vụ mà
nó sử dụng.
Thiết lập một vùng cơ sở dữ liệu
Thiết lập một vùng cơ sở dữ liệu bao gồm việc thực hiện các bước chung sau đây:
 Tạo các bảng cho người sử dụng và các nhóm trong DB2 Express-C.
 Triển khai một pool cơ sở dữ liệu trong máy chủ Bản Cộng đồng, nếu vùng
đó định sử dụng một pool để kết nối với cơ sở dữ liệu.
 Triển khai sơ đồ vùng SQL trong máy chủ Bản cộng đồng.
 Lập cấu hình và triển khai ứng dụng Web mà sử dụng vùng SQL này.
Phần còn lại của hướng dẫn này giải thích chi tiết các nhiệm vụ ấy.

Thiết lập một cơ sở dữ liệu
Trong phần này, bạn sẽ thấy cách thiết lập cơ sở dữ liệu và các bảng cơ sở dữ liệu
cần có cho vùng SQL. Bạn có thể tạo cơ sở dữ liệu và các bảng hoặc bằng cách sử
dụng Trung tâm điều khiển (Control Center) hoặc thông qua việc chạy một kịch
bản lệnh SQL.
Sử dụng Trung tâm điều khiển
Tạo cơ sở dữ liệu
1. Trong DB2 Express-C, mở Trung tâm điều khiển.
2. Nhấn chuột phải vào All Databases, sau đó chọn Create Database =>
Standard.
3. Gõ nhập WASCE làm tên cơ sở dữ liệu.

4. Nhấn Finish.
Bạn vừa tạo ra một cơ sở dữ liệu mới có tên WASCE và sẽ thấy nó được liệt kê
dưới mục All Databases (Hình 2).

Hình 2. Cơ sở dữ liệu mới được tạo



Tạo các bảng
Bây giờ, hãy tạo các bảng cho người dùng (USERS) và cho các nhóm (GROUP)
trong cơ sở dữ liệu mới WASCE:
1. Dưới mục WASCE trong liệt kê thư mục, nhấn chuột phải vào Tables, sau
đó chọn Create.
2. Gõ nhập làm tên bảng USERS, sau đó nhấn Next.
3. Thêm một cột:
a. Chọn Add để thêm một cột mới vào bảng.
b. Gõ nhập USERNAME làm tên cột.
c. Chọn kiểu dữ liệu của cột là VARCHAR.
d. Đối với mục Nullable or not, chọn No.
e. Nhấn Apply.
4. Lặp lại bước 3 để thêm một cột EMAIL và một cột PASSWORD vào bảng
USERS, với các giá trị như thấy trong Hình 3. Khi hoàn tất, nhấn OK.
5. Lặp lại các bước từ 1 đến 4 để tạo ra một bảng GROUPS mới với hai cột:
GROUPNAME và USERNAME.
6. Nhấn Next => Next => Next để đến các phím Define trên ô hình bảng mới.
7. Chọn Add Primary. Từ các cột có sẵn, chọn cột nào định làm khoá chính
cho mỗi bảng:
a. Đối với bảng USERS, chọn USERNAME và đối với bảng chọn
USERNAME/GROUPNAME làm khóa chính.
b. Đối với bảng GROUPS, chọn Add foreign => USERNAME. Nhấn

nút > để chuyển nó vào khoá ngoại. Chọn USERNAME làm khóa
chính trong bảng Cha (Schema/Name -
ADMINISTRATOR/USERS).
8. Nhấn Finish và bảng được tạo ra.
Áp dụng các bước trên đây và các định nghĩa lược đồ như thấy trong Hình 3 và
Hình 4 để tạo ra các bảng USERS và GROUPS. Đối với bảng USERNAME thì
USERNAME là khóa chính. Đối với bảng GROUPS thì GROUPNAME và
USERNAME là các khóa chính, và USERNAME là một khoá ngoại (tham chiếu
đến USERNAME trong bảng USERS).

Lược đồ USERS


Hình 4. Lược đồ GROUPS

Trong các bước nói trên đây, các bảng USERS và GROUPS được tạo ra dưới lược
đồ ADMINISTRATOR. Nếu bạn đã đăng nhập dưới tên db2admin, các bảng sẽ
được tạo ra dưới lược đồ DB2ADMIN.
Điền giá trị vào các bảng
1. Chọn WASCE => Tables => USERS.
2. Nhấn chuột phải vào bảng USERS, sau đó chọn Open => Add row.
3. Gõ nhập các giá trị thử vào từng trường trong bản ghi cơ sở dữ liệu, sau đó
chọn Commit.
4. Lặp lại các bước 2 và 3 đối với từng bản ghi thử mà bạn muốn tạo ra, sau
đó nhấn Close.
5. Lặp lại các bước từ 1 đến 4 đối với bảng GROUPS (Hình 5).

Hình 5. Tạo các bản ghi dữ liệu thử

Sử dụng các kịch bản lệnh

Thay vì sử dụng Trung tâm điều khiển DB2, bạn có thể tạo cơ sở dữ liệu, bảng, và
dữ liệu thử bằng cách sử dụng một kịch bản lệnh SQL. Tệp tin tải về kèm trong
hướng dẫn này chứa một tệp tin kịch bản lệnh mẫu, db2_realm.sql. Hãy thực hiện
kịch bản lệnh này từ dòng lệnh DB2 để tạo ra cơ sở dữ liệu và bảng:
1. Mở một cửa sổ lệnh Windows hoặc chạy tệp tin bó (batch file) DB2 /<db2
install directory>bin/db2cw.bat.
2. Thực hiện tệp tin kịch bản lệnh mẫu bằng lệnh này: db2 -tvfdb2-realm.sql.
Nếu không gặp lỗi, các thông báo thực hiện thành công sẽ được tạo ra cho SQL
này (Hình 6).

Hình 6. Tạo cơ sở dữ liệu, bảng, và dữ liệu thử thông qua sử dụng kịch bản
lệnh



Tạo ứng dụng Web
Trong phần này, bạn sẽ sử dụng Nền Công cụ Web của Eclipse (Eclipse Web
Tools Platform - WTP) để tạo ra một ứng dụng Web đơn giản. Tuy nhiên trước khi
bắt đầu với ứng dụng, bạn cần phải định nghĩa một máy chủ mới trong Eclipse
(mà các ứng dụng mới sẽ được triển khai lên nó) và tạo một Môi trường Java
Runtime (JRE). Sau đó, bạn có thể sử dụng WTP Eclipse để tạo ra các thành phần
ứng dụng (như các tệp tin WAR và EAR). Tệp tin tải về kèm hướng dẫn này chứa
một tệp tin EAR nguồn của một ứng dụng mẫu mà bạn có thể nhập khẩu vào WTP
Eclipse.
Xác định một máy chủ mới
Để triển khai một ứng dụng, bạn cần định nghĩa một máy chủ trong Eclipse:
1. Trong Eclipse, nhấn chuột phải vào phiếu Server và chọn New Server để
mở thủ thuật New Server (Hình 7).

Hình 7. Xác định máy chủ mới


2. Chọn WebSphere Application Server Community v1.1 Server, sau đó
nhấn Next.
3. Gõ nhập các giá trị vào tất cả các trường, như Hình 8, sau đó nhấn Finish.

Hình 8. Các tham số máy chủ mới

Tạo một JRE
Để xây dựng ứng dụng dành cho một môi trường chạy Java (JRE - Java Runtime
Environment) được hỗ trợ, trong trường hợp này là JRE IBM, bạn cần phải cấu
hình JRE đó trong WTP Eclipse:
1. Trong Eclipse, chọn Window => Preferences.
2. Chọn Java => Installed JREs.
3. Nhấn Add. . .
4. Trên hộp thoại Add JRE, nhập các giá trị vào tất cả các trường, như trong
Hình 9.

Hình 9. Thêm JRE

5. Phải chắc chắn JRE này được chọn là JRE mặc định.
6. Tiếp theo bạn cần chắc chắn rằng JRE IBM sẽ chạy trên máy chủ mới mà
bạn đã tạo ra trước đó. Nhấn chuột phải vào máy chủ mới, sau đó chọn
Open (Hình 10).

Hình 10. Mở máy chủ mới

7. Bên cạnh mục Runtime, chọn Edit.
8. Đối với mục JRE, chọn IBM (Hình 11), sau đó chọn Finish.

Hình 11. Chọn JRE IBM


Phát triển một ứng dụng
Ứng dụng Web sẽ gồm các trang web dành cho ứng dụng (trong một tệp tin WAR)
và sẽ được bổ sung vào một ứng dụng doanh nghiệp (trong một tệp tin EAR). Để
phục vụ cho hướng dẫn này, bạn có thể sử dụng một ứng dụng mà bạn phát triển
từ ban đầu, hoặc bạn có thể sử dụng ứng dụng mẫu kèm trong tệp tin tải xuống.
Tạo một ứng dụng mới trong WTP Eclipse
1. Chạy WTP Eclipse bằng cách nhấn đúp chuột vào eclipse.exe từ địa chỉ mà
bạn trích xuất nền WTP hoặc bằng cách thực hiện eclipse.exe từ một dòng
lệnh.
2. Chọn File => New => Project => Web =>Dynamic Web Project.
3. Trên hộp thoại Dynamic Web Project, gõ nhập hoặc chọn các giá trị sau:
o Project name: SQLRealmWeb
o Target runtime: WebSphere Community Edition v1.1
o EAR membership: SQLRealmApp
4. Nếu bạn cần tạo ra một tùy chọn môi trường chạy dành cho Máy chủ Ứng
dụng WebSphere, Bản Cộng đồng V1.1 (Hình 12):
a. Nhấn nút New cạnh Target Runtime.
b. Chọn WebSphere Application Server Community Edition v1.1,
sau đó nhấn Next.
c. Chọn IBM for JRE, và di chuyển đến thư mục cài đặt máy chủ ứng
dụng thích hợp, sau đó nhấn Finish.

Hình 12. Tạo môi trường chạy là máy chủ Bản Cộng đồng

5. Nhấn Next trên hai ô hình tiếp theo.
6. Đối với Context Root, nhập /SQLRealmWeb, sau đó nhấn Next.
7. Cấu hình cho kế hoạch triển khai Geronimo bằng cách nhập vào các giá trị
sau:
o Group ID: wasce

o Artifact ID: sqlrealm
o Version: 1.0
o Artifact Type: WAR
8. Nhấn Finish (Hình 13).

Hình 13. Thiết lập máy chủ đã hoàn tất

Nhập khẩu ứng dụng mẫu vào WTP Eclipse
Nếu bạn chọn nhập khẩu dự án mẫu, tệp tin tải về kèm hướng dẫn này chứa một
tệp tin EAR mà bạn có thể nhập khẩu vào vùng làm việc WTP Eclipse:
1. Trong Eclipse, chọn File => Import => J2EE.
2. Đối với Source File, nhập SQLRealmAppSrc.ear, sau đó nhấn Next.
3. Gõ nhập hoặc chọn các giá trị sau:
o EAR Project: SQLRealmApp
o Web Project: SQLRealmWeb
o Target Runtime: WebSphere Community Edition v1.1
4. Nếu bạn cần tạo ra một tùy chọn môi trường chạy dành cho Máy chủ Ứng
dụng WebSphere, Bản Cộng đồng V1.1 (Hình 12):
a. Nhấn nút New cạnh Target Runtime.
b. Chọn WebSphere Application Server Community Edition v1.1,
sau đó nhấn Next.
c. Chọn IBM đối với JRE, và di chuyển đến thư mục cài đặt máy chủ
ứng dụng thích hợp, sau đó nhấn Finish.
5. Click Finish.

Triển khai ứng dụng
Với ứng dụng được tạo ra, bạn có thể triển khai nó lên môi trường chạy máy chủ
bản cộng đồng. Tuy nhiên để chạy ứng dụng này, bạn cần có một pool cơ sở dữ
liệu và một sơ đồ vùng:
Triển khai pool cơ sở dữ liệu

Để kết nối DB2, bạn cần có một pool cơ sở dữ liệu, mà bạn có thể tạo ra bằng cách
triển khai một sơ đồ pool cơ sở dữ liệu với thủ thuật có sẵn từ bàn quản trị máy
chủ Bản Cộng đồng:
1. Đăng nhập vào bàn quản trị máy chủ Bản Cộng đồng bằng cách khởi động
máy chủ. Để khởi động máy chủ, nhấn chuột phải vào máy chủ mới mà bạn
tạo ra trên đây, và chọn Start. Sau khi máy chủ khởi động, trạng thái đổi
sang màu xanh lục và hiển thị chữ "Started". Bây giờ bạn có thể cho chạy
bàn quản trị bằng cách nhấn chuột phải vào máy chủ đã được khởi động và
chọn Launch Community Edition Console. Nhập vào tên người sử dụng
là system và mật khẩu là manager.
2. Dưới mục Services, chọn Database Pools => Using Geronimo
PoolsWizard.
3. Đối với Database Pools, gõ nhập Db2Realm, rồi nhấn Next.
4. Trên ô hình Select Driver, JAR, Parameters, nhập vào hoặc chọn các giá trị
cho tất cả các trường như thấy trong Hình 14. Khi hoàn tất, nhấn Next.

Hình 14. Nhập các tham số pool cơ sở dữ liệu

5. Kiểm tra kết nối xem có lỗi không bằng cách chọn Test connection. Nếu
không gặp lỗi, bạn sẽ thấy thông báo: Test Result: Connected to DB2/NT
SQL09000 in the console.
6. Khi bạn đã triển khai pool này, nó sẽ được khởi động và chạy (Hình 15).

Hình 15. Pool cơ sở dữ liệu được triển khai

Triển khai sơ đồ vùng
Máy chủ Bản Cộng đồng kết nối vào các cơ sở dữ liệu SQL, sử dụng JAAS theo
mặc định, để cung cấp một vùng SQL cho các ứng dụng được triển khai trong máy
chủ. Bạn có thể tạo kết nối này bằng cách sử dụng một trình điều khiển JDBC kết
nối trực tiếp vào cơ sở dữ liệu, hoặc bằng cách sử dụng một pool cơ sở dữ liệu để

nhận một kết nối từ pool để kết nối với cơ sở dữ liệu.
Sơ đồ vùng (xem Liệt kê 1 và 2) được sử dụng để triển khai một vùng SQL mà kết
nối với cơ sở dữ liệu. Sơ đồ vùng chứa Geronimo GBeans cần có để tạo ra một
vùng SQL. GBean "sql-login" có các thuộc tính mà bạn sử dụng để xác định kiểu
vùng loginModuleClass =
org.apache.geronimo.security.realm.providers.SQLLoginModule, và các tùy chọn
để bạn xác định các thuộc tính JDBC cần thiết để kết nối với cơ sở dữ liệu. Bạn có
thể sử dụng sơ đồ này để kết nối với bất kỳ cơ sở dữ liệu JDBC nào. Trong bài tập
này, bạn có thể chỉ rõ trình điều khiển JDBC hoặc tên nguồn dữ liệu (DataSource)
để kết nối với cơ sở dữ liệu.
Sử dụng trình điều khiển JDBC
Liệt kê 1 cho thấy một sơ đồ vùng SQL sử dụng trình điều khiển JDBC để kết nối
với cơ sở dữ liệu. Sơ đồ này chứa trong tệp tin tải về tên là sqlplan.xml. Trong các
câu lệnh in đậm trong Liệt kê 1, hãy thay ADMINISTRATORS bằng tên lược đồ
trong đó các bảng được tạo ra.

Liệt kê 1. Sơ đồ vùng SQL thông qua việc sử dụng trình điều khiển JDBC

<module xmlns="
<environment>
<moduleId>
<groupId>db2</groupId>
<artifactId>realm</artifactId>
<version>1.0</version>
<type>car</type>
</moduleId>
<dependencies>
<dependency>
<groupId>geronimo</groupId>
<artifactId>j2ee-security</artifactId>

<version>1.1</version>
<type>car</type>
</dependency>
<dependency>
<groupId>console.dbpool</groupId>
<artifactId>DB2Realm</artifactId>
<version>1.0</version>
<type>rar</type>
</dependency>
</dependencies>
<hidden-classes/>
<non-overridable-classes/>
</environment>
<gbean name="sql-login"
class="org.apache.geronimo.security.jaas.LoginModuleGBean">
<attribute name="loginModuleClass">org.apache.geronimo.
security.realm.providers.SQLLoginModule</attribute>
<attribute name="serverSide">true</attribute>
<attribute name="options">jdbcUser=db2admin
jdbcPassword=db2admin
jdbcURL=jdbc:db2:WASCE
jdbcDriver=com.ibm.db2.jcc.DB2Driver
userSelect=select username, password from ADMINISTRATOR.USERS
groupSelect=select
groupname, username from ADMINISTRATOR.GROUPS</attribute>
<attribute name="loginDomainName">sql-realm</attribute>
</gbean>
<gbean name="sql-realm"
class="org.apache.geronimo.security.realm.GenericSecurityRealm">
<attribute name="realmName">sql-realm</attribute>

<reference name="LoginModuleConfiguration">
<name>sql-login</name>
</reference>
<reference name="ServerInfo">
<name>ServerInfo</name>
</reference>

<! Add >
<reference name="LoginService">
<name>JaasLoginService</name>
</reference>
</gbean>
<gbean name="sql-login"
class="org.apache.geronimo.security.jaas.JaasLoginModuleUse">
<attribute name="controlFlag">REQUIRED</attribute>
<reference name="LoginModule">
<name>sql-login</name>
</reference>
</gbean>

×