Active Directory 概览

选择文档版本:

本页面介绍了 PostgreSQL 如何使用通用安全服务应用编程接口 (GSSAPI) 在 AlloyDB Omni 中与 Active Directory 集成,并介绍了关键的 Kerberos 概念。KerberosKerberos 是为 Active Directory 提供支持的身份验证协议。

Active Directory 是 Microsoft 为 Windows 网域网络开发的目录服务。Active Directory 是一种集中式标准化系统,可自动执行用户数据、安全性和分布式资源的网络管理。此目录服务为用户账号、群组和其他网络对象提供了一个统一的管理点。Active Directory 的一项关键功能是身份验证,用于确认用户的身份和授权,并授予用户访问网络上特定资源的权限。

Active Directory 组件

领域是 Kerberos 身份验证的管理网域。在 Active Directory 的上下文中,领域等同于 Active Directory 网域。领域表示共享通用身份验证数据库的用户、计算机和服务组成的逻辑群组。配置 Kerberos 时,您必须指定客户端和服务所属的领域。领域是域名的大写版本,例如,如果网域为 ad.example.com,则领域为 AD.EXAMPLE.COM

密钥分发中心 (KDC) 是一项核心 Kerberos 服务,可在 Active Directory 中的每个域控制器上运行。KDC 具有以下主要功能:

  • 身份验证服务 (AS):在初始登录时(例如,当您登录 Windows 时)验证用户身份,并签发票证授予票证 (TGT)。
  • 票证授予服务 (TGS):向提供有效 TGT 的已通过身份验证的用户签发服务票证。这些服务票证授予对特定服务(例如 PostgreSQL 数据库)的访问权限。

主账号是 Kerberos 领域中的唯一身份,可向其分配票证。以下是主账号的主要类型:

  • 用户主账号:代表人类用户,例如 username@REALM
  • 服务主账号 (SPN):表示特定主机上的特定服务,例如 postgres/db-server.ad.example.com@REALM。如果客户端要为您的数据库请求服务票证,数据库服务必须具有已注册的 SPN。

keytab 或密钥表文件包含主账号及其相应密钥的列表,这些密钥是从主账号的密码派生出来的。服务使用 keytab 文件向 KDC 证明自己的身份,并解密客户端提供的服务票证。

此方法允许 PostgreSQL 等服务向 Kerberos 系统进行身份验证,而无需人工互动或在服务器上存储纯文本密码。keytab 文件非常敏感,必须安全存储和保护。

将 PostgreSQL 与 Active Directory 集成

将 PostgreSQL 与 Active Directory 集成后,您可以基于公司身份集中管理用户,从而提高数据库安全性。

为了支持身份验证,PostgreSQL 提供了以下与 Active Directory 集成的方法:

  • 轻量级目录访问协议 (LDAP):您可以配置 PostgreSQL,以使用 LDAP 协议针对 Active Directory 服务器对用户进行身份验证。当用户尝试连接到数据库时,PostgreSQL 会通过 LDAP 与 Active Directory 服务器通信,以验证用户的凭证(通常是用户名和密码)。 此方法使用 Active Directory 作为外部身份验证提供方。

  • 使用 Kerberos 的通用安全服务应用编程接口 (GSSAPI):这是一种更安全、更复杂的方法,使用 Kerberos 协议,而 Kerberos 协议是 Active Directory 中的默认身份验证机制。GSSAPI 为应用访问安全服务提供了一个标准接口。

虽然 LDAP 和 GSSAPI 都能实现 Active Directory 集成的目标,但是 GSSAPI 与 Kerberos 因其强大的基于票证的加密身份验证而成为企业环境更安全、更强大的方法。本页面介绍了如何使用 GSSAPI 方法为 AlloyDB Omni 实现 Active Directory 集成。

使用 GSSAPI 进行 Active Directory 身份验证

AlloyDB Omni 允许您使用 Active Directory 作为身份验证后端,通过 Kerberos 进行身份验证。下图显示了实现身份验证的步骤。

图片

  1. 客户端 psql 使用密钥分发中心 (KDC) 中的身份验证服务 (AS) 发起身份验证请求。
  2. AS 对客户端进行身份验证,并向客户端颁发票证授予票证 (TGT) (T1)。然后,使用 TGT 请求服务票证。
  3. 客户端使用 TGT 向 KDC 中的票证授予服务 (TGS) 请求 PostgreSQL 服务的服务票证。客户端现在请求访问特定的 PostgreSQL 服务器。
  4. TGS 验证 TGT 并向客户端颁发服务票证 (T2)。此票证包含会话密钥 (T3),并使用 PostgreSQL 服务器的密钥进行加密。
  5. 客户端将加密的服务票证 (T2) 发送到 PostgreSQL 服务器。
  6. PostgreSQL 服务器使用其密钥(来自 keytab 文件)解密服务票证 (T2),然后检索会话密钥 (T3) 并验证票证的真实性。如果此操作成功,服务器会授予访问权限,并使用会话密钥与客户端建立安全通信渠道。

后续步骤