UserDefinedAuthentication 自定义资源 (alloydbomni.dbadmin.goog/v1) 在基于 Kubernetes 的 AlloyDB Omni 数据库集群上配置客户端身份验证。您可以通过定义自定义 pg_hba.conf 和 pg_ident.conf 条目(独立于 Active Directory 设置)来自定义客户端身份验证行为,例如限制客户端子网、强制执行 SSL/TLS、指定自定义身份验证方法或配置用户映射。
本文档假定您熟悉如何应用 Kubernetes 清单文件以及如何使用 kubectl 命令行工具。如需了解详情,请参阅命令行工具 (kubectl)。
准备工作
如需配置客户端身份验证,您必须具备以下条件:
- 部署在 Kubernetes 环境中的 AlloyDB Omni 集群。
- 在集群中配置的数据库用户和角色。
- 已安装并配置
kubectlCLI。
应用自定义资源清单
应用以下用户定义的身份验证自定义资源清单:
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。