Giáo trình Lập trình SQL Server

Phần Server: chứa các CSDL, cung cấp các chức năng phục vụcho việc tổchức và

quản lý CSDL, cho phép nhiều người sử dụng cùng truy cập dữ liệu. Điều này

không chỉtiết kiệm mà còn thểhiện tính nhất quán vềmặt dữliệu. Tất cảdữliệu

đều được truy xuất thông qua server, không được truy xuất trực tiếp. Do đó, có độ

bảo mật cao, tính năng chịu lỗi, chạy đồng thời, sao lưu dựphòng

Phần Client (Ứng dụng khách): Là các phần mềm chạy trên máy trạm cho phép ngưới

sửdụng giao tiếp CSDL trên Server.

SQL Server sửdụng ngôn ngữlập trình và truy vấn CSDL Transact-SQL, một version

của Structured Query Language. Với Transact-SQL, bạn có thểtruy xuất dữliệu, cập nhật và

quản lý hệthống CSDL quan hệ.

Với mỗi Máy chủbạn chỉcó một hệthống QTCSDL SQL Server. Nếu muốn có nhiều

hệthống QTCSDL bạn cần có nhiều máy chủtương ứng.

• Các phiên bản SQL Server 2000 :

a) Phiên bản chuẩn (Standard Edition): là phiên bản cung cấp toàn bộchức năng và

được thiết kếnhằm chạy trên máy tính với HĐH Windows NT hoặc Windows 2000

Server.

b) Phiên bản Personal Engine: Chạy trên máy đơn với HĐH Windows NT; Windows

2000 Server và cảWindows 9x. Nó hổtrợhầu hết các tính năng của SQL Server.

Do đó, bạn có thểxây dựng CSDL với phiên bản này, sau đó triển khai trên các

phiên bản khác.

Ngoài ra còn các phiên bản khác chạy trên Window NT hoặc 2000 Server như:

Enterprise Edition: dùng cho xí nghiệp

Developer Edition : dùng cho các doanh nghiệp nhỏ

Desktop Engine

pdf55 trang | Chuyên mục: SQL Server | Chia sẻ: dkS00TYs | Lượt xem: 2735 | Lượt tải: 4download
Tóm tắt nội dung Giáo trình Lập trình SQL Server, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Server 
- 50 - 
CHƯƠNG 6 : BẢO MẬT (SECURITY) 
I- Khái Niệm: 
Mỗi CSDL có 1 hay nhiều users được chỉ định quyền truy xuất dữ liệu. Người quản trị 
có thể cấp quyền truy xuất CSDL bằng cách tạo một tài khoản đăng nhập (login) SQL Server 
cho User, thêm User vào CSDL và gán quyền cho User trên CSDL đó. Bao gồm các loại 
quyền: 
• Quyền truy cập vào SQL Server 
• Quyền truy xuất CSDL 
• Quyền thực hiện trên các đối tượng của CSDL 
• Quyền xử lý dữ liệu 
II- Sử dụng EM: 
1- Tạo Tài Khoản Đăng Nhập (Login Acount): 
(1) Mở mục Security, click phải mục Login và chọn New Login… 
(2) Trên trang General, nhập tên đăng nhập, chế độ xác nhận, CSDL mặc định. 
Chú ý: Đăng nhập với SQL Server thường dùng cho việc kết nối quay số và mạng peer-to-
peer. 
(3) Trang Server Roles: Chọn vai trò quản trị mức Server cho tài khoản đăng nhập 
System Administrators 
Security Administrators 
Server Administrators 
Setup Administrators 
Database Creator 
Disk Administrators 
Process Administrators 
Bulk Administrators 
Đặc quyền cao nhất; cho phép thực hiện mọi tác vụ trên SQL 
Quản lý các server logins. 
Cho phép bạn định cấu hình những cài đặt server-wide. 
Cho phép thêm và xóa các linked servers, và truy xuất vài SP 
Tạo và hiệu chỉnh databases. 
Quản lý các files trên đĩa. 
Quản lý tiến trình đang chạy trong một thể hiện của SQL Server. 
Thực hiện phát biểu BULK INSERT. 
Chú ý :Bất kỳ Users của Windows NT thuộc nhómBUILTIN\Administrators đều có vai 
trò sysadmin. 
Lập trình SQL Server 
- 51 - 
(4) Trang Database Access: Chọn CSDL được phép truy xuất và vai trò của nó trong từng 
CSDL được chọn. 
Fixed Database Role Description 
Public Vai trò chung cho tất cả người dùng. 
db_owner Quyền cao nhất trong database. 
db_accessadmin Điều khiển truy xuất, cài đặt hoặc xóa user accounts. 
db_datareader Đọc tất cả dữ liệu trên database. 
db_datawriter Thêm, sửa, xóa dữ liệu trên các tables người dùng trong database. 
db_ddladmin Thêm, sửa, xóa các đối tượng objects (runs all DDLs). 
db_securityadmin Quản lý các roles, các thành viên của role, giấy phép trong database. 
db_backupoperator Cho phép back up database. 
db_denydatareader Từ chối quyền truy vấy dữ liệu trong database. 
db_denydatawriter Từ chối quyền thay đổi dữ liệu trong database. 
Sau khi tạo login, nó tự động nhập vào tập Users của mỗi database được chọn, với tên 
User trùng với tên Login. Bạn có thể thay đổi thu hồi vai trò của nó trên từng CSDL bằng cách 
sửa đổi thuộc tính của Login, hoặc chuyển đến tập Users của database và thay đổi thuộc tính 
hoặc xoá user nào mà bạn không muốn cho truy xuất data của bạn. 
Các Login được lưu trong table SysLogins của CSDL Master: 
If Exists( Select 1 From Master..SysLogins Where Name = 'Login') 
Các User trong một CSDL được lưu trong table SysUsers của CSDL đó 
If Exists( Select 1 From SysUsers Where Name = 'User01') 
2- Thay đổi thuộc tính cho Login: 
Bấm đúp vào tên Login hoặc click phải và chọn mục Properties 
3- Cấp Quyền Thực Thi Trên Mỗi CSDL: 
Chọn database, trong mục Users bấm đúp vào tên User cần hiệu chỉnh (Login-ID). 
Click nút Permission để chỉ định quyền truy cập dữ liệu trên từng Table, View. Quyền 
kiểm tra RB tham chiếu (DRI - Declarative Referential Integrity). Quyền thực hiện các thủ tục 
lưu trử. 
Chú thích: Quyền kiểm tra RB tham chiếu được sử dụng khi Table A được cấp quyền Update 
hoặc Insert. Table A có RB FOREIGN KEY với table B, mà table B không được cấp 
quyền SELECT. 
4- Cấp Quyển Tạo Đối Tượng Trên CSDL: 
o Click phải vào tên CSDL, chọn Properties 
o Trong HT Properties, chọn trang Permissions 
o Đánh dấu chọn các phát biểu được cần cấp quyền thực hiện cho các User. 
Lập trình SQL Server 
- 52 - 
5- Xóa User trên một CSDL: 
Click phải vào tên user và chọn Delete. 
6- Tạo User với Login đã có: 
Click phải vào mục Users và chọn New 
Database User... 
Chú ý: Bạn có thể thay đổi tên User bằng cách xóa 
và tạo lại với login cũ. 
7- Xóa Tài Khoản Đăng Nhập: 
Click phải vào tên Login và chọn Delete 
Với cách này sẽ xóa bỏ các user trong các CSDL đã chọn cho tài khoản này. 
III- Sử Dụng QA: 
1- Tạo Tài Khoản Đăng Nhập (Login Acount): 
a- Thêm Tài khoản với chế độ xác nhận SQL Server: 
SP_ADDLOGIN [ @login = ] 
[ , @password = ] 
[ , @defdb = ] 
[ , @deflanguage = ] 
[ , @sid =] 
[ , @encriptopt = 'skip_encription' ] 
o @defdb : tên CSDL mặc định được mở khi đăng nhập. Nếu không chỉ định mặc định là 
CSDL Master. 
o @deflanguage : Ngôn ngữ mặc định 
o @sid : varbinary(16) : Mã nhận dạng của hệ thống. Nếu không chỉ định, hệ thống tự tạo 
một mã số mới. 
o @encriptopt varchar(20): Mặc định Password sẽ được mã hóa khi lưu trong các table hệ 
thống. Ngoại trù bạn gán giá trị skip_encryption cho tham số này. 
o Thủ tục trả về giá trị 0 nếu thành công, ngược lại trả về giá trị 1. 
Ví dụ: Tạo tài khoản tên 'myname', mật khẩu 'mypwd' vào CSDL 'QLDeTai' 
Sp_AddLogin 'user01', '01', 'QLDeTai' 
Kết quả trả về : New loigin created 
b- Cấp quyền kết nối cho User hay nhóm User của Windows kết nối đến SQL Server: 
SP_GRANTLOGIN [@loginame =] 'login' 
'Login': |\ 
Ví dụ: Thêm tài khoản cho user Windows NT [Server4\User01] kết nối đến SQL Server. 
EXEC sp_grantlogin ' Server4\User01' 
Hay EXEC sp_grantlogin [Server4\User01] 
Chú ý: Chỉ được thức hiện bởi những thành viên có vai trò sysadmin và securityadmin. 
2- Thay đổi mật khẩu: 
Sp_Password [ @old = ] 
Lập trình SQL Server 
- 53 - 
[ , @new = ] 
[ , @LoginName = ] 
3- Cấp quyền Truy xuất CSDL Hiện Hành cho Login: 
Sp_GrantDBAccess [ @loginname = ] 'Tênđăngnhập' 
[ [, @name_in_db = ] 'TênUser' ] 
Ví dụ: Use QLDeTai 
Go 
sp_GrantDBAccess 'user01', 'Anh' 
4- Xóa quyền truy xuất CSDL hiện hành: 
Sp_RevokeDBAccess [ @name_in_db = ] 'TênUser' 
Ví dụ: Sp_RevokeDBAccess 'Anh' 
5- Cấp quyền thực thi trên CSDL: 
Bao gồm các quyền: Select, Insert, Update, Delete, Reference, Excecute. 
GRANT ALL | [,…] 
ON [(,..)] | 
TO [,…] 
[WITH GRANT OPTION] 
[AS ] 
o All : Cấp tất cả các quyền thực thi Select, Insert, Update, Delete hay Reference trên table 
hay view; quyền Excecute cho SP. 
o TO : Khi cấp quyền cho nhóm hay user của Windows NT, phải 
chỉ định: |\. 
Để cấp quyền cho nhóm cục bộ Windows NT built-in, dùng từ khóa BUILTIN thay 
thế tên domain hoặc computer name. 
Quyền thực thi đã cấp cho role Public được áp dụng cho tất cả users trong CSDL. 
Quyền thực thi đã cấp cho user Guest được sử dụng cho tất cả Users không được phân 
quyền truy xuất trên CSDL. 
Ví dụ: USE QLDeTai 
Grant All On DeTai To User01 
GO 
GRANT SELECT ON DeTai TO public 
GO 
GRANT INSERT, UPDATE, DELETE ON DeTai TO Mary, [Corporate\BobJ] 
GO 
o WITH GRANT OPTION : Cho phép Login cấp quyền đã chỉ định trên đối tượng cho 
Login khác. 
o AS {group | role} : Được dùng khi quyền thực thi trên một đối tượng đã cấp cho nhóm 
hoặc role, và một User của nhóm hoặc Role muốn cấp quyển thực thi cho User khác không 
là thành viên của nhóm hoặc Role. 
Ví dụ: table NhatKy được tạo bới user Lac. Lac cấp quyền SELECT table NhatKy cho 
Role BanBe với mênh đề WITH GRANT OPTION để các user thành viên của Role BanBe có 
thể nhường quyền này cho các user khác không thuộc Role BanBe. 
User Hong, là thành viên của BanBe, muốn nhường quyền SELECT table NhatKy cho 
user Khoa, không là thành viên của role BanBe. 
/* User Lac */ 
GRANT SELECT ON NhatKy TO BanBe WITH GRANT OPTION 
/* User Hong */ 
GRANT SELECT ON NhatKy TO Khoa AS BanBe 
Lập trình SQL Server 
- 54 - 
6- Từ Chối quyền thực thi trên CSDL: 
DENY ALL | [,…] 
 [ ( column [ ,...n ] ) ] ON { table | view } 
 | ON table | view [ ( column [ ,...n ] ) ] 
 | ON stored_procedure 
TO [,…] [Cascade] 
Ví dụ: USE QLDeTai 
GO 
GRANT SELECT ON DeTai TO public 
GO 
DENY SELECT, INSERT, UPDATE, DELETE 
ON DeTai TO Mary, John, Tom 
7- Xóa bỏ quyền thực thi đã cấp hoặc từ chối trên CSDL: 
REVOKE [ GRANT OPTION FOR ] 
 { ALL | permission [ ,...n ] } 
 [ ( column [ ,...n ] ) ] ON { table | view } 
 | ON { table | view } [ ( column [ ,...n ] ) ] 
 | ON { stored_procedure | extended_procedure } 
 | ON { user_defined_function } 
TO | FROM security_account [ ,...n ] 
[ CASCADE ] 
[ AS { group | role } ] 
Ví dụ : Xóa bỏ quyền Select đã từ chối cho User Mary trên table DeTai. 
REVOKE SELECT ON DeTai TO Mary 
8- Cấp Quyền tạo đối tượng trong CSDL: 
GRANT ALL | [,…] 
TO [,…] 
Bao gốm các lệnh: CREATE DATABASE; CREATE DEFAULT; 
CREATE PROCEDURE; CREATE RULE; CREATE TABLE; CREATE VIEW; 
BACKUP DATABASE; BACKUP LOG 
Ví dụ: GRANT CREATE DATABASE, CREATE TABLE 
TO Mary, John, [Corporate\BobJ] 
9- Từ Chối quyền tạo đối tượng trên CSDL: 
DENY { ALL | statement [ ,...n ] } FROM security_account [ ,...n ] 
Ví dụ: DENY CREATE TABLE FROM Joe, [Corporate\BobJ] 
10- Xóa bỏ quyền tạo đối tượng đã cấp hoặc từ chối trên CSDL: 
REVOKE { ALL | statement [ ,...n ] } FROM security_account [ ,...n ] 
Ví dụ : REVOKE CREATE TABLE FROM Joe, [Corporate\BobJ] 
IV- Vai Trò Của User Trong SQL Server 
SQL Server hổ trợ 2 nhóm roles:sion 28—SQL Server Security 321 
o Vai trò trên SQL Server Chứa các quyền quản trị SQL Server 
o Vai trò trên Database: Chứa các quyền quản lý và thực thi trên các đối tượng của 
CSDL. Ngoài các vai trò được cung cấp bởi SQL Server có thể tạo thêm vai trò 
khác. 
1- Tạo Vai trò trên CSDL: 
 Trong EM: Mở CSDL, Click phải vào mục Roles và chọn New Database Role…, 
Nhập tên Role mới và click nút Add để thêm User 
 Trong QA: SP_ADDROLE [@rolename =] 'role' [ , [@ownername =] 'owner'] 
Ví dụ: Trong CSDL QLDeTai thêm role 'QuanLy' 
Lập trình SQL Server 
- 55 - 
SP_ADDROLE 'QuanLy' 
Go 
GRANT SELECT ON DeTai TO QuanLy 
2- Thêm User vào Role: 
SP_ADDROLEMEMBER [@rolename =] 'role', 
 [@membername =] 'UserName' 
Ví dụ: Cấp quyền truy cập CSDL QLDeTai cho User và thêm vai trò ‘QuanLy’ cho User. 
USE QLDeTai 
GO 
EXEC SP_GRANTDBACCESS 'Server4\User01', 'Hong' 
GO 
EXEC SP_ADDROLEMEMBER 'QuanLy', 'Hong' 

File đính kèm:

  • pdfGiáo trình Lập trình SQL Server.pdf
Tài liệu liên quan