,在今年国内很多用户的甲骨文数据库突然遭到比特币勒索,从这一方面来说,数据库的安全,大家没有引起足够的重视,其实不难发现,我们在生产环境中使用的甲骨文数据库确实存在着很多安全隐患和安全风险.Oracle在数据库安全方面的解决方案也有很多,比如Oracle审计与数据库防火墙(AVDF)产品,甲骨文的透明数据加密功能(KDE)和Oralce钱包(也称甲骨文钱夹)加密用户的密码等等。
,如果需要从SHELL脚本来连接到Oracle数据库,那么这些脚本包含数据库连接详细信息,这可能是一个主要的安全问题。一个解决方案是使用操作系统身份验证,但Oracle 10 g第2版提供了使用安全外部密码存储的功能,其中Oracle登录证书存储在客户端甲骨文电子钱包中,这样的话,在SHELL脚本里就可以使用“/@ db_alias”这样的语法来连接。这对于用脚本登录数据库进行操作来说是非常有用的,尤其对于企业安全要求很高,不希望用户名和密码明文存在配置文件中,而且对于密码的维护是极为方便的,比如把钱包放在指定路径下,当修改密码时,只需统一覆盖钱包即可。
,今天我和大家分享一下,如何使用甲骨文的外部安全密码存储功能实现无密码登录数据库,以此不将明文密码暴露在生产环境当中。
,那么,甲骨文是如何通过安全外部密码存储(安全的外部密码存储)来达到无密码登录数据库呢?我们来说,连接到数据库的密码证书是存储在甲骨文的钱包里,这个钱包(钱夹)是一个用来保存认证和签名证书的一种安全软件容器。这种钱包使用可以简化依靠密码凭据连接到数据库的大规模部署。配置此功能时,应用程序代码,批处理作业和脚本不再需要嵌入的用户名和密码。风险降低,因为这样的密码不再以明确的方式暴露,并且当用户名或密码改变时,密码管理策略更容易实施,而不改变应用程序代码。
,因为用“安全外部密码存储”这种方式所存储的密码密文信息是存储在甲骨文钱包里的,那么我们先介绍一下,什么是甲骨文的钱包以及它里面可以存储一些什么信息吗?请看下面的一段英文描述,
中文翻译如下,
甲骨文钱夹是一个用于存储不同类型认证和加密密钥的PKCS # 12容器。因此,这种钱夹可以用于存储以下信息的一个或多个:
- <李>
甲骨文数据库的PKI身份验证凭据
李> <李>网络加密证书(SSL/TLS)
李> <李>甲骨文高级安全透明数据加密(语音)的主加密密钥
李> <李>甲骨文数据库安全外部密码存储的密码
李>,说的直白一点,甲骨文的钱包可以形象的比喻成我们日常生活中的钱包一样,在钱包里,我们可以放银行卡,×××,信用卡,公司的员工卡,就餐卡等等。
,看了上面的一段英文描述和中文翻译,想必大家对甲骨文的钱包也有所了解。那么到底什么是甲骨文的安全的外部密码存储(安全外部密码存储)呢?我们再看下面的一段英文描述,
中文翻译如下,
,使用安全外部密码存储,Oracle将数据库凭据(即用户名和密码)安全地存储在甲骨文电子钱包中。在启动数据库连接时,Oracle访问钱包并根据连接字符串读取凭据。由于配置了自动登录,因此无需密码即可打开钱包并读取凭据。只有在电子钱包中添加,更改或删除凭据时才需要密码。
,连接字符串在电子钱包中是唯一的。每个连接字符串只能存储一个凭证。同一数据库的不同凭据必须由不同的连接字符串区分。
,从上面的中文解读,我们可以得知,安全外部密码存储就是甲骨文把用户名和密码存放钱包在Oracle的一种安全加密形式。
,下面我们根据Oracle 10 gr2官方文档中外部的安全密码存储功能来演示和操作,最终实现无密码登录数据库。
,虽然说,使用钱包的图形界面(在命令行界面下输入owm命令可以打开)可以极大的简化管理密码证书,至于为什么不能用owm (oracle钱包经理)来创建和管理钱包的外部密码存储,而是使用mkstore命令吗?以下是摘自甲骨文官方文档的一段描述: