Oracle 本机网络加密
Amazon RDS 支持 Oracle 本机网络加密 (NNE)。借助于 Native Network Encryption,您可以在数据进出数据库实例时进行加密。Amazon RDS 支持所有版本的 Oracle Database 的 NNE。
详细讨论 Oracle Native Network Encryption 超出了本指南的范围,但在您确定部署解决方案前,应该了解每个算法和密钥的优缺点。有关通过 Oracle 本机网络加密提供的算法和密钥的信息,请参阅 Oracle 文档中的配置网络数据加密
注意
您可以使用本机网络加密或安全套接字层,但不能同时使用二者。有关更多信息,请参阅“Oracle 安全套接字层”。
NNE 选项设置
您可以在服务器和客户端上指定加密要求。例如,当数据库实例使用数据库链接连接到另一个数据库时,它可以充当客户端。您可能希望避免在服务器端强制加密。例如,您可能不希望强制所有客户端通信使用加密,因为服务器需要加密。在这种情况下,您可以使用 SQLNET.*CLIENT
选项强制在客户端上加密。
Amazon RDS 支持 NNE 选项的以下设置。
注意
当您使用逗号分隔选项设置的值时,不要在逗号后面放置空格。
选项设置 | 有效值 | 默认值 | 描述 |
---|---|---|---|
|
|
|
使用非安全密码的客户端尝试连接到数据库时服务器的行为。如果为 如果设置为
|
|
|
|
使用非安全密码的客户端尝试连接到数据库时服务器的行为。以下密码被视为不安全:
如果设置为 如果设置为
|
|
|
|
当客户端或充当客户端的服务器连接到数据库实例时的数据集成行为。当数据库实例使用数据库链接时,它充当客户端。
|
|
|
|
客户端或充当客户端的服务器连接到数据库实例时的数据集成行为。当数据库实例使用数据库链接时,它充当客户端。
|
|
|
|
校验和算法的列表。 您可以指定一个值,也可以指定逗号分隔的值列表。如果您使用逗号,请不要在逗号后插入空格;否则,您会收到 此参数和 |
|
|
|
校验和算法的列表。 您可以指定一个值,也可以指定逗号分隔的值列表。如果您使用逗号,请不要在逗号后插入空格;否则,您会收到 此参数和 |
|
|
|
客户端或充当客户端的服务器连接到数据库实例时的客户端加密行为。当数据库实例使用数据库链接时,它充当客户端。
|
|
|
|
客户端或充当客户端的服务器连接到数据库实例时的服务器加密行为。当数据库实例使用数据库链接时,它充当客户端。
|
|
|
|
客户端使用的加密算法的列表。客户端使用每种算法,以便尝试对服务器输入解密,直到某种算法成功或到达列表末尾。 Amazon RDS 使用 Oracle 中的下列默认列表。您可以更改顺序或限制数据库实例将接受的算法。
您可以指定一个值,也可以指定逗号分隔的值列表。如果使用逗号,请不要在逗号后插入空格;否则,您会收到 此参数和 |
|
|
|
数据库实例使用的加密算法的列表。数据库实例使用每种算法,以便尝试对客户端输入解密,直到某种算法成功或到达列表末尾。 Amazon RDS 使用 Oracle 中的下列默认列表。您可以更改顺序或限制客户端将接受的算法。
您可以指定一个值,也可以指定逗号分隔的值列表。如果使用逗号,请不要在逗号后插入空格;否则,您会收到 此参数和 |
添加 NNE 选项
将 NNE 选项添加到数据库实例的一般过程如下所示:
创建新的选项组,或者复制或修改现有选项组。
将 选项添加到该选项组。
将选项组与数据库实例相关联。
当选项组处于活动状态时,NNE 就处于活动状态。
使用 Amazon Web Services Management Console 将 NNE 选项添加到数据库实例
-
对于 Engine,请选择要使用的 Oracle 版本。NNE 在所有版本中都受支持。
-
对于主引擎版本,选择数据库实例的版本。
有关更多信息,请参阅“创建选项组”。
-
将 NNE 选项添加到该选项组。有关添加选项的更多信息,请参阅 将选项添加到选项组。
注意
在添加 NNE 选项后,您无需重新启动数据库实例。只要选项组处于活动状态,NNE 就处于活动状态。
-
将选项组应用到新的或现有的数据库实例:
-
对于新数据库实例,您可以在启动实例时应用选项组。有关更多信息,请参阅“创建 Amazon RDS 数据库实例”。
-
对于现有数据库实例,您可以通过修改实例并附加新的选项组来应用选项组。在添加 NNE 选项后,您无需重新启动数据库实例。只要选项组处于活动状态,NNE 就处于活动状态。有关更多信息,请参阅 修改 Amazon RDS 数据库实例。
-
在 sqlnet.ora 中设置 NNE 值
借助于 Oracle Native Network Encryption,您还可以在服务器端和客户端设置网络加密。客户端是用来连接到数据库实例的计算机。您可以在 slqnet.ora 中指定以下客户端设置:
-
SQLNET.ALLOW_WEAK_CRYPTO
-
SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS
-
SQLNET.CRYPTO_CHECKSUM_CLIENT
-
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
-
SQLNET.ENCRYPTION_CLIENT
-
SQLNET.ENCRYPTION_TYPES_CLIENT
有关信息,请参阅 Oracle 文档中的配置 Oracle 服务器和客户端的网络数据加密和完整性
有时,数据库实例会拒绝来自应用程序的连接请求。例如,当客户端和服务器上的加密算法不匹配时,可能会发生拒绝。要测试 Oracle Native Network Encryption,请给客户端上的 sqlnet.ora 文件添加下列行:
DIAG_ADR_ENABLED=off TRACE_DIRECTORY_CLIENT=/tmp TRACE_FILE_CLIENT=nettrace TRACE_LEVEL_CLIENT=16
当尝试连接时,先前的行会在称为 /tmp/nettrace*
的客户端上生成跟踪文件。该跟踪文件中包含关于连接的信息。有关使用 Oracle 本机网络加密时的相关连接问题的详细信息,请参阅 Oracle Database 文档中的关于协商加密和完整性
修改 NNE 选项设置
启用 NNE 后,您可以修改其设置。目前,您只能使用 Amazon CLI 或 RDS API 修改 NNE 选项设置。您无法使用控制台。要了解如何使用 CLI 修改选项设置,请参阅Amazon CLI。有关各项设置的更多信息,请参阅NNE 选项设置。
修改 CRYPTO_CHECKSUM_* 值
如果修改 NNE 选项设置,请确保以下选项设置具有至少一个通用密码:
-
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
-
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
以下示例显示修改 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
的方案。该配置有效,因为 CRYPTO_CHECKSUM_TYPES_CLIENT
和 CRYPTO_CHECKSUM_TYPES_SERVER
都使用 SHA256
。
选项设置 | 修改前的值 | 修改后的值 |
---|---|---|
|
|
无更改 |
|
|
SHA1,MD5,SHA256 |
例如,假设需要将 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
从原定设置改为 SHA1,MD5
。在这种情况下,请确保将 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
设置为 SHA1
或者 MD5
。这些算法不包含 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
的原定设置值中。
修改 ALLOW_WEAK_CRYPTO* 设置
要将 SQLNET.ALLOW_WEAK_CRYPTO*
选项从默认值设置为 FALSE
,请确保满足以下条件:
-
SQLNET.ENCRYPTION_TYPES_SERVER
和SQLNET.ENCRYPTION_TYPES_CLIENT
有一种匹配的安全加密方法。如果方法并非DES
、3DES
或RC4
(所有密钥长度),则该方法被视为安全。 -
SQLNET.CHECKSUM_TYPES_SERVER
和SQLNET.CHECKSUM_TYPES_CLIENT
有一种匹配的安全校验和方法。如果方法并非MD5
,则该方法被视为安全。 -
该客户端使用 2021 年 7 月的 PSU 进行了修补。如果客户端没有进行修补,则客户端将失去连接并收到
ORA-12269
错误。
下面的示例显示了示例 NNE 设置。假设您想要将 SQLNET.ENCRYPTION_TYPES_SERVER
和 SQLNET.ENCRYPTION_TYPES_CLIENT
设置为 FALSE,从而阻止不安全的连接。校验和选项设置满足先决条件,因为它们都具有 SHA256
。但是,SQLNET.ENCRYPTION_TYPES_CLIENT
和 SQLNET.ENCRYPTION_TYPES_SERVER
使用 DES
、3DES
和 RC4
加密方法,这些方法不安全。因此,要将 SQLNET.ALLOW_WEAK_CRYPTO*
选项设置为 FALSE
,请首先将 SQLNET.ENCRYPTION_TYPES_SERVER
和 SQLNET.ENCRYPTION_TYPES_CLIENT
设置为安全加密方法,例如 AES256
。
选项设置 | 值 |
---|---|
|
|
|
SHA1,MD5,SHA256 |
|
|
|
|
删除 NNE 选项
您可以从数据库实例中删除 NNE。
要从数据库实例中删除 NNE,请执行下列操作之一:
-
要从多个数据库实例中删除 NNE,请从其所属的选项组中删除 NNE 选项。此更改会影响使用该选项组的所有数据库实例。删除 NNE 选项后,您无需重新启动数据库实例。有关更多信息,请参阅“从选项组中删除选项”。
-
要从单个数据库实例中删除 NNE,请修改该数据库实例,并指定另一个不包含 NNE 选项的选项组。您可以指定默认 (空) 选项组,或指定其他自定义选项组。删除 NNE 选项后,您无需重新启动数据库实例。有关更多信息,请参阅修改 Amazon RDS 数据库实例。