配置客户端身份验证

选择文档版本:

本文档介绍了如何使用 UserDefinedAuthentication 自定义资源 (alloydbomni.dbadmin.goog/v1) 在基于 Kubernetes 的 AlloyDB Omni 数据库集群上配置客户端身份验证。您可以通过定义自定义 pg_hba.conf 和 pg_ident.conf 条目(独立于 Active Directory 设置)来自定义客户端身份验证行为,例如限制客户端子网、强制执行 SSL/TLS、指定自定义身份验证方法或配置用户映射。

本文档假定您熟悉如何应用 Kubernetes 清单文件以及如何使用 kubectl 命令行工具。如需了解详情,请参阅命令行工具 (kubectl)。

准备工作

如需配置客户端身份验证,您必须具备以下条件:

  • 部署在 Kubernetes 环境中的 AlloyDB Omni 集群。
  • 在集群中配置的数据库用户和角色。
  • 已安装并配置 kubectl CLI。

应用自定义资源清单

应用以下用户定义的身份验证自定义资源清单:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: UserDefinedAuthentication
metadata:
  name: USER_DEFINED_AUTHENTICATION_NAME
  namespace: DB_CLUSTER_NAMESPACE
spec:
  dbclusterRef:
    name: DB_CLUSTER_NAME
  pgHbaEntries:
    PG_HBA_ENTRIES
  pgIdentEntries:
    PG_IDENT_ENTRIES

替换以下内容:

  • USER_DEFINED_AUTHENTICATION_NAME:UserDefinedAuthentication 自定义资源的名称,例如 DB_CLUSTER_NAME-client-auth。
  • DB_CLUSTER_NAMESPACE:此自定义资源的 Kubernetes 命名空间。该命名空间必须与数据库集群的命名空间一致。
  • DB_CLUSTER_NAME:您的数据库集群的名称(您在创建数据库集群时分配该名称)。
  • PG_HBA_ENTRIES:以字符串列表形式表示的 pg_hba.conf 条目。这些条目会覆盖 pg_hba.conf 中的默认条目。例如,如需限制与特定子网的连接,请使用 - "host all all 192.168.1.0/24 scram-sha-256"。如需了解详情,请参阅 pg_hba.conf 文件。
  • PG_IDENT_ENTRIES:(可选)以字符串列表形式表示的 pg_ident.conf 条目。如需实现用户名映射,请在 pg_hba.conf 文件的 Options 字段中指定 map=。如果您不需要用户名映射,请从清单中省略 pgIdentEntries 字段。如需了解详情,请参阅用户名映射。

验证客户端身份验证规则

如需检查 UserDefinedAuthentication 资源的状态,请运行以下命令:

kubectl get userdefinedauthentication -n DB_CLUSTER_NAMESPACE

验证 STATE 列是否显示 Ready。

如需查看资源详情和条件,请运行以下命令:

kubectl describe userdefinedauthentication USER_DEFINED_AUTHENTICATION_NAME -n DB_CLUSTER_NAMESPACE

更新客户端身份验证规则

如需更新客户端身份验证规则或用户映射,请更新清单文件中的 spec.pgHbaEntries 或 spec.pgIdentEntries,然后重新应用该文件:

kubectl apply -f CLIENT_AUTH_MANIFEST.yaml

AlloyDB Omni 操作器会动态重新加载 PostgreSQL 配置 (pg_ctl reload),而无需重启数据库 Pod 或停机。

删除客户端身份验证规则

如需删除自定义身份验证规则并还原为默认身份验证规则,请运行以下命令:

kubectl delete userdefinedauthentication USER_DEFINED_AUTHENTICATION_NAME -n DB_CLUSTER_NAMESPACE

删除 UserDefinedAuthentication 资源后,AlloyDB Omni 操作器会动态重新加载 pg_hba.conf (pg_ctl reload),以恢复默认身份验证规则,而无需重启数据库 Pod。

后续步骤