对基本数据库服务使用 Azure Active Directory 验证

您可以在基本数据库服务中将 Oracle Database 配置为使用 Microsoft Azure Active Database 验证和授权,以允许 Azure AD 用户使用 Azure AD 身份证明访问数据库。

关于将 Azure AD 与基本数据库服务集成

基本数据库服务实例中的 Oracle Database 可以配置为 Microsoft Azure Active Directory (Azure AD) 用户使用 Azure OAuth2 访问令牌进行连接。

有关授权 Azure AD 用户、体系结构、用户映射、用例和集成过程的详细信息,请参阅 Oracle Database Security Guide 中的 Introduction to Authorizing Microsoft Azure AD Users for an Oracle Database 部分。

Prerequisites

在基本数据库服务上进行 Azure AD 验证需要以下先决条件。

以下主题将详细介绍其中每一项。

网络设置

在数据库上使用 Azure AD 验证之前,必须使用网络服务将服务网关、路由规则和出站安全规则添加到数据库资源所在的虚拟云网络 (Virtual Cloud Network,VCN) 和子网。执行以下步骤以使用 NAT 网关配置到 Azure AD 的出站连接。

  1. 按照创建服务网关中的说明,在数据库资源所在的 VCN 中创建 NAT 网关。
  2. 创建服务网关后,请将路由规则和出站安全规则添加到数据库资源所在的每个子网(在 VCN 中),以便这些资源可以使用网关从 Azure AD 实例获取公钥以使用 Azure AD 验证:
    1. 转到子网的子网详细信息页。
    2. 子网信息选项卡中,单击子网的路由表的名称以显示其路由表详细信息页。
    3. 在现有路由规则表中,检查是否已存在具有以下特征的规则:
      • 目标:0.0.0.0/0
      • 目标类型:NAT 网关
      • 目标:刚在 VCN 中创建的服务网关的名称

      如果不存在此类规则,请单击添加路由规则并添加具有这些特征的路由规则。

    4. 返回到子网的子网详细信息页。
    5. 在子网的安全列表表中,单击子网的安全列表的名称以显示其安全列表详细信息页。
    6. 在侧边菜单的资源下,单击出站规则
    7. 在现有出站规则表中,检查是否已存在具有以下特征的规则:
      • 目标类型:CIDR
      • 目标:0.0.0.0/0
      • IP 协议:TCP
      • 源端口范围: 443
      • 目标端口范围:全部
    8. 如果不存在此类规则,请单击添加出站规则并添加具有这些特征的出站规则。

TLS 配置

将 Azure AD 令牌从数据库客户端发送到数据库服务器时,必须建立 TLS 连接。包含基本数据库服务实例的数据库证书的 TLS wallet 必须存储在 WALLET_ROOT 位置下。创建 tls 目录,使其看起来像:WALLET_ROOT/<PDB GUID>/tls

在数据库客户机和服务器之间配置 TLS 时,需要考虑多个选项。

  • 使用自签名数据库服务器证书与由已知证书颁发机构签名的数据库服务器证书。
  • 单向 TLS (TLS) 与相互或双向 TLS (mTLS)。
  • 有或没有钱包的客户端。

自签名证书:使用自签名证书是内部面向 IT 资源的常见做法,因为您可以自己创建这些证书,而且是免费的。资源(就我们而言,数据库服务器)将具有自签名证书,用于向数据库客户端验证自身。自签名证书和根证书将存储在数据库服务器 wallet 中。为了使数据库客户机能够识别数据库服务器证书,客户机上也需要根证书的副本。此自行创建的根证书可以存储在客户端 wallet 中,也可以安装在客户端系统默认证书库中(仅限 Windows 和 Linux)。建立会话后,数据库客户端将检查数据库服务器发送的证书是否已由同一根证书签名。

众所周知的证书颁发机构:使用常用的根证书颁发机构具有一些优势,因为根证书很可能已存储在客户机系统默认证书存储中。如果根证书是公用根证书,则客户端没有额外的步骤来存储根证书。缺点是,这通常具有与其相关的成本。

单向 TLS :在标准 TLS 会话中,只有服务器向客户机提供用于自我验证的证书。客户端不需要有单独的客户端证书来向服务器验证自身(类似于 HTTPS 会话的建立方式)。虽然数据库需要 Wallet 来存储服务器证书,但客户端唯一需要的是用于签署服务器证书的根证书。

双向 TLS(也称为相互 TLS、mTLS):在 mTLS 中,客户机和服务器都具有相互显示的身份证书。在大多数情况下,相同的根证书将同时签名这两个证书,因此相同的根证书可以与数据库服务器和客户机一起用于验证其他证书。mTLS 有时用于验证用户,因为用户身份由数据库服务器通过证书进行验证。这对于传递 Azure AD 令牌不是必需的,但在传递 Azure AD 令牌时可以使用。

具有 wallet 的客户端:使用 mTLS 存储客户端证书时,客户端 wallet 是必需的。但是,根证书可以存储在同一个 wallet 中,也可以存储在系统默认证书存储中。

没有 Wallet 的客户机:在以下情况下使用 TLS 时,可以在没有 Wallet 的情况下配置客户机:
  1. 正在配置单向 TLS,客户端没有自己的证书,并且
  2. 对数据库服务器证书进行签名的根证书存储在系统默认证书存储中。如果服务器证书由通用证书颁发机构签名,则根证书很可能已经存在。如果是自签名证书,则需要将根证书安装在系统默认证书存储中,以避免使用客户端 wallet。

有关如何在数据库客户机和数据库服务器之间配置 TLS(包括上述选项)的详细信息,请参见 Configuring Transport Layer Security Authentication

如果您选择使用自签名证书以及其他与 wallet 相关的任务,请参阅《数据库安全指南》中的 orapki 命令行界面 (command line interface,CLI) 参考指南。请参见 Managing Public Key Infrastructure (PKI) Elements

配置基本数据库服务以与 Azure AD 集成

与 Azure AD 的基本数据库服务集成要求在 Azure AD 中注册数据库,以便数据库可以请求 Azure AD 公钥。

要配置基本数据库服务以与 Azure AD 集成,必须先完成先决条件部分中的先决条件,然后按照《 Oracle Database Security Guide 》的 Configuring the Oracle Database for Microsoft Azure AD Integration 部分中的说明操作。

映射 Oracle Database 方案和角色

Azure AD 用户将映射到一个数据库模式,并且可以选择性地映射到一个或多个数据库角色。

有关将 Oracle Database 方案和角色映射到 Azure AD 用户的选项的详细信息,请参阅 Oracle Database Security Guide 中的 Mapping Oracle Database Schemas and Roles 部分。

配置与 Azure AD 的客户端连接

您可以通过多种方式配置客户端以使用 Azure AD 令牌与基本数据库服务实例连接。

有关配置 Azure AD 客户端连接的详细信息,请参阅 Oracle Database Security Guide 中的 Configuring Azure AD Client Connections to the Oracle Database 部分。

测试 Azure 端点的可访问性

您可以通过运行连接测试来确保您的基本数据库实例可以访问 Azure AD 端点。

有关测试连接的详细信息,请参阅 Oracle Database Security Guide 中的 Testing the Accessibility of the Azure Endpoint 部分。

用于对连接进行故障排除的跟踪文件

可以使用跟踪文件对使用 Azure AD 连接的基本数据库服务客户端连接进行故障排除。

有关跟踪文件和为令牌验证设置客户端跟踪的更多信息,请参见《 Oracle Database Security Guide 》中的 Trace Files for Troubleshooting Oracle Database Client Connections with Azure AD 一节。