使用 Kerberos 身份验证连接到 PostgreSQL - Amazon Relational Database Service

使用 Kerberos 身份验证连接到 PostgreSQL

您可以使用 pgAdmin 界面或命令行界面(如 psql)通过 Kerberos 身份验证连接到 PostgreSQL。有关连接的更多信息,请参阅 连接到运行 PostgreSQL 数据库引擎的数据库实例有关获取连接所需的端点、端口号和其他详细信息的信息,请参阅连接到 PostgreSQL 数据库实例

要使用 pgAdmin 通过 Kerberos 身份验证连接到 PostgreSQL,请执行以下步骤:

  1. 在您的客户端计算机上启动 pgAdmin 应用程序。

  2. Dashboard (控制面板) 选项卡上,选择 Add New Server (添加新服务器)。

  3. Create - Server (创建 - 服务器) 对话框中,在 General (常规) 选项卡上键入名称以在 pgAdmin 中标识该服务器。

  4. Connection (连接) 选项卡上,键入您的 RDS for PostgreSQL 数据库的以下信息。

    • 对于 Host(主机),输入 RDS for PostgreSQL 数据库实例的端点。端点看起来类似于以下所示:

      RDS-DB-instance.111122223333.aws-region.rds.amazonaws.com

      要从 Windows 客户端连接到本地 Microsoft Active Directory,请使用 AWS Managed Active Directory 的域名,而不是主机端点中的 rds.amazonaws.com。例如,假设 AWS Managed Active Directory 的域名为 corp.example.com。然后,对于 Host(主机),按如下方式指定端点:

      RDS-DB-instance.111122223333.aws-region.corp.example.com
    • 对于 Port (端口),输入分配的端口。

    • 对于 Maintenance database (维护数据库),输入客户端将连接到的初始数据库的名称。

    • 对于用户名,键入您在 步骤 7:为您的 Kerberos 主体创建 PostgreSQL 用户 中为 Kerberos 身份验证输入的用户名。

  5. 选择 Save(保存)。

要使用 psql 通过 Kerberos 身份验证连接到 PostgreSQL,请执行以下步骤:

  1. 在命令提示符处,运行以下命令。

    kinit username

    username 替换为用户名。在提示符下,输入在 Microsoft Active Directory 中为用户存储的密码。

  2. 如果 PostgreSQL 数据库实例使用可公开访问的 VPC,请将数据库实例端点的 IP 地址放在 EC2 客户端上的 /etc/hosts 文件中。例如,以下命令获取 IP 地址,然后将其放在 /etc/hosts 文件中。

    % dig +short PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com ;; Truncated, retrying in TCP mode. ec2-34-210-197-118.AWS-Region.compute.amazonaws.com. 34.210.197.118 % echo " 34.210.197.118 PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com" >> /etc/hosts

    如果您从 Windows 客户端使用本地 Microsoft Active Directory,则需要使用特殊终端节点进行连接。在主机终端节点中使用 rds.amazonaws.com Managed Active Directory 的域名,而不是 Amazon 域 AWS。

    例如,假设 AWS Managed Active Directory 的域名为 corp.example.com。为终端节点使用格式 PostgreSQL-endpoint.AWS-Region.corp.example.com,将其放入 /etc/hosts 文件。

    % echo " 34.210.197.118 PostgreSQL-endpoint.AWS-Region.corp.example.com" >> /etc/hosts
  3. 使用以下 psql 命令登录到与 Active Directory 集成的 PostgreSQL 数据库实例

    psql -U username@CORP.EXAMPLE.COM -p 5432 -h PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com postgres

    要从 Windows 客户端使用本地 Active Directory 登录 PostgreSQL 数据库集群,请使用以下 psql 命令以及上一步中的域名 (corp.example.com):

    psql -U username@CORP.EXAMPLE.COM -p 5432 -h PostgreSQL-endpoint.AWS-Region.corp.example.com postgres