本文介绍如何配置ECS实例的AD域控制器,以及如何将MyBase for PostgreSQL实例接入域。

前提条件

MyBase for PostgreSQL接入自建域必须使用内网,ECS需要满足以下条件:
  • AD域控制器所在ECS与目标MyBase for PostgreSQL实例处于相同VPC。
  • ECS安全组放通MyBase的内网IP。详情请参见添加安全组规则
  • ECS实例系统防火墙默认关闭,如果您开启过,ECS实例系统防火墙需要放通MyBase的内网IP。

背景信息

活动目录AD(Active Directory),是微软提供的目录服务。目录是一种分层结构,用于存储同一局域网络上对象的信息。在目录中可以收录公司的电脑账号、用户账号、组等以提供更好的安全性和更便捷的管理能力。MyBase for PostgreSQL提供接入自建AD域功能,用于企业中心化管理,同时提升用户访问安全性。
说明 MyBase for PostgreSQL对AD域服务信息的修改是通过修改MyBase for PostgreSQL实例上pg_hba.conf文件实现的,修改或导入AD域服务信息的内容即修改实例的pg_hba.conf文件,所以MyBase管理控制台除了可以配置AD域服务之外,还支持其他常用的pg_hba.conf文件配置,具体参考:PostgreSQL pg_hba.conf介绍

步骤一:在ECS实例中配置AD域控制器

  1. 远程登录ECS的Windows Server 2016系统。
    说明 AD域控制器需要建立在Windows Server操作系统之上,建议使用Windows Server 2016及以上版本,本示例以Windows Server 2016为例,建立可供MyBase使用的AD域控制器。
  2. 搜索服务器管理器并打开。
  3. 仪表盘中单击添加角色和功能
    添加角色和功能
  4. 添加角色和功能向导窗口中进行如下配置。
    向导页签 设置说明
    开始之前 保持默认配置。
    安装类型 保持默认配置。
    服务器选择 保持默认配置。
    服务器角色
    • 选中Active Directory 域服务,并在弹出的对话框中单击添加功能
    • 选中DNS 服务器,并在弹出的对话框中单击添加功能
      说明 如果提示您电脑不是固定IP,建议您修改电脑为固定IP,防止IP自动变更导致DNS服务器无法使用。
    功能 保持默认配置。
    AD DS 保持默认配置。
    DNS 服务器 保持默认配置。
    确认 单击安装按钮开始安装服务。
  5. 等待安装完成后,单击关闭按钮关闭配置向导。
  6. 服务器管理器页面左侧导航栏单击AD DS,然后在右上方单击更多
    AD DS更多
  7. 所有服务器任务详细信息窗口中单击将此服务器提升为域控制器
    将此服务器提升为域控制器
  8. Active Directory 域服务配置向导窗口中进行如下配置。
    向导页签 设置说明
    部署配置 选择添加新林,设置根域名,本示例以pgsqldomain.net为例。添加新林,设置域名
    域控制器选项 设置目录服务还原模式(DSRM)密码设置还原密码
    服务器选择 取消选中创建 DNS 委派创建 DNS 委派
    其他选项 保持默认配置。
    路径 保持默认配置。
    查看选项 保持默认配置。
    先决条件检查 单击安装按钮开始安装服务。
    说明 设置完成后需要重启ECS服务器,请等待重启完成后再进行后续步骤。

步骤二:在AD域控制器中添加管理员用户

  1. 远程登录ECS服务器,搜索服务器管理器并打开。
  2. 服务器管理器左侧导航栏单击AD DS,然后在右侧目标域控制器上单击右键,选择Active Directory 用户和计算机添加ad用户
  3. pgsqldomain.net > Users上单击右键,选择新建 > 用户添加用户
  4. 置登录的用户名称,单后单击下一步新建对象-用户
  5. 设置登录密码,勾选密码永不过期,最后单击下一步完成设置密码
  6. 双击新创建的用户,将用户加入Domain Admins管理员组中。
    加入管理员组
    添加后结果如下:添加管理员组结果

步骤三:AD域控制器中添加普通用户

说明 添加普通用户步骤与步骤二:在AD域控制器中添加管理员用户方法相同,普通用户不需要加入Domain Admins管理员组。

ldapuser用户为例,作为AD域控制器中的普通用户,用于登录MyBase for PostgreSQL实例。

步骤四:配置ECS实例安全组规则

  1. 登录ECS管理控制台
  2. 在左侧导航栏,选择实例与镜像 > 实例
  3. 在顶部菜单栏左上角处,选择地域。
  4. 实例列表页面中,单击目标实例ID。
  5. 在左侧导航栏单击本实例安全组,然后在右侧单击配置规则
    说明 域控制器需要开放较多端口,因此不建议和其他ECS实例共享安全组,建议创建单独的安全组使用。
  6. 入方向页签内单击手动添加,允许如下端口访问ECS实例。
    协议类型 端口范围 说明
    TCP 88 Kerberos认证协议端口。
    TCP 135 远程过程调用协议(RPC)端口。
    TCP/UDP 389 轻型目录访问协议(LDAP)端口。
    TCP 445 通用互联网文档系统协议(CIFS)端口。
    TCP 3268 Global Catalog端口。
    TCP/UDP 53 DNS端口。
    TCP 49152~65535 连接的默认动态端口范围。输入格式为:49152/65535。

步骤五:配置MyBase for PostgreSQL实例

  1. 登录云数据库专属集群控制台
  2. 在页面左上角,选择目标地域。
  3. 在左侧单击实例列表 > PostgreSQL,然后单击目标实例操作详情,进入RDS控制台。
  4. 在左侧单击账号管理,创建名为ldapuser的用户账号。具体操作请参见创建账号dbadminrds账号
    说明 此处创建的账号名需要与AD域中创建的普通账号名相同,密码可以不一样,当启用AD域控制用户访问时,校验AD域控制器中该账号对应的密码,当不启用AD域控制用户访问时,系统校验RDS管理控制台的账号管理中设置的用户密码。
  5. 选择AD域服务信息页签。
    首次打开AD域服务信息页签,系统默认创建了以下两条记录:
    host    all            all    0.0.0.0/0    md5
    host    replication    all    0.0.0.0/0    md5

    该默认配置可以删除或修改。

  6. 单击第一条默认记录后的编辑,修改第一条默认记录,填写如下参数取值。
    说明 下表中仅简单介绍本示例使用的取值样例及含义,更多参数取值含义及配置方法请参见PostgreSQL官方文档
    参数 取值示例 说明
    优先级 0 表示该条记录的优先级,0优先级最高,系统自动生成。
    TYPE host 支持配置以下取值:
    • host:该条记录验证TCP/IP连接,包括SSL连接和非SSL连接。
    • hostssl:该条记录只验证通过SSL建立的TCP/IP连接。
      说明 要使用此参数,请打开SSL链路加密,具体请参见SSL链路加密
    • hostnossl:该条记录只验证通过非SSL建立的TCP/IP连接。
    DATABASE all 允许用户访问的数据库,all表示允许用户访问所有数据库。如果配置多个,可通过逗号(,)分隔。
    USER ldapuser 允许哪些用户访问数据库,填写AD域中创建的用户名。如果配置多个,可通过逗号(,)分隔。
    说明 配置在AD域中创建的普通用户的用户名。
    ADDRESS 0.0.0.0/0 允许用户从哪个或哪些IP访问数据库,0.0.0.0/0表示允许用户从任意IP地址访问数据库。
    MASK 掩码。如果ADDRESS为IP地址,可以通过此参数指定IP地址的掩码。
    METHOD ldap
    说明 LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)是设计用来访问目录数据库的一个协议,本示例以LDAP为例。
    认证方法,支持:
    • trust
    • reject
    • scram-sha-256
    • md5
    • password
    • gss
    • sspi
    • ldap
    • radius
    • cert
    • pam
    说明 手动输入时请注意此处使用英文小写字母。
    OPTION ldapserver=<ECS服务器的私网IP> ldapbasedn="CN=Users,DC=pgsqldomain,DC=net" ldapbinddn="CN=<AD域中创建的管理员用户名>,CN=Users,DC=pgsqldomain,DC=net" ldapbindpasswd="<AD域中创建的管理员用户密码>" ldapsearchattribute="sAMAccountName" 认证方式对应的可选参数。本示例使用LDAP认证,需要配置。更多参数解释,请参见LDAP Authentication
  7. 在上一步配置的AD域服务记录后单击添加,新增如下记录。
    host    all     all    0.0.0.0/0    md5
  8. 填写完成后单击确定,最后单击提交按钮
    说明 提交后系统状态将变为维护实例中,预计时长约1分钟,修改后的新配置仅对新连接生效,对于旧连接,需要您断开已有连接后重新连接才能生效。
  9. (可选)除手动添加AD域服务信息配置外,RDS PostgreSQL还支持通过导入方式批量设置AD域服务信息。导入AD域服务信息
    导入方式支持以下三总种模式
    • 覆盖已有服务信息
    • 追加服务信息(优先度最高):在已有服务信息前追加AD域记录,优先级高于已有服务信息。
    • 追加服务信息(优先度最低):在已有服务信息最后追加AD域记录,优先级低于已有服务信息。
    配置格式:
    TYPE|DATABASE|USER1|ADDRESS|MASK|METHOD|OPTION

    请在编辑AD域的编辑框中按顺序填写需要导入的服务信息。各参数取值请参见参数说明

    配置示例:
    host|all|<AD域中创建的普通用户的用户名>|0.0.0.0/0||ldap|ldapserver=<ECS服务器的私网IP> ldapbasedn="CN=Users,DC=pgsqldomain,DC=net" ldapbinddn="CN=<AD域中创建的管理员用户名>,CN=Users,DC=pgsqldomain,DC=net" ldapbindpasswd="<AD域中创建的管理员用户密码>" ldapsearchattribute="sAMAccountName"

步骤六:测试连接

使用PostgreSQL命令行终端连接RDS。

说明 连接RDS PostgreSQL数据库可以通过多种方式,本示例以PostgreSQL命令行终端为例,连接前需要安装PostgreSQL客户端,具体方法及其他连接方式,请参见连接PostgreSQL实例

使用如下命令连接RDS PostgreSQL数据库,使用在AD域控制器中普通用户的用户名及密码。

psql -h <实例连接地址> -U ldapuser -p 5432 -d postgres