我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
在不加入活动目录域的情况下为适用于 PostgreSQL 的亚马逊 RDS 配置 Kerberos 身份验证
采用集中式身份验证机制的组织可以获得以下好处:
- 增强安全态势:集中式身份验证允许在整个网络中快速添加或删除用户访问权限,从而提高组织安全性并能够快速响应安全威胁。
- 可扩展性:通过集中式数据库控制访问权限,组织可以扩展其网络并最大限度地减少性能问题。
- 易于管理:集中式身份验证简化了网络资源的管理,使其更加高效。
将关系数据库身份验证与集中式身份验证服务(例如微软活动目录(Microsoft AD))集成在一起的做法是一种既定且被广泛使用的策略。Active Directory 是为用户、计算机和应用程序提供的集中式身份验证和授权管理服务。它允许管理员管理网络资源和执行安全策略。Kerberos 是一种与 Active Directory 集成的网络身份验证协议,允许从数据库实例中卸载身份验证。由于数据库实例只需要处理授权,因此账户管理负担大大降低。
将客户端加入到 Active Directory 域的主要原因包括安全策略、访问控制和集中式身份管理。但是,将 Linux 客户端加入到 Active Directory 的过程技术性很强且复杂,与使用 Windows 客户端的无缝体验相比,它更加轻松。此外,不同的 Linux 发行版和 Active Directory 之间可能存在兼容性问题,这带来了额外的挑战。
但是,无需将 Linux 客户端加入活动目录域即可使用 Kerberos 身份验证。在这篇文章中,我们演示了如何配置 Active Directory 域之外的 Linux 客户端,以便使用 Kerberos 身份验证连接到适用于 PostgreSQL 的亚马逊 RDS 或兼容 Amazon Aurora PostgreSQL 的版本。
解决方案概述
该解决方案使用亚马逊 RDS for PostgreSQL,加入
出于演示目的,我们使用了 安装了
-
本地 AD 域
—
ONPREM.LOCAL -
亚马逊云科技 托管广告域
— 亚马逊云科技POSTGRESQL.KERBEROS
.COM
在这种情况下,用户由本地域进行身份验证,而 Amazon RDS 仅与 亚马逊云科技 托管域进行交互。
先决条件
在我们开始之前,请确保您已准备好本地和 亚马逊云科技 环境,如架构图所示。您必须具备以下先决条件:
-
本地 AD 或 Windows EC2 服务器被提升为我们的本地 AD。有关自行管理 AD 部署的示例,请参阅场景 1:
在 亚马逊云科技 上的 Act ive Directory 域服务 指南中部署自管理 AD。 -
A
WS 托管的微软 AD 。 - 本地域和 亚马逊云科技 托管域之间的单向或双向林信任。
-
一个适用于
PostgreSQL 的 亚马逊 RDS 数据库实例加入了 亚马逊云科技 Managed AD 。 - 在本地 AD 中创建的用户。
-
熟悉
ps ql。
本地 AD 与 亚马逊云科技 托管的微软 AD 之间的信任
要实施本文中的解决方案,您必须在本地 AD 域和 亚马逊云科技 托管域之间建立信任关系,以允许本地域用户访问 Amazon RDS 资源。这种信任使 亚马逊云科技 Managed 域能够根据本地域内的身份验证授予对其资源的访问权限。为了提高安全性,除非您有特定的业务需求,否则建议使用单向信任。首选单向信任,因为它可以更好地控制资源的访问。在此设置中,只有本地 AD 域可以访问 亚马逊云科技 托管域中的资源,而 亚马逊云科技 托管域没有访问权限。有关如何在
创建适用于 PostgreSQL 的亚马逊 RDS 实例并加入 亚马逊云科技 管理的微软 AD
有关创建适用于
在本地 AD 中创建用户
在本地 Active Directory 上创建用户
sid@ONPREM.LOCAL
。我们使用 Kerberos 身份验证使用该用户连接到亚马逊 RDS for PostgreSQL 实例。
在 Linux 平台上登录适用于 PostgreSQL 的亚马逊 RDS 实例
您可以通过在 Linux 平台上登录适用于 PostgreSQL 的亚马逊 RDS 实例来管理数据库。本节详细介绍了在活动目录域之外配置 Linux 客户端,以便使用 Kerberos 身份验证连接到 Amazon RDS for PostgreSQL 的步骤。
-
启动
亚马逊 EC2 Linux 2 实例。 -
连接 到 EC2 Linux 实例。连接方法的选择将取决于本地计算机操作系统、安全要求、网络基础设施和用户偏好等因素。 -
编辑位于 搜索条目定义了解析名称时要搜索的域名列表。此外,将您的 AD 的 DNS IP 地址包含在/etc/resolv.conf 的解析器配置文件, 将您的 AD 域以及 亚马逊云科技 区域的域名包括在搜索指令中。域名服务器指令中。
-
要使 res
olv.conf中的更改在重新启动时 永久生效,请运行以下命令。
-
验证连通性。如果您的 DNS 服务器配置正确,则
ping命令会将 AD 域解析为 IP 地址并成功运行。
-
需要在客户端计算机上使用 Kerberos 客户端实用程序
kinit 才能获取或续订 Kerberos 票证。安装krb5-libs 和 krb5 工作站软件包时,kinit 实用程序可用。
-
为本地微
软 AD 创建包含以下内容的 krb5.conf文件。此文件包含 Kerberos 5 库的配置参数。
- 安装 psql 客户端工具以连接到适用于 PostgreSQL 的亚马逊 RDS。为了兼容性,建议保持 psql 客户端版本与 PostgreSQL 服务器版本相同或更高。对于这个用例,我们安装了 psql 客户端版本 14。
- 使用主用户账户登录亚马逊 RDS for PostgreSQL 实例。
-
创建数据库用户
sid@ONPREM.LOCAL并向该用户授予rds_ad角色。rds_ad角色允许数据库用户使用 Kerberos 身份验证。
-
使用命令 k
init 创建 Kerberos 票证,并为 AD 用户提供密码。
-
你可以使用命令 列表在缓存中列出 Kerberos 票证。Kerberos 票证的默认有效期为 10 小时,您可以将票证续订 7 天。票证有效期到期后,你需要申请一张新的 Kerberos 票证。
-
使用 Kerberos 票证连接到亚马逊 RDS for PostgreSQL 实例,无需指定密码。我们在连接到本地 AD 时使用
特殊终端节点 。与其在终端节点中使用亚马逊域名rds.amazonaws.com,不如使用 亚马逊云科技 管理的微软 AD 的域名。在连接到兼容 Amazon Aurora PostgreSQL 的集群终端节点时,你可以应用同样的方法。
清理
如果您正在测试此解决方案,请完成以下步骤以删除资源并避免收费
-
在
Amazon EC2 控制台 上 ,选择 Linux EC2 实例,然后在实例状态菜单上选择终止实例。 -
在
亚马逊 RDS 控制台 上 ,选择 RDS Postgres 实例,然后在 “操作” 菜单上选择 “删除”。 -
在
亚马逊云科技 Directory Service 控制台 上,选择该目录,然后在操作菜单上选择删除目录。
摘要
在这篇文章中,我们指导您完成了使用活动目录域外的 Linux 客户端使用 Kerberos 身份验证对 Amazon RDS for PostgreSQL 中的数据库用户进行身份验证的过程。你可以将同样的方法应用于兼容亚马逊 Aurora PostgreSQL 的版本。对于采用 Kerberos 进行数据库身份验证的用户,此配置增加了灵活性并降低了复杂性。
如果您有任何意见或问题,请在评论部分分享。
作者简介
Sid Vantair
是 亚马逊云科技 的一名解决方案架构师,负责战略账户。他在关系数据库方面拥有十多年的经验,擅长解决复杂的技术问题以克服客户障碍。工作之余,他珍惜与家人共度时光,培养孩子的好奇心。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。