Nhưng với số liệu thống kê năm 2010 , Oracle chiếm đến 76,8% thị phần CSDL trên toàn thế giới và theo báo cáo tài chính quí 3 của hãng thì Oracle tăng 35% doanh thu so với cùng kỳ năm tr
Trang 1Lời nói đầu.
Khi nói đến nghề quản trị trong lĩnh vực Công nghệ thông tin tại Việt Nam, chúng ta thường liên tưởng đến nghề quản trị Mạng, chỉ khoảng gần năm năm trở lại đây thì tại Việt Nam mới hình thành lên một nghề mới, đó là nghề quản trị hệ thống Cơ sở dữ liệu (CSDL), thường gọi là DBA (Database Administrator) Hiện có ba hệ quản trị CSDL được biết đến trên thế giới và tại Việt Nam, đó là: Oracle, Microsoft SQL-Server và IBM-DB2 Nhưng với số liệu thống kê năm 2010 , Oracle chiếm đến 76,8% thị phần CSDL trên toàn thế giới và theo báo cáo tài chính quí 3 của hãng thì Oracle tăng 35% doanh thu so với cùng kỳ năm trước, từ các thông tin này chúng ta có thể đánh giá bước đầu Oracle là Cơ sở dữ liệu được các doanh nghiệp ứng dụng nhiều nhất trên thế giới.
Đặc điểm sử dụng các Cơ sở dữ liệu tại Việt Nam:
Oracle thường được các doanh nghiệp đang phát triển và doanh nghiệp lớn sử dụng, do đó những ai làm việc với công nghệ Oracle thường có mức thu nhập tốt.
• Microsoft SQL-Server thì được các doanh nghiệp vừa và nhỏ (Small and Medium Bussiness - SMB) thích dùng, vì tính đơn giản và dễ sử dụng của CSDL này Mức thu nhập khi làm việc với SQL-Server vì thế cũng có phần không cao như Oracle
• IBM DB2 thì hơi đặc biệt, chỉ một số ít doanh nghiệp lớn tại Việt Nam sử dụng, người quản trị hệ thống này thường được ưu đãi tốt nhưng số lượng không nhiều
Đối với một số
doanh nghiệp, hiệu
quả kinh doanh phụ
thuộc hoàn toàn vào
giá trị thông tin thì
Trang 2đảm bảo không tăng tải và làm chậm hệ thống hiện tại Trong một số lĩnh vực kinh doanh nhạy cảm, tính
bí mật của thông cần được bảo đảm tuyệt đối Thông tin cần đạt tính bí mật và nguyên vẹn ngay khi được lưu trên đĩa cứng, và khi thông tin được trao đổi vào ra trong mạng cũng phải được đảm bảo an toàn
Điều đó cho thấy tầm quan trọng của việc bảo vệ dữ liệu trong một hệ quản trị CSDL Dựa trên những lí
do đó, chúng em quyết định chọn đề tài An ninh trong hệ quản trị CSDL Oracle – hệ quản trị CSDL mạnh nhất cho tới nay để tìm hiểu Trong đây sẽ đề cập tới những đặc trưng tính bảo mật CSDL và quan trọng hơn là các chức năng an ninh trong hệ quản trị CSDL Oracle
Trong quá trình tìm hiểu sẽ không tránh khỏi thiếu sót, mong Thầy và các bạn quan tâm theo dõi và đóng góp ý kiến, chúng em xin chân thành tiếp thu và sửa đổi Chúng em có lời cảm ơn chân thành tới Thầy Phạm Trung Thành đã động viên, chỉ ra hướng tìm hiểu cho tất cả các sinh viên trong đó có nhóm
em cùng tất cả các ý kiến đóng góp của các bạn!
Nhóm sinh viên: Lê Thị Nhung
Nguyễn Thị Luận
Mục lục
Lời nói đầu 1
I.Tổng quan về Oracle 3
1 Giới thiệu: 3
2.1 Cấu trúc của Oracle 4
3.Những đặc trưng của hệ quản trị CSDL Oracle 10
3.1.Truy xuất dữ liệu 10
Trang 33.2.Tính đồng hành 10
3.3.Tính an toàn 10
3.4.Backup và Restore dữ liệu 11
3.5.CSDL phân tán 11
II.Bảo mật CSDL 11
1.Các cơ chế bảo mật: 14
1.1.User CSDL và Schema 14
1.2 Privilege ( Đặc quyền ) 16
1.3.Role (Vai trò ) 16
1.4.Các xác lập lưu trữ và quota 17
1.5.Các Profile (lược sử) và giới hạn tài nguyên 17
2.Trusted Oracle 18
III.Bảo mật của ứng dụng 19
1.Tổng quan 19
2.Sử dụng đối tượng CSDL của ứng dụng .19
3.Bảo mật ứng dụng điều khiển bằng bảng 20
IV.Tài liệu tham khảo 21
I.Tổng quan về Oracle.
1 Giới thiệu:
Cơ sở dữ liệu oracle là một cơ sở dữ liệu mạnh mẽ nhất thế giới Được thiết kế để triển khai cho mọi môi trường doanh nghiệp Việc cài đặt, quản lý rất dễ dàng, các công cụ để phát triển các ứng dụng một cách hoàn thiện và nhanh chóng Cơ sở dữ liệu oracle phù hợp cho mọi loại
dữ liệu, các ứng dụng và các môi trường khác nhau bao gồm cả windows và linux với chi phí tối thiểu
2.Đặc điểm của hệ quản trị CSDL Oracle
• Oracle hỗ trợ việc quản lí dữ liệu có dung lượng hàng trăm Gb
• Hỗ trợ mạnh cho các tính năng nhiều user truy xuất cùng đơn vị dữ liệu trong cùng thời gian.
• Có thể làm việc 24/24.
• Tuân thủ các chuẩn công nghiệp trên các yếu tố: Hệ điều hành, Mạng,
Trang 4Ngôn ngữ truy xuất.
• Cung cấp cơ chế an toàn và bảo mật tốt.
• Đảm bảo tạo các ràng buộc toàn vẹn đơn giản và phức tạp trên CSDL
• Hỗ trợ nhiều thuận lợi cho mô hình Cilent/ Server.
• Cho phép nhiều chủng loại máy, hệ điều hành khác nhau chia sẻ trên dữ liệu mạng
• Dùng để phát triển ứng dụng và có thể sử dụng trên bất kì hệ thống nào.
Có thể nói đây là CSDL mạnh nhất trên thế giới.
2.1 Cấu trúc của Oracle
Ðể thiết kế và quản lý CSDL của ORACLE được tốt chúng ta cần phải hiểu được kiến trúc cơ bản của ORACLE
lại (Redo log files)
- File dữ liệu (data
- File đăng nhập lại (reedo log files) dùng cho các xử lý đăng nhập lại Nó ghi lại tất cả những thay đổi
Trang 5được tạo cho CSDL và chứa các thông tin cho việc khôi phục.
- Các file điều khiển (control files ): ghi lại cấu trúc vật lý của CSDL
- File biến (parameter ): chứa các tham số cho việc thiết lạp môi trường làm việc, xác định các đặc tính của các thể hiện, thường được định danh là Init.Ora
*Mỗi khi ORACLE bắt đầu SGA được định vị và các tiến trình nền được bắt đầu Sự kết hợp của một vùng nhớ đệm và một tiến trình nền được gọi là một thể hiện (Instance) của ORACLE
- Các tiến trình nền tương ứng với các công việc khác nhau phục vụ cho tất cả mọi người dùng CSDL
Vd: Tiến trình DBWR được dùng để ghi lại đĩa những dữ liệu từ vùng nhớ đệm CSDL (Database buffer cache)
- Các tiến trình phục vụ (server processes): khi một user chạy một ứng dụng tương ứng hoặc một hỏi đáp dữ liệu thì các tiến trình của người dùng được đưa ra ORACLE sẽ đưa ra một tiến trình phục vụ để trao đổi yêu cầu với các tiến trình của người sử dụng
Các tiến trình phục vụ sau khi thi hành các yêu cầu của người sử dụngvà đưa trở lại kết quả cho user.+ Các thông báo của SQL sẽ được thi hành bởi các server process, các tiến trình phục vụ sẽ đọc khối dữ liệu từ đĩa vào vùng nhớ dữ liệu được dùng chung của SGA (vùng Shared pool) Sau đó đưa ra kết quả từ các thông báo SQL Các tiến trình phục vụ có ba giai đoạn:+ Giai đoạn phân tích: kiểm tra cú pháp, kiểm tra quyền truy nhập,đường dẫn tìm kiếm có hiệu quả nhất rồi xác định cây phân tích Cây phân tích sẽ được cất giữ trong vùng Shared SQL Area (Thuộc một phần
vùng này chứa các thông tin cho việc thi hành các thông báo SQL
+ Giai đoạn thi hành các thông báo: gắn cây phân tích tới vùng đệm dữ liệu
Trang 6+ Shared spool: (như đã nói ở phần server processes)ngoài ra:kích cỡ của shared pool có thể được xác định bởi biến Shared -pool-size.+ Database buffer cache (vùng nhớ đệm cơ sở dữ liệu):Trứơc khi dl có thể được truy nhập một tiến trình phục vụ sẽ đặt dữ liệu vào trong vùng đệm Database buffer cache, vùng đệm này sẽ được cát giữ những bản sao dữ liệu đọc từ đĩa bởi một tiến trình phục vụ
Số block trong vùng này được xác định bởi biến DB_Block_buffer (kích thước của block được xác định
Vùng này chứa các thông tin về những thay đổi tới CSDL ORACLE sẽ ghi lại những thay đổi tới CSDL trong vùng này tới các Redo log file Kích cỡ của vùng này được xác định bởi biến Log-buffer
- DBWR: các khối dữ liệu đã được sửa đổi trong vùng Database buffer cache được viết trở lại đĩa bởi 1 tiến trình nền DBWR Tiến trình này quản lý vùng Database buffer.Cho nên các tiến trình của user luôn
- Logwriter ( LGWR): ghi lại tất cả những thay đổi tới CSDL trong vùng Redo log buffer tới đĩa bởi một
Trang 7tiến trình nền có tên LGWR, một tiến trình nền khác là ARCH(Achiver) có thể được bắt đầu để lưu giữ các thông tin đăng nhập lại trên 1 thiết bị cất giữ đã định trước (tape, disk) dùng cho việc khôi phục bị
+ vùng redo log buffer vượt quá 1/3 kích cỡ cho phép của vùng+ DBWR cần để xoá sạch các khối đệm cho 1 điểm kiểm tra hoặc quá thời gian xuất hiện
- Process Monitor (PMON): thi hành những tiến trình khôi phục khi 1 tiến trình của user bị thất bại
- System monitor (SMON): tự động thi hành việc khôi phục instance
- Recover process (RECO): giải quyết những thất bại liên quan tới 1 tiến trình được phân bố
- Checkpoint (CKPT): thay LGWR viết các thông tin dữ liệu từ vùng log buffer tới các header của các file dl
- LCKn (Lock process): Xử lý tình trạng bế tắc giữa các instance trong hệ tiến trình song song Quản lý việc
- Oracle định vị không gian cho dữ liệu trong CSDL theo: đơn vị nhỏ nhất là các block tiếp đến là extent,
ORACLE phải được xác
định trước khi tạo
Trang 8+ Header: chứa những thông tin chung trong khối như địa chỉ khối, kiểu segmenta+ Table directory: bao gồm các thông tin về các bảng trong cluster và được sử dụng với các segment hợp lại
+ Row data: cất giữ dữ liệu của các table hoặc index+Row directory: bao gồm các thông tin về các hàng thực sự trong khối+Free space: bao gồm tập các byte trong khối mà còn có sẵn cho việc update, insert, delete, việc điều khiển free space cho việc update, insert, delete trong CSDL bằng cách thay đổi giá trị của các biến:
PCTfree, PCTused, Initrsns, Matrans.+Biến PCTfree: xác định tỷ lệ % của khối để sử dụng việc update các hàng đã tồn tại trong khối Vd: CT free=20 tức là 20% của khối dùng cho việc update khi tỷ lệ của khối còn rỗi >% của PCTfree thì
+Pctused: cho phép 1 khối được xem xét lại cho việc chèn các hàng mới,các hàng mới sẽ được chèn khi
tỷ lệ % của khối đang được sử dụng nhỏ hơn giá trị Pctused, giá trị ngầm định = 40 Vd: Pctused =40 thì sau khi không gian đã được sử dụng <40% thì hàng mới có thể được insert vào
- Ðể xác định các transaction đang hoạt động trên 1 khối bởi việc sử dụng 2 biến:+INITRANS: là số các transaction đưa vào lúc bắt đầu có thể xẩy ra đồng thời được định vị trong header
+Maxtrans: là số lớn nhất các tiến trình đồng thời của khối được cung cấp (mặc định là 255, min=1, max=255)
*EXTENT: Là 1 tập các khối kề cận được định vị tới 1 segment Khi 1 đối tượng của CSDL được hình thành thì không gian được định vị cho nó (các đối tượng có thể là: table, cluster, index, roll back segment,
Mỗi segment cần có ít nhất là 1 extent, riêng đoạn khôi phục cần có ít nhất là 2 extent
- Các extent đầu tiên gọi là Initial extent Các extent tiếp theo gọi là incrmental extent.+ Một đối tượng sẽ được cấp 1 extent mới nếu tất cả các extent đã định vị hiện tại của nó đã được sử dụng
+ Các extent có thể được định vị cho đối tượng khác khi segment dùng nó bị huỷ bỏ hoặc nó thuộc phần
- Ðiều chỉnh extent tới các segment bởi các biến cất giữ sau:+ Initialác định kích cỡ của extent đầu tiên được định vị cho segment ngầm định là 5 data block.+ Nextác: định kích cỡ của các extent tiếp theo ngầm định là 5 blocks+ Maxextents: tổng số lớn nhất các extent cấp cho segment ngầm định là 99+ Minextents: tổng số extent được cấp cho segment khi segment được tạo ngầm định là 1.+ PCTỉncease: tỷ lệ % mà mỗi extent tiếp theo được phát triển có thể vượt quá extent cuối cùng ngầm
Trang 9+ Đoạn dữ liệu (data segment): tập tất cả cá extent mà chúng cất giữ tất cả dữ liệu cho một bảng hoặc 1 cluster
+ Index segment: chứa tất cả các dữ liệu chỉ số cho việc tìm kiếm được nhanhchóng.+ Temporary Segment: tập các exyent cất giữ các giữ liệu thuộc vào các bảng tạm thời được tạo trong
MỘT SỐ LỆNH SQL để hiển thị thông tin về việc cất giữ:
- Liệt kê tất cả các cột trong tablespace của người dùng (ser_tablespace) :Code:
SQL> Desc dba_tablespaces;
Code:
SQL> Select * from Dba_tablespaces;
-Hiện các Extent của không gian rỗi trong mỗi tablespace:Code:
SQL> Select * from Dba_free_space;
- Hiện các thông tin chung về các file dữ liệu thuộc về mỗi tablespace:
Code:
SQL>Select file_name, tablespace_name, bytes from Dba_data_files;
- Hiện những thông tin chung về tất cả các segment trong CSDL:Code:
SQL> Select owner,segment_name,extents,max_extents
from Dba_segments;
Trang 103.Những đặc trưng của hệ quản trị CSDL Oracle.
3.1.Truy xuất dữ liệu
• SQL (SEQUEL – Structured English Query Language) là ngôn ngữ truy xuất dữ liệu cho hệ quản trị CSDL quan hệ, SQL trong Oracle tương thích với SQL theo dạng chuẩn ANSI (American National Standards Intistute)
• SQL chia làm 4 lớp:
- Ngôn ngữ định nghĩa dữ liệu (DDL – Data Difinition Language) + Mức quan niệm: CREATE DATABASE, TABLE…….
+ Mức ngoài: CREATE VIEW, GRANT……
+ Mức trong: CREATE INDEX,…
- Ngôn ngữ thao tác dữ liệu (DML– Data Manipulation Language) + Truy xuất: SELECT
+ Cập nhật: INSERT, UPDATE, DELETE.
- Ngôn ngữ điều khiển dữ liệu ( DCL- Data Control Language)
- Ngôn ngữ điều khiển hệ thống (SYCL- System Control Language)
• PL/ SQL (Procedure Language / SEQUEL) là ngôn ngữ mở rộng của SQL kết hợp với ngôn ngữ lập trình có cấu trúc
• Tính nhất quán:
+ Đảm bảo dữ liệu nhất quán trong thời gian đọc.
+ Đảm bảo người đọc không chờ người viết và ngươc lại.
+ Đảm bảo người viết phải chờ người viết khác nếu cùng cập nhật một CSDL
3.3.Tính an toàn
Đảm bảo tính an toàn dữ liệu nhờ các kiểm soát:
• Quyền truy cập vào CSDL
• Quyền trên CSDL nào
• Quyền trên đối tượng nào trong CSDL, bao gồm:
Trang 11- Quyền hệ thống: Cho phép tác động đến hệ thống, là quyền rất mạnh.
- Quyền đối tượng: Cho phép tác động lên một đối tượng cụ thể.
3.4.Backup và Restore dữ liệu
• Backup: Trong khi backup CSDL vẫn có thể hoạt động, cơ chế backup cần uyển chuyển.Người ta cần backup với những lí do:
- Xóa nhầm dữ liệu.
- Phát biểu nhầm các câu lệnh: Insert, Update.
- Lỗi đĩa cứng.
- Mất mát do mất cắp.
Một cách khắc phục là tạo file backup gồm 2 dạng:
- Full backup: Toàn bộ file tạo CSDL
- Partial backup: Chỉ backup một phần của dữ liệu
• Restore:
- Là quá trình hồi phục lại CSDL ban đầu từ CSDL được backup
- Thứ tự backup phụ thuộc vào: + Kiểu backup.
+ Thời gian biểu ( schedule)
3.5.CSDL phân tán
3.5.1 Xử lí phân tán
• Dùng nhiều bộ xử lí thiến trình thành các tập công việc có liên quan Phân công công việc cho các bộ xử lí khác cùng hợp tác làm việc Oracle
hỗ trợ công việc xử lí phân tán bằng kiến trúc Client/ Server.
• Client tập trung cho công việc ra yêu cầu trình bày dữ liệu
• Server tiếp nhận các yêu cầu từ Client, xử lí và trả về kết quả cho Client
- Local Database: CSDL mà người dùng kết nối trực tiếp
- CSDl còn lại được gọi là Remove Database
- Client Database: CSDl cục bộ truy xuất từ xa.
II.Bảo mật CSDL
Có rất nhiều mối nguy hiểm tiềm ẩn:
Trang 12Cũng như mối nguy hiểm từ ngoại mạng: