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

An toàn cơ sở dữ liệu, thực hành oracle 9i

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 (886.81 KB, 30 trang )

GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
1
AN 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.
-

GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
2
Bà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.

1.1 Users
Tạo user
Tạo một user giống với user khác
Thay đổi thuộc tính của một user (trạng thái tài khoản, profile mặc định)
Thêm đặc quyền và role cho một user


Remove đặc quyền hay role từ một user
- Bước 1: Tạo các user1, user2, user3 với mật khẩu là: 123
Chú ý:
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
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ụ:



GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
4



GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
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


GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
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?

GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
7
Bài thực hành 3: Quản lý lưu trữ trong Oracle

Bao gồm
 Controlfile
 Tablespaces
 Datafiles
 Rollback Segments
 Redo Log Groups
 Archive Logs



Controlfile
 Control files – file nhị phân nhỏ chứa thông tin về thể hiện CSDL, nó
cần thiết để khởi động CSDL. Tất cả những thay đổi chính trong cấu trúc của
CSDL sẽ được ghi vào file này
 Đường dẫn đến các file điều khiển

Tablespaces
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM

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


GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM

9


Chú ý:
 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?

GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
10
Bà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.
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
11
Bà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.
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
12



Cầ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
object).
- Bước 2 (Định nghĩa các thành phần nhãn - label component): mỗi một label
bao gồm 3 thành phần:
+ Level: là thành phần bắt buộc, phân cấp, thể hiện mức nhạy cảm của thông tin
+ Compartment: là thành phần tuỳ chọn, không phân cấp, sử dụng để phân loại
dữ
liệu. Ví dụ, compartment là các phòng ban làm việc của một tổ chức
+ Group:
cũng là một tùy chọn để giới hạn truy nhập trong một level. Group có
ích trong việc phân cấp user. Ví dụ, Group có thể là các chi nhánh của một công ty,
các vùng miền của một đất nước.
- Bước 3 (Tạo các 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.
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
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:
ID HoTen DiaChi Phong ChucVu ChiNhanh Luong
01 Trần Minh Hà Nội Giám đốc Miền Bắc 5000
02 Lê Minh Hà Tây Kế hoạch Trưởng
phòng
Miền Bắc 3500
03 Vũ Văn Hiệp Bắc
Giang
Kế hoạch Trưởng
phòng
Miền Nam 3500
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
Dương
Lập trình Trưởng
phòng
Miền Bắc 3500
07 Trần Văn Hoàng Nam
Định
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):
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
14
Cá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
SYSDBA).

EXECUTE SA_SYSDBA.CREATE_POLICY-
(policy_name => 'COMPANY' -
,column_name => 'rowlabel');

Kết quả :


2.2 Bước 2 (Định nghĩa các thành phần nhãn - label component):
Mỗi một label bao gồm 3 thành phần:
+ Level: là thành phần bắt buộc, phân cấp, thể hiện mức nhạy cảm của thông tin
+ Compartment: là thành phần tuỳ chọn, không phân cấp, sử dụng để phân loại
dữ liệu. Ví dụ, compartment là các phòng ban làm việc của một tổ chức
+ Group:
cũng là một tùy chọn để giới hạn truy nhập trong một level. Group có

ích trong việc phân cấp user. Ví dụ, Group có thể là các chi nhánh của một công ty,
các vùng miền của một đất nước.
2.2.1 Level
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
15
Tạ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 :
EXECUTE SA_COMPONENTS.CREATE_LEVEL -
( policy_name => 'COMPANY' -
,long_name => 'OFFICER' -
,short_name => 'OFF' -
,level_num => 7000);
EXECUTE SA_COMPONENTS.CREATE_LEVEL -
( policy_name => 'COMPANY' -
,long_name => 'MANAGER' -
,short_name => 'MGR' -
,level_num => 8000);
EXECUTE SA_COMPONENTS.CREATE_LEVEL -
( policy_name => 'COMPANY' -
,long_name => 'EXECUTIVE' -
,short_name => 'EXEC' -
,level_num => 9000);

Kết quả
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
16

2.2.2 Compartment
Tạo ra 3 compartnent tương ứng với 3 phòng ban: KH, MK, LT
Short Long Numeric
KH Phòng kế hoạch 100
MK Phòng Maketing 200
LT Phòng lập trình 300
Ta thực hiện bằng SQL*Plus Worksheet như sau:
EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT -
('COMPANY', 100, 'KH', 'Phong ke hoach');
EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT-
('COMPANY', 200, 'MK', 'Phong Maketting');
EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT -
('COMPANY', 300, 'LT', 'Phong lap trinh');
Kết quả
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
17


2.2.3 Group
Khác với Level và Compartment, ngoài 3 trường trên Group còn có thêm trường
Parent để biểu thị quan hệ giữa các group.
Tạo 3 group, tương ứng với ALL - đại diện cho cả nước, MB - là chi nhánh miền
bắc, MN – chi nhánh miền nam.


Short Long Numeric Parent

ALL Tổng công ty 10
MB Miền bắc 20 ALL
MN Miền Nam 30 ALL

Ta tạo các Group bằng câu lệnh SQL như sau :
EXECUTE SA_COMPONENTS.CREATE_GROUP-
('COMPANY', 10, 'ALL', 'Tong cong ty');
EXECUTE SA_COMPONENTS.CREATE_GROUP-
('COMPANY', 20, 'MB', 'Mien Bac', 'ALL');
EXECUTE SA_COMPONENTS.CREATE_GROUP-
('COMPANY', 30, 'MN', 'Mien nam', 'ALL');

Kết quả
ALL
MB MN
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
18


2.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 :
Labels Tag Number
EXEC: KH, MK, LT: ALL 100
EXEC: KH, MK, LT: MB 110
EXEC: KH, MK, LT: MN 120
MGR: KH: MB 200
MGR: KH: MN 210
MGR: LT: MB 220
OFF: MK: MB 300
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
19
OFF: MK: MN 310
OFF: LT: MN 320
OFF: KH: MB 330
OFF: KH: MN 340
… ….

Chúng ta thực thi các truy vấn SQL sau :

EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -
,label_tag => 100 -
,label_value => '
EXEC:KH,MK,LT:ALL');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -
,label_tag => 110 -

,label_value => '
EXEC:KH,MK,LT:MB');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -
,label_tag => 120 -
,label_value => '
EXEC:KH,MK,LT:MN');



EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -
,label_tag => 200 -
,label_value => '
MGR:KH:MB');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -
,label_tag => 210 -
,label_value => '
MGR:KH:MN');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -
,label_tag => 220 -
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
20
,label_value => '
MGR:LT:MB');

EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -

,label_tag => 300 -
,label_value => '
OFF:MK:MB');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -
,label_tag => 310 -
,label_value => '
OFF:MK:MN');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -
,label_tag => 320 -
,label_value => '
OFF:LT:MN');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -
,label_tag => 330 -
,label_value => '
OFF:KH:MB');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL -
(policy_name => 'COMPANY' -
,label_tag => 340 -
,label_value => '
OFF:KH:MN');


Kết quả
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
21

2.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:

ID HoTen DiaChi Phong ChucVu ChiNhanh Luong
01 Trần Minh Hà Nội Giám đốc Miền Bắc 5000
02 Lê Minh Hà Tây Kế hoạch Trưởng
phòng
Miền Bắc 3500
03 Vũ Văn Hiệp Bắc
Giang
Kế hoạch Trưởng
phòng
Miền Nam 3500
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
Dương
Lập trình Trưởng
phòng
Miền Bắc 3500
07 Trần Văn Hoàng Nam
Định
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 đó.
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
22




Tiếp theo chúng ta áp dụng chính sách đã tạo vào bảng TEST.NHANSU

2.4.2 Áp dụng chính sách ‘COMPANY’
Ta có thể chọn hai cách áp dụng sau:
- Áp dụng chính sách với các tùy chọn trước, không giấu cột rowlabel:
EXECUTE SA_POLICY_ADMIN.APPLY_TABLE_POLICY -
( policy_name => 'COMPANY' -
,schema_name => 'TEST' -
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
23
,table_name => 'NHANSU' -
,table_options =>
'LABEL_DEFAULT,READ_CONTROL,WRITE_CONTROL');
- Áp dụng chính sách và che giấu đi cột rowlabel:
EXECUTE SA_POLICY_ADMIN.APPLY_TABLE_POLICY -
( policy_name => 'COMPANY' -
,schema_name => 'TEST' -
,table_name => 'NHANSU' -
,table_options=>

'LABEL_DEFAULT,READ_CONTROL,WRITE_CONTROL,HIDE');
Giả sử ta chọn cách thứ nhất.
Kết quả
:
- Sau bước này bảng TEST.NHANSU sẽ có thêm một cột là ROWLABEL,
nhưng chưa có giá trị. Cần cập nhật các nhãn cho các hàng dữ liệu (các bản ghi)
trong bảng NHANSU này.
- 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

GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
24
2.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%';

UPDATE test.nhansu
SET ROWLABEL = char_to_label ('COMPANY',
'MGR:KH:MN') WHERE
UPPER (CHUCVU) LIKE '%TRUONG PHONG%' AND UPPER(PHONG) LIKE
'%KE HOACH%' AND UPPER(CHINHANH) LIKE '%MIEN NAM%';

UPDATE test.nhansu
GV: Trần Thị Lượng – Khoa ATTT, Học viện KTMM
25
SET 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%';

UPDATE test.nhansu
SET ROWLABEL = char_to_label ('COMPANY',
'OFF:MK:MB') WHERE
UPPER (CHUCVU) LIKE '%NHAN VIEN%' AND UPPER(PHONG) LIKE
'%MAKETTING%' AND UPPER(CHINHANH) LIKE '%MIEN BAC%';

UPDATE test.nhansu
SET ROWLABEL = char_to_label ('COMPANY',
'OFF:MK:MN') WHERE
UPPER (CHUCVU) LIKE '%NHAN VIEN%' AND UPPER(PHONG) LIKE
'%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.

×