9/10/2019 Chương 6 Bảo mật và An toàn dữ liệu Nội dung 1 Quản trị quyền người dùng 2 Sao lưu dữ liệu 3 Khôi phục dữ liệu www.com 1 9/10/2019 Giới thiệu Windows Xác SQL Server Insert thực Xác thực Delete update DataBase …. Người dùng Thao tác CSDL www.com Cơ chế quản trị người dùng Cung cấp và quản lý các tài khoản truy cập (login) mà người sử dụng dùng để kết nối với SQL Server Phân quyền: người dùng chỉ được phép thực hiện những thao tác mà họ được “cấp phép” www.com 2 9/10/2019 Khái niệm xác thực Authenticate: xác nhận xem một tài khoản truy cập (login) có hợp lệ không (có được phép đăng nhập vào windows hoặc SQL server hay không) www.com Các cấp độ bảo mật Windows Level SQL Server Level Database Level www.com 3 9/10/2019 Giới thiệu Windows SQL Server Insert Delete update DataBase …. Người dùng Thao tác CSDL www.com Giới thiệu Windows SQL Server Insert Delete update DataBase …. Người dùng Thao tác CSDL www.com 4 9/10/2019 Giới thiệu Windows Người dùng SQL Server Insert Delete Login update DataBase ….
Windows login Login SQL login www.com Các kiểu xác thực của SQL Windows Authentication Mode Mixed Mode (Windows Authentication + SQL Server Standard) www.com 5 9/10/2019 Chọn mode vào SQL Server Lựa chọn: Chỉ dùng Windows Authentication Mixed mode (sử dụng cả hai chế độ chứng thực) Thực hiện cấu hình này lúc: Cài đặt Thay đổi sau khi đã cài đặt: dùng Enterprise Manager: Click phải lên tên Server trong cửa sổ duyệt bên trái Chọn properties www.com Cấu hình mode vào SQL Right click vào server chọn properties www.com 6 9/10/2019 Chọn Security www.com Windows Authentication Cho phép cho các người dùng của Windows được đăng nhập vào SQL Server. Tài khoản người dùng do windows quản lí. Khi người dùng kết nối đến SQL Server sử dụng chế độ Window Authentication, SQL Server chỉ xét xem người dùng này của Windows đã được cấp phép vào SQL Server hay chưa. Admin của hệ điều hành mà SQL Server đang chạy trên đó luôn được phép vào SQL Server với quyền sysadmin.com 7 9/10/2019 Tạo Win account Danh sách các người dùng hiện có Right click trên thư mục Users www.com Tạo Win account Chọn New User www.com 8 9/10/2019 Tạo Win account Tên người dùng Mật khẩu Mật khẩu xác nhận Bỏ check Chọn Create www.com Tạo Win account Win user vừa tạo www.com 9 9/10/2019 Login vào SQL với quyền của NewUser www.com Không connect vào SQL Server www.com 10 9/10/2019 Cấp quyền vào SQL Right-click thư mục Logins Chọn New Login để add quyền www.com 2 1 Tên người dùng Tìm người dùng www.com 11 9/10/2019 1 Tên đối tượng 2 Tìm đối tượng login www.com Tìm đối tượng login www.com 12 9/10/2019 Chọn đối tượng cần add www.com Tên đối tượng được chọn www.com 13 9/10/2019 NewUser đã được cấp quyền vào SQL Server www.com Đã login vào được SQL Server www.com 14 9/10/2019 Không vào được CSDL www.com SQL Server authentication SQL Server tự quản lý tên tài khoản (login name) và mật khẩu (password) SQL Server thực hiện việc kiểm tra tài khoản (kiểm tra login name, so khớp password) khi người dùng đăng nhập (mở kết nối) vào SQL Server.com 15 9/10/2019 Login-User-Role A Tài khoản Người dùng (user) B Tài khoản Người dùng C Tài khoản chứng thực Data (Login) Base D Tài khoản www.com Người dùng Login-User-Role Database Vai trò (Role) Data Base Tài khoản Người dùng (User) www.com 16 9/10/2019 Login-User-Role •Create user •Sp_grantdbaccess •Sp_revokedbaccess Vai trò •Sp_addrole hệ thống •Sp_droprole •Sp_addsrvrolemember Role Tài khoản Data An ninh Base •Sp_addrolemember User Vai trò người dùng định nghĩa www.com Login Tài khoản mà người sử dụng dùng để kết nối với SQL Server Một login có thể có quyền truy cập vào 0-n database Trong mỗi database, login ứng với một user www.com 17 9/10/2019 SA Login Viết tắt của system administrator, là tài khoản do SQL Server cấp phát lúc cài đặt.
SA login được phép thao tác trên tất cả các đối tượng của SQL server.com Một số thủ tục trên Login Sp_addlogin Thêm login mới Sp_grantlogin Cấp quyền truy cập cho win login Sp_droplogin Xóa login Hủy quyền truy cập đã cấp của win Sp_revokelogin login Sp_password Thay đổi password của login www.com 18 9/10/2019 Login Login được cấp và quản lý bởi quản trị hệ thống hoặc quản trị an ninh của SQL Server (sysadmin/ securityadmin) Lệnh tạo login (SQL Server authentication) sp_addlogin [ @loginame = ] ‘login_name’ [ , [ @passwd = ] 'password' ] [ , [ @defdb = ]‘default_database’ ] Ví dụ : exec sp_addlogin ‘Nam’, ’hehe’,’QLSV’ www.com Login Đổi password login Cú pháp: sp_password [[@old =] ‘old_pass’,] {[@new=] ‘new_pass} [,[@loginame=] ‘login’] Ví dụ: exec sp_password null,’123’ ,‘login_name’ www.com 19 9/10/2019 Login Lệnh cấp quyền truy cập (grant login) Cấp phép một hoặc một nhóm người dùng của Windows (Windows user/ group) được kết nối đến SQL Server. Cú pháp: sp_grantlogin [@loginame =] ‘windows_account’ (windows_account có dạng Domain\User) Ví dụ: exec sp_grantlogin ‘Server01\user01’ www.com Login Hủy quyền của login Lấy lại quyền truy cập đã cấp cho một người dùng/ nhóm người dùng của Windows bằng thủ tục sp_grantlogin Cú pháp: sp_revokelogin [@loginame=] ‘login’] Ví dụ: exec sp_revokelogin ‘login_name’ www.com 20 9/10/2019 Login Xóa login Cú pháp: sp_droplogin [@loginame =] ‘login_name Ví dụ: exec sp_droplogin ‘login_name’ www.com Login Đổi database mặc định của login Áp dụng cho login đã được ánh xạ vào một user trong CSDL đã khai báo mặc định. Cú pháp: sp_defaultdb [@loginame =] ‘login_name’, [@defdb=] ‘database_name’ Ví dụ: exec sp_defaultdb ‘login_name’, ‘QLSV’ www.com 21 9/10/2019 User Một “người dùng” trong một database cụ thể Một user ứng với một login db QLSV – user QuanTriVien1 Login: NewUser db QLTuyenSinh – user Dev1 www.com Database User Dbo user Là owner của tất cả các đối tượng trong CSDL. SA login và Win login có server role là sysadmin sẽ được ánh xạ vào dbo.
Guest user Là user được định nghĩa trong CSDL. Một login được ánh xạ là guest khi thỏa điều kiện sau: Login connect vào SQL server được nhưng không truy cập vào CSDL được. CSDL này đã có user guest.com 22 9/10/2019 User Tạo user = cấp cho một login quyền truy cập vào database hiện hành Cú pháp: sp_grantdbaccess [@loginame =]‘login_name’ [,[@name_in_db =] ‘user_name’] Thủ tục sp_grantdbaccess chỉ có thể được thực hiện bởi thành viên của vai trò sysadmin, db_owner và db_accessadmin Thủ tục sp_grantdbaccess có thể bị bỏ đi trong tương lai www.com User Ví dụ Exec sp_grantdbaccess ‘Nam’, ‘dev01’ Exec sp_grantdbaccess ‘Server01\user01’, ‘dev02’ www.com 23 9/10/2019 User Lệnh tạo user khác (được khuyến khích dùng thay cho sp_grantdbaccess) Cú pháp : CREATE USER user_name [ { FOR | FROM } { LOGIN login_name}] Ví dụ : Create User dev01 For Login Nam www.com User Xóa user khỏi database hiện hành Cú pháp: sp_revokedbaccess ‘user_name’ Ví dụ: Exec sp_revokedbaccess ‘dev02’ www.com 24 9/10/2019 User Sau khi tạo user, user có quyền truy cập vào database, nhưng chưa được thao tác gì (đọc, cập nhật, …) trên các đối tượng trong database. Cần gán những quyền cụ thể cho từng user của database Nếu nhiều user được cấp một số quyền giống nhau: Tạo role, gán các quyền cho role, user cần các quyền này sẽ là thành viên của role www.com Role Role = Nhóm các user cùng quyền Mặc định, các user thành viên của role sẽ được hưởng tất cả những quyền đã cấp cho role.
Tuy nhiên, các thành viên này cũng có thể được cấp thêm các quyền riêng, hoặc bị cấm một số quyền thừa hưởng từ role.com 25 9/10/2019 Fixed Server Roles www.com Fixed Database Roles www.com 26 9/10/2019 Role Tạo các role mới cho database hiện hành Cú pháp sp_addrole [ @rolename = ] 'role' [ , [ @ownername = ] 'owner' ] (thủ tục sp_addrole chỉ có thể thực hiện bởi thành viên của sysadmin, db_owner, db_securityadmin) www.com Role Ví dụ: Exec sp_addrole ‘Developer’ Exec sp_addrole ‘Developer’, ‘dbo’ Ghi chú: Khi một login là thành viên của role quản trị hệ thống (sysadmin) vào SQL Server, login này có quyền truy cập vào tất cả các database và có tên user tương ứng trong từng database là “dbo” Xoá một role đã tạo: sp_droprole ‘role’ www.com 27 9/10/2019 Role Thêm một login vào các vai trò hệ thống có sẵn (fixed server roles): Cú pháp: sp_addsrvrolemember [ @loginame = ] 'login' ,[ @rolename = ] 'role’ Ví dụ: Exec sp_addsrvrolemember ‘newuser’, ‘sysadmin’ Ghi chú: Khi mới cài đặt, SQL Server định nghĩa sẵn login sa, sa và các login là administrator của Windows (Windows Authentication) đều là thành viên của sysadmin.com Role Thêm một user vào role: Cú pháp: sp_addrolemember [ @rolename = ] ‘role' ,[ @membername = ] ‘name’ Ví dụ: Exec sp_addrolemember ‘GV’, ‘gv1’ www.com 28 9/10/2019 Quyền người dùng •Bảng DL •Thuộc tính •Bộ •Ràng buộc •Khóa chính •Khóa ngoại Role •Check •Unique •Default… •Thủ tục TT User •Hàm người dùng •… www.com Cấp quyền (Grant) •Grant Quyền Quyền •Grant Quyền •Grant www.com 29 9/10/2019 Cấm quyền (deny) •Deny Quyền Quyền •Deny Quyền •Deny www.com Khôi phục quyền (revoke) •Revoke Quyền Quyền •Revoke Quyền •Revoke www.com 30 9/10/2019 Hủy quyền (Revoke) •Revoke •Revoke Quyền Quyền Quyền •Revoke www.com Quyền người dùng •Grant Quyền thực hiện lệnh •Revoke •Deny Quyền thao tác Đối tượng www.com 31 9/10/2019 Cấp quyền (Grant) Sử dụng lệnh “Grant…” để cấp quyền cho user / role Có hai dạng: Cấp quyền thực hiện lệnh (create database, create procedure, create table,…) Cấp quyền thao tác trên các đối tượng trong CSDL (đọc/ ghi trên table/view, thực thi thủ tục,…) www.com Cấp quyền (Grant) Cấp quyền thực hiện lệnh : Cú pháp: GRANT { ALL | statement [ ,.n ] } TO security_account [ ,.n ] Trong đó: Statement = create database| create table| create view| create rule| create procedure| backup database|… Security_account = user| role Ví dụ: GRANT create table, create procedure to dev01 www.com 32 9/10/2019 Cấp quyền (Grant) Cấp quyền thao tác trên đối tượng : Cú pháp GRANT { ALL | permission [ ,.n ] } { | ON { table | view } [ ( column [ ,.n ] ) ] | ON { stored_procedure} | ON { user_defined_function } } TO security_account [ ,.com Cấp quyền (Grant) Permission = select| insert| delete| Cấp quyền thao tác trênreferences|update| đối tượng : execute Cú pháp GRANT { ALL | permission [ ,.n ] } { | ON { table | view } [ ( column [ ,.n ] ) | ON { stored_procedure} | ON { user_defined_functionWITH } GRANT OPTION : cho } phép user được cấp các quyền TO security_account [ ,.n ] thao tác này cho user/ role khác. [ WITH GRANT OPTION ] [ AS role ] As role: lệnh cấp quyền được thực hiện www.com với tư cách là thành viên của “role” 33 9/10/2019 Cấp quyền (Grant) Ví dụ 1: Grant select, update on SinhVien (HoTen, DiaChi, NgaySinh) to Developer Thành viên của Nhưng Developer có quyền không được select, update trên cấp quyền các cột HoTen, này cho user DiaChi và NgaySinh khác của bảng SinhVien www.