Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Trang 1AN TOÀN CƠ SỞ DỮ LIỆU
THỰC HÀNH ORACLE 9i
Bài thực hành 1: cài đặt Oracle
- Cài đặt thành công Oracle 9i: chú ý chọn tùy chọn Custom, và chọn
tuỳ chọn Oracle Label Security trong khi cài đặt
- Tạo CSDL có tên là QLSV (SID = QLSV) bằng công cụ Database
Configuration Assistant
-
Trang 2Bài thực hành 2: Quản lý an toàn trong Oracle 9i
- Users: quản trị các tài khoản người dùng
- Roles: sắp xếp các đặc quyền trong các nhóm Role.
- Profiles: quản lý tài nguyên CSDL, giới hạn tài nguyên mà người
dùng được sử dụng trong profile đó
Chú ý: Người dùng mặc định là SYSTEM/mật khẩu = MANAGER
Trang 3- Khi tạo ra một user, hệ thống sẽ tạo ra một lược đồ - schema có tên
giống với tên của user đó
- User này phải được gán một tablespace
- Để anh ta có thể connect đến CSDL thì anh ta phải có:
+ Role: Connect (mặc định đã có) + System Prilvilege: SELECT ANY DICTIONARY + Quota: tương ứng với tablespace anh ta được gán phải là Unlimited
(hoặc thay bởi điều này, gán cho anh ta role RESOURCE)
(Chú ý: nếu Quota này không được gán Unlimited thì user vẫn
connect được CSDL nhưng ko được tạo bảng trong đó)
Ví dụ:
Trang 5- Bước 2: disconnect khỏi CSDL và đăng nhập lại bằng các tài khoản
này
- Bước 3: Đăng nhập lại bằng tài khoản SYSTEM, tạo một user
giống với user1 là user11, sau đó có thể thêm/remove đặc quyền cho user này, khóa tài khoản này và đăng nhập lại vào CSDL xem sự thay đổi
1.2 Roles
Roles
Tạo một role
Tạo một role giống một role khác
Sửa đổi thuộc tính của một role
Thêm đặc quyền và role cho một role
Remove đặc quyền và role khỏi một role
- Bước 1: Tạo một role có tên là AT, sau đó gán các role, các đặc quyền
hệ thống (system Prilvilege), đặc quyền đối tượng (Object Prilvilege) cho role này
- Bước 2: vào tài khoản SYSTEM, gán quyền cho user2 thêm role AT
này Sau đó chuột phải vào role AT để xem những người dùng đã được gán role này
1.3 Profiles:
Profiles: quản lý tài nguyên
Tạo một profile (bao gồm cả chính sách cho mật khẩu và số lần đăng nhập fail để khóa tài khoản)
Tạo một profile giống một profile khác
Thay đổi thuộc tính của một profile
Chỉ ra các phụ thuộc của một profile
Gán một profile cho user
Xóa một profile
Trang 6- Bước 1: Tạo một profile có tên là AT_Profile, gán các tài nguyên cho
profile này, khóa tài khoản của người dùng sau 3 lần đăng nhập sai
- Bước 2: đăng nhập bằng tài khoản SYSTEM, tạo tài khoản user4, sau
đó chọn profile không phải là DEFAULT mà là AT_Profile, sau đó thử đăng nhập bằng tài khoản user4 sai 3 lần xem tài khoản này có bị khóa hay ko?
Trang 7Bài thực hành 3: Quản lý lưu trữ trong Oracle
Đường dẫn đến các file điều khiển
Tablespaces
Trang 8 Tập hợp logic các file dữ liệu, tablespace bao gồm các segment
System tablespace – bao gồm dữ liệu hệ thống mà CSDL cần để quản
lý dữ liệu (bao gồm từ điển dữ liệu)
Temp tablespace - temporary clipboard được sử dụng để quản lý các
giao tác như sắp xếp dữ liệu từ mệnh đề ORDER BY của một câu truy vấn
Tools tablespace – Lưu các đối tượng được sử dụng bởi các tools
tương tác với CSDL
User’s tablespace – Lưu các đối tượng của một user riêng.
Rollback tablespace – Lưu các rollback segments; rollback segments
được sử dụng bởi CSDL để phục hồi dữ liệu (ví dụ: một giao tác bị lỗi để phục hồi nhưng thay đổi chưa được hoàn tất)
Data and index tablespaces – Lưu dữ liệu ứng dụng
Chỉ ra các không gian đĩa, kích cỡ của chúng và số lượng không gian
đã sử dụng trong các tablespace này (tính theo MB)
Tablespaces: Một số hoạt động thực hiện trên tablespace
Tạo, sửa hay xóa một tablespace
Tạo tablespace dựa trên một tablespace khác (create like)
Thêm một datafile
Thêm một rollback segment
Đặt một tablespace ở trạng thái online hay offline
Tạo một table read-only hoặc có thể ghi
Thiết lập các tham biến lưu trữ cho mỗi đối tượng
Trang 9Chú ý:
Khi tạo ra một tablespace (hay một profile) ta đều có thể dùng để gán cho user
Khi user được gán một tablespace, anh ta chỉ có thể tạo table,
view…trên tablespace của anh ta mà thôi!!!
- Bước 1: Tạo một tablespace tên là TableSpace_AT
- Bước 2: đăng nhập bằng tài khoản SYSTEM, tạo user5 và gán
tablespace cho anh ta là TableSpace_AT Sau đó đăng nhập bằng user5, kiểm tra xem tạo bảng và view trên các tablespace khác có được ko?
Trang 10Bài thực hành 4: Tạo bảng, khóa chính, khóa ngoại
Giả sử có hai bảng Lớp và Sinh viên như sau:
Lop(MaLop, TenLop)
Sinhvien(MaSV, HoTen, Quequan, MaLop)
- Bước 1: Tạo hai bảng này với MaLop, MaSV là hai khóa chính của hai bảng,
MaLop trong bảng Sinhvien là khóa ngoại chỉ đến MaLop trong bảng Lop
- Bước 2: Nhập dữ liệu cho hai bảng này
- Bước 3: Tạo một khung nhìn cho 2 bảng này, bao gồm các thông tin sau –
MaSV, HoTen, Quequan, TenLop, với điều kiện sinh viên đó thuộc tỉnh Hà Nam
Trang 11Bài thực hành 5: Thực hành chính sách
kiểm soát truy nhập MAC
1 Giới thiệu
Có thể nói sự thực thi của MAC trong các hệ quản trị là dựa và các nhãn - label,
dùng để gán cho các chủ thể và đối tượng của hệ thống Do đó, trong Oracle gọi
MAC là an toàn dựa vào nhãn - OLS (Oracle Label Security)
OLS trong Oracle cho phép bảo vệ dữ liệu của các bảng đến mức hàng - mức
bản ghi (row level)
Cài đặt OLS
Để cài đặt OLS, bạn phải lựa chọn tuỳ chọn Custom trong quá trình cài đặt
Oracle Đồng thời, khi create Database bạn phải chọn tuỳ chọn Oracle Label
Security
Bạn có thể thực thi OLS trong Oracle bằng công cụ Oracle Policy Manager Tại
đây, ta có thể tạo policy để áp dụng vào các bảng và các lược đồ Trong một Policy tạo ra, ta quan tâm đến 3 phần sau:
- Labels: là nhãn ta tạo ra để gán cho các bản ghi trong table, bao gồm:
+ Label components (Thành phần nhãn): bao gồm Level, Compartment và
Group
+ Data label: là nhãn dữ liệu tạo ra từ 3 thành phần nhãn trên
- Authorizations: là phần cấp quyền cho các user để cho phép họ truy nhập và
từng hàng dữ liệu như thế nào
- Protected Objects (Các đối tượng cần bảo vệ): đưa vào các bảng hay các
lược đồ cần bảo vệ
Bên cạnh đó, bạn có thể sử dụng thêm công cụ SQLPlus Worksheet để thực
hiện OLS bằng các câu lệnh SQL
Trang 12Cần có 5 bước để thực thi OLS trong Oracle:
- Bước 1 (Tạo chính sách OLS): Chính sách này bao gồm các nhãn (label), quyền
người dùng (user authorization), đối tượng CSDL cần bảo vệ (protected database
Trang 13- Bước 4 (Áp dụng chính sách an toàn trên cho các bảng hay các lược đồ): Sau
bước này, các bảng hay lược đồ đó sẽ được add thêm một cột chứa nhãn an toàn của từng hàng
- Bước 5 (Gán nhãn cho các user hay các ứng dụng): Bước này thực hiện gán
nhãn cho người dùng một cách phù hợp với từng người dùng
Sau đó OLS sẽ so sánh nhãn của một người dùng với nhãn dữ liệu gán cho từng hàng để đưa ra quyết định truy nhập Một người dùng chưa được gán nhãn sẽ không thể truy nhập vào bảng đó
2 Thực hành
Ví dụ: Ta có một bảng CSDL lưu thông tin về các nhân viên của một công ty
phần mềm như sau:
02 Lê Minh Hà Tây Kế hoạch Trưởng
04 Nguyễn Văn Hoàng Hà Nội Maketing Nhân viên Miền Nam 3000
05 Lê Thị Vân Hải
Phòng
Maketing Nhân viên Miền Bắc 1500
06 Nguyễn Văn Hải Hải
Lập trình Nhân viên Miền Nam 2000
08 Nguyễn Hoàng Yến Hải
Dương
Kế hoạch Nhân viên Miền Nam 1500
09 Lê Văn Giang Nghệ
An
Kế hoạch Nhân viên Miền Bắc 2000
10 Nguyễn Hồng Kiên Hà Tây Giám đốc Miền Nam 5000
Đặc tả bài toán:
- Tất cả các nhân viên có thể xem thông tin của các nhân viên của phòng mình
- Tất cả các trưởng phòng: có thể xem, sửa và thêm thông tin của phòng mình
- Giám đốc: có thể thực hiện tất cả các hoạt động đối với CSDL
2.1 Bước 1 (Tạo chính sách OLS):
Trang 14Cách 1: ta khởi động công cụ Oracle Policy Manager Đăng nhập (có thể
bằng tài khoản SYSTEM/manager, chú ý chọn SYSDBA) và tiến hành tạo
Policy (chính sách) với tên là COMPANY và tên cột là Rowlabel để gắn vào bảng dữ liệu Hoặc có thể thực hiện bằng truy vấn SQL thông qua công cụ
SQLPlus Worksheet (có thể bằng tài khoản SYSTEM/manager, chú ý chọn
Trang 15Tạo 3 level, tương ứng với 3 chức vụ: Giám đốc, trưởng phòng, nhân viên Level
có 3 phần : Short, Long và Numeric
Short Long Numeric
OFF OFFICER 7000 (nhân viên)
MGR MANAGER 8000 (trưởng phòng)
EXEC EXECUTIVE 9000 (giám đốc)
Ta thực hiện các câu lệnh SQL sau :
Trang 162.2.2 Compartment
Tạo ra 3 compartnent tương ứng với 3 phòng ban: KH, MK, LT
Short Long Numeric
Trang 17MN Miền Nam 30 ALL
Ta tạo các Group bằng câu lệnh SQL như sau :
Trang 182.3 Bước 3 (Tạo các data label để sử dụng):
Từ các label component đã định nghĩa ở bước 2, tạo một tập các nhãn dựa vào chính sách an toàn phù hợp với ứng dụng của bạn, các nhãn dữ liệu này ta sẽ dùng
để gắn với các bản ghi trong bảng dữ liệu NHANSU
Một label là một sự kết hợp của các levels, compartment, và group Mọi label đều chứa duy nhất một level, và một hoặc nhiều compartment và/hoặc một hay nhiều group Các label gắn với các kiểu truy nhập khác nhau vào dữ liệu của những người dùng khác nhau Label là một sự kết hợp của các shortname của level với các compartment, các group theo cú pháp sau:
Labels= level : compartment_1, compartment_n : group, group_n
Nhãn an toàn có 2 trường chính là Labels và Tag Number
Chúng ta cần tạo ra các nhãn sau :
Trang 212.4 Bước 4 (Áp dụng chính sách an toàn trên cho các bảng):
Trước tiên ta cần tạo bảng NHANSU tương ứng với dữ liệu đầu vào:
02 Lê Minh Hà Tây Kế hoạch Trưởng
04 Nguyễn Văn Hoàng Hà Nội Maketing Nhân viên Miền Nam 3000
05 Lê Thị Vân Hải
Phòng
Maketing Nhân viên Miền Bắc 1500
06 Nguyễn Văn Hải Hải
Lập trình Nhân viên Miền Nam 2000
08 Nguyễn Hoàng Yến Hải
Dương
Kế hoạch Nhân viên Miền Nam 1500
09 Lê Văn Giang Nghệ
An
Kế hoạch Nhân viên Miền Bắc 2000
10 Nguyễn Hồng Kiên Hà Tây Giám đốc Miền Nam 5000
2.4.1 Tạo và thêm dữ liệu vào bảng TEST.NHANSU
- Giả sử ta tạo một người dùng là TEST/123 Sau đó, ta tạo bảng NHANSU trong
lược đồ TEST này, và thêm dữ liệu vào cho bảng đó
Trang 23- Sau bước này, những user bình thường ko select được bảng nữa, chỉ có TEST (người tạo ra bảng), SYSTEM (admin) mới select được, nhưng ko có dữ liệu Do đó, ngay cả TEST ta cũng phải gán nhãn thì mới được quyền truy xuất
dữ liệu trong bảng NHANSU
Tiếp theo chúng ta thực hiện việc cập nhật các nhãn cho các hàng dữ liệu
Trang 242.4.3 Gán nhãn cho các hàng dữ liệu của bảng TEST.NHANSU
Cập nhật các nhãn bằng các câu lệnh SQL như sau :
- Gán nhãn cho các giám đốc:
UPDATE test.nhansu
SET ROWLABEL = char_to_label ('COMPANY', 'EXEC:KH,MK,LT:ALL') WHERE UPPER (CHUCVU) LIKE '%GIAM DOC%' AND UPPER(CHINHANH) LIKE '%ALL%';
UPDATE test.nhansu
SET ROWLABEL = char_to_label ('COMPANY', 'EXEC:KH,MK,LT:MB') WHERE UPPER (CHUCVU) LIKE '%GIAM DOC%' AND UPPER(CHINHANH) LIKE '%MIEN BAC%';
UPDATE test.nhansu
SET ROWLABEL = char_to_label ('COMPANY', 'EXEC:KH,MK,LT:MN') WHERE UPPER (CHUCVU) LIKE '%GIAM DOC%' AND UPPER(CHINHANH) LIKE '%MIEN NAM%';
- Gán nhãn cho các trưởng phòng:
UPDATE test.nhansu
SET ROWLABEL = char_to_label ('COMPANY', 'MGR:KH:MB') WHERE UPPER (CHUCVU) LIKE '%TRUONG PHONG%' AND UPPER(PHONG) LIKE '%KE HOACH%' AND UPPER(CHINHANH) LIKE '%MIEN BAC%';
Trang 25SET ROWLABEL = char_to_label ('COMPANY', 'MGR:LT:MB') WHERE UPPER (CHUCVU) LIKE '%TRUONG PHONG%' AND UPPER(PHONG) LIKE '%LAP TRINH%' AND UPPER(CHINHANH) LIKE '%MIEN BAC%';
- Gán nhãn cho các nhân viên:
UPDATE test.nhansu
SET ROWLABEL = char_to_label ('COMPANY', 'OFF:LT:MB') WHERE UPPER (CHUCVU) LIKE '%NHAN VIEN%' AND UPPER(PHONG) LIKE '%LAP TRINH%' AND UPPER(CHINHANH) LIKE '%MIEN NAM%';
UPDATE test.nhansu
SET ROWLABEL = char_to_label ('COMPANY', 'OFF:KH:MB') WHERE UPPER (CHUCVU) LIKE '%NHAN VIEN%' AND UPPER(PHONG) LIKE '%KE HOACH%' AND UPPER(CHINHANH) LIKE '%MIEN BAC%';
UPDATE test.nhansu
SET ROWLABEL = char_to_label ('COMPANY', 'OFF:KH:MN') WHERE UPPER (CHUCVU) LIKE '%NHAN VIEN%' AND UPPER(PHONG) LIKE '%KE HOACH%' AND UPPER(CHINHANH) LIKE '%MIEN NAM%';
'%MAKETTING%' AND UPPER(CHINHANH) LIKE '%MIEN NAM%';
Tiếp theo ta thử tạo ra một số người dùng với chức danh và vị trí tương ứng
và cấp quyền cho họ để kiểm tra
Trang 262.5 Bước 5 (Gán nhãn cho các user hay các ứng dụng):
Bước này thực hiện gán nhãn phù hợp với từng người dùng
- Trước tiên chúng ta tạo một số người dùng (bằng công cụ Enterprise hoặc SQL) như: EXECUTIVE_MB, EXECUTIVE_MN MGR_KH_MB, MGR_KH_MN, OFF_KH_MB, OFF_KH_MN, OFF_MK_MN, OFF_LT_MN…
(Khi chưa gán nhãn cho những người dùng này thì họ sẽ không thể đọc được dữ liệu gì trong bảng TEST.NHANSU, thậm chí cả người dùng TEST)
- Tiến hành gán quyền DAC cho các user này vào table NHANSU như sau (Chú ý: chỉ có người dùng TEST mới được gán quyền này - người sở hữu bảng):
EXECUTIVE_MB: SELECT, UPDATE, INSERT, DELETE
EXECUTIVE_MN: SELECT, UPDATE, INSERT, DELETE
MGR_KH_MB: SELECT, UPDATE, INSERT
MGR_KH_MN: SELECT, UPDATE, INSERT
OFF_KH_MB: SELECT
OFF_KH_MN: SELECT
OFF_MK_MN: SELECT
OFF_LT_MN: SELECT
Trang 27- Tiếp theo, tiến hành gán các gán các nhãn-label cho các user với chức vụ tương ứng để họ có thể truy nhập vào những bản ghi phù hợp như đặc tả của bài toán
Gán nhãn user
Ta gán nhãn tương ứng như sau: (chú ý người dùng TEST cũng cần được gán nhãn để có thể toàn quyền truy nhập vào bảng NHANSU):
EXECUTIVE_MB label= EXEC: KH, MK, LT: MB
EXECUTIVE_MN label= EXEC: KH, MK, LT: MN
MGR_KH_MB label = MGR: KH: MB
MGR_KH_MN label = MGR: KH: MN
OFF_KH_MB label = OFF: KH: MB
OFF_KH_MN label = OFF:KH:MN
OFF_LT_MN label = OFF: LT: MN
OFF_MK_MN label = OFF: MK: MN
Trang 30Chú ý: khi giám đốc hay trưởng phòng insert một bản ghi vào bảng NHANSU
(sau khi đã được áp dụng chính sách COMPANY) thì họ phải insert vào nhãn cho bản ghi đó Tuy nhiên anh ta chỉ có thể insert các rowlabel tương ứng với các chức danh nhỏ hơn mình, đồng thời cần phải biết các nhãn tương ứng để insert một cách chính xác