1. 首页 > Oracle教程 > 正文

Oracle教程FG173-TDE表空间加密

1. TDE表空间加密概述

TDE表空间加密是透明数据加密(TDE)的一种使用方式,它可以加密整个表空间中的数据,保护敏感信息不被未授权访问。风哥教程参考Oracle官方文档Security部分。更多学习教程www.fgedu.net.cn

— 检查TDE相关参数
SELECT * FROM v$parameter WHERE name LIKE ‘%wallet%’ OR name LIKE ‘%encryption%’;NAME TYPE VALUE
———————————— ———– ——————————
db_wallet_location string /oracle/app/oracle/admin/fgedudb/wallet

— 检查TDE钱包状态
SELECT * FROM v$encryption_wallet;WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
——————– ————————————————–
—————————————- ——————– ———– ——– ———–
FILE /oracle/app/oracle/admin/fgedudb/wallet OPEN PASSWORD SINGLE N

— 检查加密表空间相关视图
SELECT view_name FROM dba_views WHERE view_name LIKE ‘%TABLESPACE%ENCRYPTION%’ ORDER BY view_name;VIEW_NAME
——————————
DBA_TABLESPACES_ENCRYPTION

2. TDE表空间加密配置

TDE表空间加密配置包括设置钱包位置、创建钱包、打开钱包等步骤。学习交流加群风哥微信: itpux-com

— 创建钱包目录
$ mkdir -p /oracle/app/oracle/admin/fgedudb/wallet
$ chown oracle:oinstall /oracle/app/oracle/admin/fgedudb/wallet
$ chmod 700 /oracle/app/oracle/admin/fgedudb/wallet

— 设置钱包位置
ALTER SYSTEM SET db_wallet_location = ‘file:/oracle/app/oracle/admin/fgedudb/wallet’ SCOPE=SPFILE;System altered.

— 重启数据库使配置生效
SHUTDOWN IMMEDIATE;STARTUP;Database closed.
Database dismounted.
ORACLE instance shut down.

ORACLE instance started.

Total System Global Area 1610612736 bytes
Fixed Size 9136928 bytes
Variable Size 973078528 bytes
Database Buffers 629145600 bytes
Redo Buffers 7634944 bytes
Database mounted.
Database opened.

— 创建TDE钱包
ALTER SYSTEM SET encryption key IDENTIFIED BY “Welcome123”;System altered.

— 验证钱包状态
SELECT * FROM v$encryption_wallet;WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
——————– ————————————————–
—————————————- ——————– ———– ——– ———–
FILE /oracle/app/oracle/admin/fgedudb/wallet OPEN PASSWORD SINGLE N

风哥提示:TDE表空间加密需要先配置并打开TDE钱包,否则无法创建加密表空间。

3. 创建加密表空间

创建加密表空间可以使用不同的加密算法,如AES128、AES192、AES256等。

— 创建使用AES256加密算法的表空间
CREATE TABLESPACE encrypted_ts
DATAFILE ‘/oradata/fgedudb/encrypted_ts01.dbf’ SIZE 100M
ENCRYPTION USING ‘AES256’ DEFAULT STORAGE (ENCRYPT);Tablespace created.

— 创建使用AES128加密算法的表空间
CREATE TABLESPACE encrypted_ts128
DATAFILE ‘/oradata/fgedudb/encrypted_ts128_01.dbf’ SIZE 100M
ENCRYPTION USING ‘AES128’ DEFAULT STORAGE (ENCRYPT);Tablespace created.

— 验证表空间加密状态
SELECT tablespace_name, encrypted, encryption_alg
FROM dba_tablespaces_encryption
WHERE tablespace_name IN (‘ENCRYPTED_TS’, ‘ENCRYPTED_TS128’);TABLESPACE_NAME ENCRYPTED ENCRYPTION_ALG
—————————— ——— —————
ENCRYPTED_TS YES AES 256-bit
ENCRYPTED_TS128 YES AES 128-bit

— 查看所有表空间的加密状态
SELECT tablespace_name, encrypted
FROM dba_tablespaces
ORDER BY encrypted DESC, tablespace_name;TABLESPACE_NAME ENCRYPTED
—————————— ———
ENCRYPTED_TS YES
ENCRYPTED_TS128 YES
SYSAUX NO
SYSTEM NO
TEMP NO
UNDOTBS1 NO
USERS NO

4. 使用加密表空间

使用加密表空间可以在其中创建表、索引等数据库对象,所有数据会自动加密存储。学习交流加群风哥QQ113257174

— 在加密表空间中创建表
CREATE TABLE fgedu.employees (
emp_id NUMBER(10) PRIMARY KEY,
emp_name VARCHAR2(100),
department VARCHAR2(100),
salary NUMBER(10,2),
ssn VARCHAR2(11),
email VARCHAR2(100)
) TABLESPACE encrypted_ts;Table created.

— 插入测试数据
INSERT INTO fgedu.employees VALUES (1, ‘风哥1号’, ‘技术部’, 8000, ‘110101199001011234’, ‘zhangsan@fgedu.net.cn’);INSERT INTO fgedu.employees VALUES (2, ‘风哥2号’, ‘市场部’, 9000, ‘110101199002022345’, ‘lisi@fgedu.net.cn’);INSERT INTO fgedu.employees VALUES (3, ‘风哥3号’, ‘财务部’, 10000, ‘110101199003033456’, ‘wangwu@fgedu.net.cn’);3 rows created.

COMMIT;Commit complete.

— 查询表中的数据
SELECT * FROM fgedu.employees;EMP_ID EMP_NAME DEPARTMENT SALARY SSN EMAIL
———- ——————– ——————– ———- ———– ——————————
1 风哥1号 技术部 8000 110101199001011234 zhangsan@fgedu.net.cn
2 风哥2号 市场部 9000 110101199002022345 lisi@fgedu.net.cn
3 风哥3号 财务部 10000 110101199003033456 wangwu@fgedu.net.cn

— 关闭钱包并尝试查询数据
ALTER SYSTEM SET encryption wallet close;System altered.

SELECT * FROM fgedu.employees;SELECT * FROM fgedu.employees
* ERROR at line 1:
ORA-28365: wallet is not open

— 打开钱包并再次查询数据
ALTER SYSTEM SET encryption wallet open IDENTIFIED BY “Welcome123”;System altered.

SELECT * FROM fgedu.employees;EMP_ID EMP_NAME DEPARTMENT SALARY SSN EMAIL
———- ——————– ——————– ———- ———– ——————————
1 风哥1号 技术部 8000 110101199001011234 zhangsan@fgedu.net.cn
2 风哥2号 市场部 9000 110101199002022345 lisi@fgedu.net.cn
3 风哥3号 财务部 10000 110101199003033456 wangwu@fgedu.net.cn

— 在加密表空间中创建索引
CREATE INDEX fgedu.emp_name_idx ON fgedu.employees(emp_name) TABLESPACE encrypted_ts;Index created.

— 查看表和索引的表空间
SELECT table_name, tablespace_name FROM dba_tables WHERE owner = ‘FGEDU’;TABLE_NAME TABLESPACE_NAME
—————————— ——————————
EMPLOYEES ENCRYPTED_TS

SELECT index_name, tablespace_name FROM dba_indexes WHERE owner = ‘FGEDU’;INDEX_NAME TABLESPACE_NAME
—————————— ——————————
EMP_NAME_IDX ENCRYPTED_TS
SYS_C0010001 ENCRYPTED_TS

5. 监控加密表空间

监控加密表空间包括查看表空间加密状态、表空间使用情况等。

— 查看表空间加密状态
SELECT tablespace_name, encrypted, encryption_alg
FROM dba_tablespaces_encryption;TABLESPACE_NAME ENCRYPTED ENCRYPTION_ALG
—————————— ——— —————
ENCRYPTED_TS YES AES 256-bit
ENCRYPTED_TS128 YES AES 128-bit
SYSAUX NO
SYSTEM NO
TEMP NO
UNDOTBS1 NO
USERS NO

— 查看表空间使用情况
SELECT tablespace_name, bytes/1024/1024 MB, maxbytes/1024/1024 MAX_MB,
(bytes – free_bytes)/1024/1024 USED_MB,
free_bytes/1024/1024 FREE_MB,
ROUND((bytes – free_bytes)/bytes * 100, 2) USED_PERCENT
FROM (SELECT tablespace_name, SUM(bytes) bytes, SUM(maxbytes) maxbytes,
SUM(decode(status, ‘FREE’, bytes, 0)) free_bytes
FROM dba_data_files
GROUP BY tablespace_name);TABLESPACE_NAME MB MAX_MB USED_MB FREE_MB USED_PERCENT
—————————— ———- ———- ———- ———- ————
ENCRYPTED_TS 100 100 10.5 89.5 10.5
ENCRYPTED_TS128 100 100 1.0 99.0 1.0
SYSAUX 500 500 450.0 50.0 90.0
SYSTEM 700 700 680.0 20.0 97.14
USERS 100 100 20.0 80.0 20.0

— 查看TDE钱包状态
SELECT * FROM v$encryption_wallet;WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
——————– ————————————————–
—————————————- ——————– ———– ——– ———–
FILE /oracle/app/oracle/admin/fgedudb/wallet OPEN PASSWORD SINGLE N

— 查看加密表空间中的对象
SELECT owner, object_name, object_type, tablespace_name
FROM dba_objects
WHERE tablespace_name = ‘ENCRYPTED_TS’
ORDER BY object_type, object_name;OWNER OBJECT_NAME OBJECT_TYPE TABLESPACE_NAME
———- —————————— ——————- ——————————
FGEDU EMPLOYEES TABLE ENCRYPTED_TS
FGEDU EMP_NAME_IDX INDEX ENCRYPTED_TS
FGEDU SYS_C0010001 INDEX ENCRYPTED_TS

6. 最佳实践

以下是TDE表空间加密的最佳实践,帮助您有效保护敏感数据。更多学习教程公众号风哥教程itpux_com

— 1. 合理选择加密算法
— 使用AES256加密算法提供最高级别的安全性
CREATE TABLESPACE encrypted_ts
DATAFILE ‘/oradata/fgedudb/encrypted_ts01.dbf’ SIZE 100M
ENCRYPTION USING ‘AES256’ DEFAULT STORAGE (ENCRYPT);– 2. 安全管理TDE钱包
— 创建强密码的钱包
ALTER SYSTEM SET encryption key IDENTIFIED BY “Welcome123”;– 定期备份钱包文件
$ cp -r /oracle/app/oracle/admin/fgedudb/wallet /backup/wallet/$(date +%Y%m%d)

— 妥善保管钱包密码

— 3. 合理规划加密表空间
— 只对包含敏感数据的表空间进行加密
— 避免对所有表空间都进行加密,以减少性能影响

— 4. 定期监控加密表空间
— 监控表空间使用情况
SELECT tablespace_name, bytes/1024/1024 MB, free_bytes/1024/1024 FREE_MB,
ROUND((bytes – free_bytes)/bytes * 100, 2) USED_PERCENT
FROM (SELECT tablespace_name, SUM(bytes) bytes,
SUM(decode(status, ‘FREE’, bytes, 0)) free_bytes
FROM dba_data_files
GROUP BY tablespace_name);– 5. 测试加密表空间性能
— 定期测试加密表空间对数据库性能的影响
— 进行必要的优化

— 6. 制定应急方案
— 制定TDE钱包丢失或损坏的应急方案
— 测试钱包恢复流程

— 7. 文档化加密策略
— 记录加密表空间的创建和管理细节
— 记录TDE钱包的管理流程

— 8. 培训管理员了解加密表空间
— 培训数据库管理员了解TDE表空间加密的使用和管理
— 避免操作失误导致数据无法访问

— 9. 定期备份加密表空间
— 定期备份加密表空间的数据
— 确保备份包含TDE钱包

— 10. 结合其他安全措施
— 将TDE表空间加密与其他安全措施(如VPD、审计等)结合使用
— 构建完整的安全体系

生产环境建议:根据业务需求和合规要求,针对包含敏感数据的表空间实施TDE加密。妥善管理TDE钱包,定期备份钱包文件,确保数据安全。

风哥提示:TDE表空间加密是透明数据加密(TDE)的一种使用方式,它可以加密整个表空间中的数据,保护敏感信息不被未授权访问,是一种有效的数据保护方法。

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

from oracle:www.itpux.com

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

联系我们

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

微信号:itpux-com

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