Tiểu luận Bảo mật trong SQL Server

Mục lục

 

Lời nói đầu 1

Mục lục 2

1. Giới thiệu 3

1.1. Khái niêm cơ bản về bảo mật 3

1.2. Giới thiệu chung về bảo mật trong SQL Server 4

2.Quản lí việc đăng nhập 4

2.1.Xác nhận việc đăng nhập 4

2.2.Sự xác nhận quyền 5

2.3.Tạo 1 đăng nhập 5

3.Quản lí người dùng 9

3.1Người dùng của SQL Server 9

3.2.Mối quan hệ giữa người dùng CSDL và tên đăng nhập 10

3.3.Quản lí tên người dùng và tên đăng nhập 10

4.Quyền người dùng (User Right) 10

4.1.Cấp phát quyền truy cập vào cơ sở dữ liệu 10

4.2.Cấp phát quyền thực thi trên cơ sở dữ liệu 13

5.Quyền tạo đối tượng trong CSDL 14

5.1.Sử dụng thủ tục 14

5.2.Sử dụng trình điều khiển EM 15

6.Quản lí vai trò 17

6.1.Vai trò trên CSDL 18

6.2.Vai trò trên server 19

6.3.Sử dụng các thủ tục khai báo 1 vai trò 19

6.4.Thêm 1 thành viên vào vai trò 20

7.Đối tượng CSDL và quyền với đối tượng 21

7.1.Đối tượng CSDL và chủ đối tượng 21

7.2.Quyền với đối tượng CSDL 22

7.3.Thừa nhận và loại bỏ quyền với 1 đối tượng 22

8. Một số bảo mật khác 29

8.1. Tài khoản Guest (Guest Account) 29

8.2. Cấu hình cổng TCP/IP 29

8.3. Không nên sử dụng tài khoản sa 30

 

docx31 trang | Chuyên mục: SQL Server | Chia sẻ: dkS00TYs | Lượt xem: 3573 | Lượt tải: 2download
Tóm tắt nội dung Tiểu luận Bảo mật trong SQL Server, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
base ‘account’, owner ‘dbo’.
6.4.Thêm 1 thành viên vào vai trò:
Thủ tục thêm 1 người sử dụng vào 1 role có cú pháp như sau:
Sp_addrolemember [@rolename]
 	[@membername=]
Ví dụ:
Use account
Go
Sp_addrolemember testrole, ‘mya’
Go 
Select
Autoid
	Cast(entrydate as varchar(11)) as entrydate,
	invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate
from tblsim
order by invoiceDate desc
go
Kết quả trả về như sau:
‘mya’ added to role ‘testrole’.
Autoid	EntryDate	InvoiceNo	InvoiceDate
-----------------------------------------------------------------------------
2	oct 17 2001	inv002	dec 7 2001
3	oct 17 2001	inv003	dec 7 2001 
4	oct 18 2001	inv004	dec 7 2001
5	oct 17 2001	inv005	dec 7 2001
6	oct 17 2001	inv006	dec 7 2001
7	oct 18 2001	inv007	dec 7 2001 
8	oct 18 2001	inv008	dec 7 2001
1	oct 17 2001	inv001	dec 6 2001 
 (9 row(s) affected)
Tương tự ta có thể sử dụng thủ tục sp_addsvrolemember để thêm thành viên vào 1 vai trò trên server. Lệnh dưới đây thêm người dùng Home\Nam vào vai trò sysadmin:
EXEC sp_addsvrolemember ‘Home\Nam’,’sysadmin’
Để loại bỏ 1 người sử dụng ra khỏi role, sử dụng thủ tục sp_droprolemember có cú pháp sau:
	Sp_droprolemember [@rolename=] 
	[@membername=] 
 chính là tên tài khoản người sử dụng trong CSDL, sử dụng thủ tục sp_droprolemember để loại bỏ người sử dụng mya ra khỏi CSDL account, thực hiện phát biểu Select trên bảng tblsim, thông báo lỗi phát sinh trở lại như ví dụ sau:
Use account
Go
Exec sp_droprolemember testrole, ‘mya’
Go
Select
Autoid
	Cast(entrydate as varchar(11)) as entrydate,
	invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate
from tblsim
order by invoiceDate desc
go
Kết quả trả về như sau:
‘mya’ dropped from role ‘testrole’.
Server: Msg 229, level 14, State 5, Line 1
SELECT permission denied on object ‘tblsim’, database ‘account’, owner ‘dbo’.
7.Đối tượng CSDL và quyền với đối tượng:
1 CSDL là 1 tập hợp của dữ liệu, bảng và các đối tượng khác. Đối tượng CSDL giúp cho việc cấu trúc dữ liệu và định nghĩa dữ liệu được rõ ràng.
Quyền cho phép người dùng thực hiện các hành động trong CSDL. Có 2 loại quyền : đối tượng và phát biểu. Quyền đối tượng kiểm soát việc ai có thể truy cập và xử lí dữ liệu và ai có thể chạy các thủ tục thường trú. Quyền phát biểu kiểm soát người dùng nào có thể tạo và xóa đối tượng trong 1 CSDL.
7.1.Đối tượng CSDL và chủ đối tượng:
Các đối tượng CSDL:
Bảng
Cột
Dòng
Loại dữ liệu
Ràng buộc
Giá trị mặc định
Quy tắc
Chỉ số
Views
Thủ tục 
Bẫy lỗi
1 người dùng tạo ra 1 đối tượng CSDL thì gọi là chủ đối tượng. 1 người dùng đơn lẻ phải có quyền mới có thể tạo đối tượng CSDL.
7.2.Quyền với đối tượng CSDL:
Quyền đối với đối tượng kiểm soát việc truy cập tới các đối tượng trong SQL Server. Ta có thể thừa nhận hoặc loại bỏ quyền với bảng, cột, các thủ tục thông qua Enterprise Manager hoặc qua các thủ tục hệ thống. 1 người dùng muốn thực hiện 1 hành động đối với 1 đối tượng cần có quyền thích hợp.Bảng sau tổng kết các loại quyền với đối tượng.
Loại đối tượng
Hành động có thể
Bảng ( table)
Select,update,delete,insert,reference
Cột (column)
Select,update
View
Select,update,insert,delete
Thủ tục (stored procedure)
Execute
7.3.Thừa nhận và loại bỏ quyền với 1 đối tượng:
SQL Server sử dụng các lệnh GRANT, REVOKE, DENY để quản lí các quyền.
Grant: cho phép người dùng làm việc với đối tượng.
Revoke: ngăn người dùng làm việc với bảng.
Deny: không cấp quyền cho người dùng. 
Sử dụng thủ tục hệ thống cấp quyền 
Khi sử dụng thủ tục GRANT để cấp quyền truy cập và xử lí trên các đối tượng của CSDL chỉ định theo cú pháp sau:
	GRANT
	ALL [PRIVILEGES] | [,…N]
	ON
	 [([,…n])]
	| 
	TO
	 [,…n]
	 [WITH GRANT OPTION]
	 [AS ]
Từ khóa ALL cho phép cấp phát tất cả các quyền cho người sử dụng CSDL đó.
Chỉ rõ những bảng hay View nào cho phép người sử dụng truy cập và xử lí, hoặc thủ tục hay thủ tục mở rộng.
Ví dụ: Cấp phát quyền bằng thủ tục GRANT
Use account
Go
/* Cấp quyền insert, update, delete cho người sử dụng mya trên bảng dữ liệu tblsim */
Grant insert,update,delete
On tblsim
To mya
Go
Kết quả trả về như sau:
The command(s) completed successfully.
Sau khi thực hiện thủ tục cấp phát quyền sử dụng, sử dụng phát biểu Select để truy vấn dữ liệu từ bảng tblsim, kết quả cho thấy với người sử dụng có tên mya không thể truy vấn dữ liệu từ bảng tblsim như ví dụ sau.
Ví dụ:
Use account
Go
Select
	Autoid
	Cast(entrydate as varchar(11)) as entrydate,
	invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate
from tblsim
order by invoiceDate desc
Kết quả trả về như sau:
Server: Msg 229, Level 14, State 5, Line 1
SELECT permission denied on object ‘tblsim’, database ‘account’, owner ‘dbo’
Thực hiệnthủ tục cấp phát quyền sử dụng Select trên bảng tblsim cho người sử dụng tên mya.
Ví dụ:
Use account
Go
Grant select
On tblsim
To mya
Go
Kết quả trả về như sau:
The command(s) completed successfully.
Sau khi cấp phát quyền Select, sử dụng phát biểu Select để truy vấn dữ liệu từ bảng tblsim.
Ví dụ:
Use account
Go
Select
	Autoid
	Cast(entrydate as varchar(11)) as entrydate,
	invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate
from tblsim
order by invoiceDate desc
Kết quả trả về như sau:
Autoid	EntryDate	InvoiceNo	InvoiceDate
-----------------------------------------------------------------------------
11	dec 5 2001	inv0011	dec 10 2001
10	oct 18 2001	inv00010	dec 9 2001
9	oct 17 2001	inv009	dec 8 2001
2	oct 17 2001	inv002	dec 7 2001
3	oct 17 2001	inv003	dec 7 2001 
4	oct 18 2001	inv004	dec 7 2001
5	oct 17 2001	inv005	dec 7 2001
6	oct 17 2001	inv006	dec 7 2001
7	oct 18 2001	inv007	dec 7 2001 
8	oct 18 2001	inv008	dec 7 2001
1	oct 17 2001	inv001	dec 6 2001 
 (11 row(s) affected)
Từ chối quyền truy vấn và xử lí dữ liệu
Nếu cần thiết không cho phép người sử dụng truy vấn và xử lí dữ liệu trên đối tượng, sử dụng thủ tục Deny có cú pháp như sau:
	DENY
	ALL [PRIVILEGES] | [,…N]
	ON
	 [,…n] ) ]
	 | 
 TO
 [,…n]
	[CASCADE]
Từ khoá ALL cho phép cấp phát tất cả các quyền cho người sử dụng cơ sở dữ liệu đó (EXECUTE không có hiệu lực trên bảng).
Chỉ rõ những bảng dữ liệu hay View nào cho phép người sử dụng truy cập và xử lý, hoặc thủ tục hay thủ tục mở rộng. Từ khóa [CASCADE] tương đương với [WITH GRANT OPTION].
Ví dụ không cho phép người sử dụng mya sử dụng phát biểu SELECT để truy vấn từ bảng tblSIM như sau:
/* Sử dụng USE */
USE ACCOUNT
GO
GRANT INSERT, UPDATE, DELETE
ON tblSIM
TO myaa
GO
/* Không cho phép */
DENY SELECT
ON tblsim
To myaa
Go
/* Sử dụng phát biểu Select */
Select
	Autoid
	Cast(entrydate as varchar(11)) as entrydate,
	invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate
from tblsim
order by invoiceDate desc
Kết quả trả về như sau:
Server: Msg 229, Level 14, State 5, Line 1
SELECT permission denied on object ‘tblsim’, database ‘account’, owner ‘dbo’
Giả sử rằng người sử dụng có tên tài khoản sử dụng trong CSDL chỉ định myaa không được phép truy cập bằng phát biểu select,insert,update,delete trên các đối tượng của CSDL account, ta sử dụng thủ tục Revoke có cú pháp như sau:
	REVOKE [GRANT OPTION FOR]
	{ALL [PRIVILEGES] | permission[,…n]}	{
[(column[,…n])] ON {table | view}	| ON {table | view} [(column[,…n])]
| {stored_procedure | extended_procedure} }{TO | FROM [,…n] [CASCADE] [AS]
Ví dụ:
Use account
Go
Revoke select on tblsim to myaa
Kết quả trả về như sau:
The command(s) completed successfully.
Sử dụng EM cấp quyền truy vấn và xử lí dữ liệu
Rất dễ dàng để sử dụng EM thực hiện công việc này, bắt đầu từ tên CSDL, chọn tên tài khoản người sử dụng (user), sau đó R-Click / Properties.
Để thực hiện quá trình cấp quyền truy vấn và xử lí dữ liệu, ta có thể thực hiện theo 2 cách:
Phân quyền cho 1 người sử dụng những đối tượng trong CSDL. Để thực hiện theo cách này, ta cần chọn một đối tượng, sau đó phân quyền tất cả đối tượng.
Phân nhiều người sử dụng vào 1 đối tượng chỉ định của CSDL. Để thực hiện theo 
cách này, ta cần chọn một đối tượng, sau đó phân quyền tất cả các tên người sử dụng.
Trường hợp thứ nhất cần theo các bước sau:
8. Một số bảo mật khác
Phần này sẽ trình bày về 1 số bảo mật đặc biệt có lien quan đến mạng và Internet.
8.1. Tài khoản Guest (Guest Account)
Guest Account là tài khoản người dùng mặc nhiên, khi ta cho phép tài khoản này có hiệu lực, có 1 số vấn đề phát sinh như sau:
Login với tài khỏan guest thì có thể truy cập bất kì dữ liệu của CSDL.
Những người dùng bên ngoài có thể sử dụng tài lhoản này để truy cập vào CSDL nếu họ biết mật khẩu của guest.
8.2. Cấu hình cổng TCP/IP
SQL Server sử dụng nghi thức truyền dữ liệu TCP/IP và cổng 1433, tất nhiên khi cài đặt SQL Server thì giá trị mặc nhiên cho 2 thông số này được trình Setup thiết lập hoặc có thể thay đổi từ trình Client Network Utilities.
Với tham số cổng 1433 mặc nhiên này, tất cả các máy trạm có thể truy cập vào CSDL SQL Server rất tiện lợi trừ khi ta thay đổi tham số cổng đó bằng 1 tham số khác.
Nhưng trong trường hợp này nếu Hacker biết ta đang cài đặt và sử dụng CSDL SQL Server với TCP/IP với cổng mặc nhiên 1433 thì họ có thể tấn công 1 cách dễ dàng. Để tránh điều này, ta cần thay đổi cổng này thành 1 cổng khác hợp lệ bên cạnh đó cần thay đổi cổng của các máy trạm truy cập vào CSDL SQL Server với cổng tương ứng.
Ví dụ như SQL Server cấu hình với cổng 1402 thay vì 1433, và các máy trạm cần phải cấu hình cổng truy cập vào SQL Server với cổng 1402 .
8.3. Không nên sử dụng tài khoản sa
Sa là tài khoản cao nhất của SQL Server, chính vì thế mà người quản trị không thể sử dụng nó 1 cách tùy tiện, thay vì sử dụng sa, người quản trị tạo ra 1 tài khoản tương tự và 1 role tương tự để sử dụng thay thế, khi nào cần thiết ới sử dụng sa.
Mặt khác tránh trường hợp người khác vô tình hay cố ý biết được mật khẩu của sa thì vấn đề có thể nghiêm trọng, cũng tương tự như vậy, trong trường hợp viết các ứng dụng truy cập đến SQL Server, ta cũng không nên sử dụng sa, thay vào đó là 1 tài khoản sử dụng cho ứng dụng đó mà thôi. 

File đính kèm:

  • docxTiểu luận Bảo mật trong SQL Server.docx
Tài liệu liên quan