1. 首页 > Oracle教程 > 正文

Oracle教程FG059-数据库安全管理

1. 数据库安全概述

Oracle数据库安全管理是数据库管理的重要组成部分,它涉及到用户管理、角色管理、权限管理、审计管理、密码策略和数据加密等多个方面。有效的安全管理可以保护数据库免受未授权访问和恶意攻击,确保数据的完整性和机密性。更多学习教程www.fgedu.net.cn

安全管理目标:确保只有授权用户能够访问数据库,保护数据的完整性和机密性,防止数据泄露和篡改。

2. 用户管理

用户管理是数据库安全的基础,包括创建用户、修改用户属性、锁定和解锁用户等操作。

— 创建新用户
CREATE USER test_user IDENTIFIED BY “TestPassword123”;User created.

— 修改用户密码
ALTER USER test_user IDENTIFIED BY “NewPassword456”;User altered.

— 锁定用户
ALTER USER test_user ACCOUNT LOCK;User altered.

— 解锁用户
ALTER USER test_user ACCOUNT UNLOCK;User altered.

— 删除用户
DROP USER test_user CASCADE;User dropped.

— 查看用户信息
SELECT username, account_status, created, lock_date
FROM dba_users
WHERE username = ‘TEST_USER’;USERNAME ACCOUNT_STATUS CREATED LOCK_DATE
———- ——————————– ———– ———–
TEST_USER OPEN 26-JAN-26

3. 角色管理

角色是一组权限的集合,使用角色可以更方便地管理用户权限。Oracle提供了许多预定义角色,同时也允许创建自定义角色。

— 创建自定义角色
CREATE ROLE sales_role;Role created.

— 为角色授予权限
GRANT SELECT, INSERT, UPDATE ON employees TO sales_role;GRANT SELECT ON departments TO sales_role;Grant succeeded.
Grant succeeded.

— 将角色授予用户
GRANT sales_role TO test_user;Grant succeeded.

— 查看角色权限
SELECT grantee, table_name, privilege
FROM dba_tab_privs
WHERE grantee = ‘SALES_ROLE’;GRANTEE TABLE_NAME PRIVILEGE
———- —————————— ———-
SALES_ROLE DEPARTMENTS SELECT
SALES_ROLE EMPLOYEES INSERT
SALES_ROLE EMPLOYEES SELECT
SALES_ROLE EMPLOYEES UPDATE

— 查看用户拥有的角色
SELECT grantee, granted_role, admin_option
FROM dba_role_privs
WHERE grantee = ‘TEST_USER’;GRANTEE GRANTED_ROLE ADM
———- —————————— —
TEST_USER SALES_ROLE NO

— 删除角色
DROP ROLE sales_role;Role dropped.

4. 权限管理

权限管理是数据库安全的核心,包括系统权限和对象权限的管理。系统权限允许用户执行特定的系统级操作,对象权限允许用户访问特定的数据库对象。

— 授予系统权限
GRANT CREATE SESSION TO test_user;GRANT CREATE TABLE TO test_user;Grant succeeded.
Grant succeeded.

— 授予对象权限
GRANT SELECT, INSERT, UPDATE, DELETE ON employees TO test_user;Grant succeeded.

— 查看用户的系统权限
SELECT grantee, privilege
FROM dba_sys_privs
WHERE grantee = ‘TEST_USER’;GRANTEE PRIVILEGE
———- ——————–
TEST_USER CREATE TABLE
TEST_USER CREATE SESSION

— 查看用户的对象权限
SELECT grantee, owner, table_name, privilege
FROM dba_tab_privs
WHERE grantee = ‘TEST_USER’;GRANTEE OWNER TABLE_NAME PRIVILEGE
———- ———- —————————— ———-
TEST_USER HR EMPLOYEES DELETE
TEST_USER HR EMPLOYEES INSERT
TEST_USER HR EMPLOYEES SELECT
TEST_USER HR EMPLOYEES UPDATE

— 撤销权限
REVOKE DELETE ON employees FROM test_user;Revoke succeeded.

5. 审计管理

审计管理用于跟踪和记录数据库活动,包括用户登录、权限变更、数据访问等操作。通过审计,可以发现潜在的安全问题和异常行为。

— 启用审计
ALTER SYSTEM SET audit_trail = ‘DB’ SCOPE=SPFILE;System altered.

— 重启数据库使审计设置生效
SHUTDOWN IMMEDIATE;STARTUP;– 审计用户登录和注销
AUDIT SESSION;Audit succeeded.

— 审计表的访问
AUDIT SELECT, INSERT, UPDATE, DELETE ON employees;Audit succeeded.

— 查看审计记录
SELECT username, action_name, obj_name, timestamp
FROM dba_audit_trail
WHERE obj_name = ‘EMPLOYEES’
ORDER BY timestamp DESC;USERNAME ACTION_NAME OBJ_NAME TIMESTAMP
———- ——————– —————————- ———–
TEST_USER SELECT EMPLOYEES 26-JAN-26
TEST_USER INSERT EMPLOYEES 26-JAN-26

— 停止审计
NOAUDIT SESSION;NOAUDIT SELECT, INSERT, UPDATE, DELETE ON employees;Noaudit succeeded.
Noaudit succeeded.

6. 密码策略

密码策略用于确保用户密码的安全性,包括密码复杂度要求、密码过期时间、密码重用限制等。

— 查看当前密码策略
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_type = ‘PASSWORD’;PROFILE RESOURCE_NAME LIMIT
—————————— ——————————– ——————–
DEFAULT PASSWORD_LIFE_TIME UNLIMITED
DEFAULT PASSWORD_GRACE_TIME 7
DEFAULT PASSWORD_REUSE_TIME UNLIMITED
DEFAULT PASSWORD_REUSE_MAX UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION NULL
DEFAULT PASSWORD_LOCK_TIME 1
DEFAULT PASSWORD_FAILED_LOGIN_ATTEMPTS 10

— 创建密码验证函数
CREATE OR REPLACE FUNCTION verify_password(
username VARCHAR2,
password VARCHAR2,
old_password VARCHAR2
) RETURN BOOLEAN AS
len NUMBER;digits NUMBER;letters NUMBER;specials NUMBER;BEGIN
— 密码长度至少8位
len := LENGTH(password);IF len < 8 THEN RETURN FALSE;END IF;-- 至少包含一个数字 digits := REGEXP_COUNT(password, '[0-9]');IF digits < 1 THEN RETURN FALSE;END IF;-- 至少包含一个字母 letters := REGEXP_COUNT(password, '[A-Za-z]');IF letters < 1 THEN RETURN FALSE;END IF;-- 至少包含一个特殊字符 specials := REGEXP_COUNT(password, '[^A-Za-z0-9]');IF specials < 1 THEN RETURN FALSE;END IF;RETURN TRUE;END;/Function created. -- 修改密码策略 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90 PASSWORD_GRACE_TIME 7 PASSWORD_REUSE_TIME 365 PASSWORD_REUSE_MAX 5 PASSWORD_VERIFY_FUNCTION verify_password PASSWORD_LOCK_TIME 1 PASSWORD_FAILED_LOGIN_ATTEMPTS 5;Profile altered. -- 测试密码策略 ALTER USER test_user IDENTIFIED BY "weak";-- 会报错:ORA-28003: password verification for the specified password failed ALTER USER test_user IDENTIFIED BY "StrongPassword123!";-- 成功 User altered.

7. 数据加密

数据加密用于保护敏感数据,防止数据在存储和传输过程中被窃取。Oracle提供了透明数据加密(TDE)和网络加密等功能。

— 启用透明数据加密(TDE)
— 1. 创建加密钱包
ALTER SYSTEM SET encryption_key = ‘password’ SCOPE=SPFILE;System altered.

— 2. 重启数据库
SHUTDOWN IMMEDIATE;STARTUP;– 3. 创建加密表空间
CREATE TABLESPACE encrypted_ts
DATAFILE ‘/u01/app/oracle/oradata/ORCL/encrypted_ts01.dbf’
SIZE 100M
ENCRYPTION USING ‘AES256’ DEFAULT STORAGE (ENCRYPT);Tablespace created.

— 4. 在加密表空间中创建表
CREATE TABLE sensitive_data (
id NUMBER(6),
name VARCHAR2(50),
credit_card VARCHAR2(16)
)
TABLESPACE encrypted_ts;Table created.

— 5. 插入数据
INSERT INTO sensitive_data VALUES (1, ‘John Doe’, ‘1234567890123456’);COMMIT;– 6. 查看数据(数据在存储时已加密,但查询时自动解密)
SELECT * FROM sensitive_data;ID NAME CREDIT_CARD
———- ———- —————-
1 John Doe 1234567890123456

— 启用网络加密
ALTER SYSTEM SET sqlnet.encryption_client = ‘required’ SCOPE=SPFILE;ALTER SYSTEM SET sqlnet.encryption_types_client = ‘(AES256)’ SCOPE=SPFILE;ALTER SYSTEM SET sqlnet.crypto_checksum_client = ‘required’ SCOPE=SPFILE;System altered.
System altered.
System altered.

— 重启数据库
SHUTDOWN IMMEDIATE;STARTUP;

8. 最佳实践

风哥提示:Oracle数据库安全管理的最佳实践:
1. 遵循最小权限原则,只授予用户必要的权限
2. 定期审查用户权限,及时撤销不必要的权限
3. 使用角色管理权限,简化权限管理
4. 实施强密码策略,确保密码安全性
5. 启用审计功能,跟踪数据库活动
6. 使用透明数据加密保护敏感数据
7. 启用网络加密,保护数据传输安全
8. 定期备份数据库,确保数据可恢复性
9. 定期更新Oracle数据库补丁,修复安全漏洞
10. 制定数据库安全策略,定期进行安全审计

生产环境建议:在生产环境中,应建立完善的数据库安全管理体系,包括用户管理、权限管理、审计管理、密码策略和数据加密等方面。同时,定期进行安全审计和漏洞扫描,及时发现和解决安全问题。

更多视频教程www.fgedu.net.cn

学习交流加群风哥微信: itpux-com

学习交流加群风哥QQ113257174

更多学习教程公众号风哥教程itpux_com

from oracle:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息