将 Azure Active Directory 验证与基本数据库服务结合使用
您可以将基本数据库服务中的 Oracle AI Database 配置为使用 Microsoft Azure Active Database 验证和授权,以允许 Azure AD 用户使用 Azure AD 身份证明访问数据库。
关于将 Azure AD 与基本数据库服务集成
可以为 Microsoft Azure Active Directory (Azure AD) 用户配置基本数据库服务实例中的 Oracle AI Database,以使用 Azure OAuth2 访问令牌进行连接。
有关授权 Azure AD 用户、体系结构、用户映射、用例和集成过程的更多信息,请参阅《 Oracle AI Database Security Guide 》中的 Authenticating and Authorizing Microsoft Azure Users for Oracle AI Databases 一节。
先决条件
基本数据库服务上的 Azure AD 验证需要以下先决条件。
以下主题将详细介绍其中每个主题。
网络设置
在数据库上使用 Azure AD 验证之前,必须使用网络服务向数据库资源所在的虚拟云网络 (Virtual Cloud Network,VCN) 和子网添加服务网关、路由规则和出站安全规则。执行以下步骤以使用 NAT 网关配置与 Azure AD 的出站连接。
- 按照创建服务网关中的说明,在数据库资源所在的 VCN 中创建 NAT 网关。
-
创建服务网关后,向数据库资源所在的每个子网添加路由规则和出站安全规则(在 VCN 中),以便这些资源可以使用网关从 Azure AD 实例获取公钥以使用 Azure AD 验证:
- 转到子网的 Subnet Details(子网详细信息)页面。
- 在 Subnet Information(子网信息)选项卡中,单击子网的 Route Table(路由表)的名称以显示其 Route Table Details(路由表详细信息)页面。
-
在现有路由规则表中,检查是否已存在具有以下特征的规则:
- 目标:0.0.0.0/0
- 目标类型:NAT 网关
- 目标:刚在 VCN 中创建的服务网关的名称
如果不存在此类规则,请选择添加路由规则并添加具有这些特性的路由规则。
- 返回到子网的子网详细信息页面。
- 在子网的安全列表表中,单击子网的安全列表名称以显示其安全列表详细信息页面。
- 在侧边菜单的资源下,选择出站规则。
-
在现有出站规则表中,检查是否已存在具有以下特征的规则:
- 目标类型:CIDR
- 目标:0.0.0.0/0
- IP Protocol(IP 协议):TCP
- 源端口范围: 443
- 目标端口范围:全部
- 如果不存在此类规则,请选择添加出站规则并添加具有这些特征的出站规则。
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(也称为 Mutual TLS、mTLS):在 mTLS 中,客户机和服务器都具有相互提供的身份证书。在大多数情况下,相同的根证书都将对这些证书进行签名,以便可以将相同的根证书与数据库服务器和客户机一起用于验证其他证书。mTLS 有时用于验证用户,因为用户身份由数据库服务器通过证书进行验证。这对于传递 Azure AD 令牌没有必要,但可以在传递 Azure AD 令牌时使用。
具有 wallet 的客户机:使用 mTLS 存储客户机证书时,客户机 wallet 是必需的。但是,根证书可以存储在同一 wallet 或系统默认证书存储中。
不带 wallet 的客户机:在以下情况下使用 TLS 时,可以配置不带 wallet 的客户机:
-
正在配置单向 TLS,其中客户机没有自己的证书,并且
-
对数据库服务器证书进行签名的根证书存储在系统默认证书存储中。如果服务器证书由公共证书颁发机构签名,则根证书很可能已经存在。如果是自签名证书,则需要将根证书安装在系统默认证书存储中,以避免使用客户端 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 AI Database Security Guide 》的 Configuring the Oracle AI Database for Microsoft Azure AD Integration 部分中的说明进行操作。
映射 Oracle AI Database 方案和角色
Azure AD 用户将映射到一种数据库模式,还可以选择映射到一个或多个数据库角色。
有关将 Oracle AI Database 方案和角色映射到 Azure AD 用户的选项的详细信息,请参阅《 Oracle AI Database Security Guide 》中的 Mapping Oracle AI Database Schemas and Roles 部分。
配置与 Azure AD 的客户端连接
您可以通过多种方式将客户机配置为使用 Azure AD 令牌连接到基本数据库服务实例。
有关配置 Azure AD 客户端连接的详细信息,请参阅 Oracle AI Database Security Guide 中的 Configuring Azure AD Client Connections to the Oracle AI Databases 一节。
测试 Azure 端点的可访问性
您可以通过运行连接测试来确保基本数据库实例可以访问 Azure AD 端点。
有关测试连接的详细信息,请参阅《 Oracle AI Database Security Guide 》中的 Testing the Accessibility of the Azure Endpoint 部分。
用于对连接进行故障排除的跟踪文件
可以使用跟踪文件对基本数据库服务客户端与 Azure AD 连接的连接进行故障排除。
有关跟踪文件和为令牌验证设置客户机跟踪的更多信息,请参见《 Oracle AI Database Security Guide 》中的 Trace Files for Troubleshooting Oracle Database Client Connections with Azure AD 部分。