oracle 12c升级你的保护从更高层(oracle 12004)
Oracle 12c: 升级你的保护从更高层
如今,信息安全已成为各个组织和公司非常关注的问题。特别是对于那些处理大量敏感数据的公司,保障数据的安全性显得格外重要。针对这个问题,Oracle 12c的出现提供了更加全面的保障方案。本文将介绍如何通过这些新特性,提升数据库安全性。
1、以行为单位的安全隔离
Oracle12c的最大亮点之一是以行为单位的安全隔离。这种新的安全机制使数据库管理员可以为每个用户定义专用的数据记录,从而确保该用户只能访问其拥有访问权限的数据行。实现这一点的方法是Oracle 12c不再依赖于应用程序执行操作。它将安全性嵌入数据库体系结构,即使应用程序被攻破,也无法提取到数据。
CREATE TABLE employees (
id NUMBER PRIMARY KEY,
name VARCHAR2(100) ,
salary NUMBER,
deptid NUMBER,
CONSTRNT dept_fk FOREIGN KEY(deptid) REFERENCES departments(deptid)
) ROW LEVEL SECURITY (FILTER USING ( ‘SYS_CONTEXT(”CLIENTCONTEXT”,”deptid”) = deptid’ ));
简单地说,ROW LEVEL SECURITY (ROW LEVEL SECURITY)通过对表格级别的安全控制,限制了用户对特定行的访问。假设我们有两个部门,使用下列代码为与两个部门有关的数据行添加访问限制:
EXEC DBMS_RLS.ADD_POLICY ( object_schema => ‘HR’,
object_name => ’employees’,
policy_name => ‘filter_by_dept’,
function_schema => ‘HR’,
policy_function => ‘hr.hide_emp_salary’,
statement_types => ‘SELECT, INSERT, UPDATE, DELETE’ );
通过 ADD POLICY 命令向 HR SCHEMA 下的 EMPLOYEES表格应用安全策略,并通过 HIDE_EMP_SALARY 调用函数进行检查。POLICY_FUNCTION 中定义的函数会帮助识别具有对特定部门的访问权限的用户。
2、透明数据加密
Oracle 12C提供了一种透明的数据加密方式,使用户在访问数据库时不需要额外的认证或加密解密代码。这种新的加密方法不需要修改数据库应用程序或重新启动数据库实例。对数据的加密可以是列级别或表级别的,具体根据应用程序的不同进行设置。某些敏感数据如密码、信用卡号码等要求加密,并且不能被处于最容易被攻击的明文状态下。下面是如何可以创建一个加密列的表:
CREATE TABLE employee ( id NUMBER (5), name VARCHAR2 (100), ssn VARCHAR2 (9) ENCRYPT );
ENCRYPT 选项用于说明要进行列加密,并选择加密算法。下面是一个具体的例子:
COL PASSWORD FORMAT A20
SELECT password FROM employee WHERE id=10;
在这里,用户执行的“SELECT”语句会请求将 ID 为 10 的记录中的 PASSWORD 列解密后作为输出。这个过程对用户是透明的,不需要手动解密。
3、强劲的口令策略
即使用户仍然是您组织中最重要的敏感点之一,除密码中的数字、字符、大小写字母外,最良好的口令策略也为了保护数据的安全而生成。Oracle 12C中提供了一种新的口令管理框架,使管理员可以在Oracle密码准则的基础上进行自定义。
CREATE PROFILE security_user LIMIT PASSWORD_GRACE_TIME 10 PASSWORD_LIFE_TIME 60;
上面的命令创建了一个名为 SECURITY_USER 的简单配置文件,其中包含密码过期的时间限制。
总结
通过Oracle 12c的新特性,管理员可以更轻松地保护组织中的资产。这些特性是管理员和数据库开发人员开发和管理安全数据库的重要工具。行级安全、透明数据加密和严格的口令策略可以确保您的组织的数据安全。您可以在Oracle的官方网站上详细了解这些新特性,了解Oracle 12c之后如何提高您的数据保护。