启用 LDAP 身份验证
为 Kubernetes 的 Redis Enterprise 启用 LDAP 身份验证。
Redis Enterprise 软件的 LDAP 支持
Redis Enterprise 软件通过基于角色的访问控制(RBAC) 支持 LDAP 身份验证和授权。您可以将 LDAP 组映射到Redis Enterprise 角色,以控制对数据库和 Cluster Manager UI 的访问。有关 LDAP 如何与 Redis Enterprise 配合使用的详细信息,请参阅LDAP 身份验证。
Redis Enterprise for Kubernetes 支持使用 (REC) 自定义资源启用和配置 LDAP 身份验证RedisEnterpriseCluster。目前,Redis Enterprise 集群 (REC) 仅支持与 LDAP 服务器相关的配置,例如服务器地址、连接详细信息、凭据和查询配置。
要将LDAP 组映射到 Redis Enterprise 访问控制角色,您需要使用 Redis Enterprise API或管理控制台。
启用 LDAP
要为您的 REC 启用 LDAP,请使用自定义资源.spec.ldap中的字段RedisEnterpriseCluster。
以下RedisEnterpriseCluster示例资源启用基本 LDAP 配置:
apiVersion: app.redislabs.com/v1
kind: RedisEnterpriseCluster
metadata:
name: rec
spec:
nodes: 3
ldap:
protocol: LDAP
servers:
- host: openldap.openldap.svc
port: 389
bindCredentialsSecretName: ldap-bind-credentials
cacheTTLSeconds: 600
enabledForControlPlane: true
enabledForDataPlane: true
authenticationQuery:
template: cn=%u,ou=default,dc=example,dc=org
authorizationQuery:
attribute: memberOf
有关可用字段的完整详细信息,请参阅RedisEnterpriseCluster API 参考。
绑定凭证
对于需要对客户端查询进行身份验证的 LDAP 服务器,将绑定凭据存储在机密中并在RedisEnterpriseCluster自定义资源中引用它们。
-
创建一个秘密来存储绑定凭据。
kubectl -n <rec-namespace> create secret generic <bind-secret-name> \ --from-literal=dn='<disinguished-name>' \ --from-literal=password=<password>这个秘密必须:
- 与自定义资源位于同一命名空间内
RedisEnterpriseCluster。 - 包含一个
dn具有执行查询的用户可分辨名称的密钥(例如cn=admin,dc=example,dc=org)。 - 包含
password绑定密码的密钥。
<placeholders>将上面命令中的替换为您自己的值。 - 与自定义资源位于同一命名空间内
-
.spec.ldap.bindCredentialsSecretName在自定义资源的字段中引用秘密名称RedisEnterpriseCluster。spec: ldap: bindCredentialsSecretName: <bind-secret-name>
LDAPS 或 STARTTLS 协议
除了普通的 LDAP 协议之外,Redis Enterprise Software 还支持 LDAPS 和 STARTTLS 协议,以便与 LDAP 服务器进行安全通信。
要启用其中一个协议,请编辑自定义资源spec.ldap.protocol中的字段RedisEnterpriseCluster:
使能够LDAPS
spec:
ldap:
protocol: LDAPS
默认端口:636
使能够STARTTLS
spec:
ldap:
protocol: STARTTLS
默认端口:389
CA 证书
要使用自定义 CA 证书验证 LDAP 服务器证书,请将 CA 证书存储在机密中并在RedisEnterpriseCluster自定义资源中引用该机密。
-
创建一个秘密来保存 CA 证书。
kubectl -n <rec-namespace> create secret generic <ca-secret-name> \ --from-file=cert=<ca-cert>.pem这个秘密必须:
- 与自定义资源位于同一命名空间内
RedisEnterpriseCluster。 - 包含
cert带有 PEM 编码的 CA 证书的密钥(例如cacert.pem)。
<placeholders>将上面命令中的替换为您自己的值。 - 与自定义资源位于同一命名空间内
-
spec.ldap.caCertificateSecretName在自定义资源的字段中引用秘密名称RedisEnterpriseCluster。spec: ldap: caCertificateSecretName: <ca-secret-name>
客户端证书
要使用 LDAP 客户端证书,请将证书存储在机密中并在RedisEnterpriseCluster自定义资源中引用该机密。
-
创建一个秘密来保存客户端证书。
kubectl -n <rec-namespace> create secret generic <client-secret-name> \ --from-literal=name=ldap_client \ --from-file=certificate=<client-cert-file> \ --from-file=key=<private-key-file>这个秘密必须:
- 与自定义资源位于同一命名空间内
RedisEnterpriseCluster。 - 包含
name明确设置为 的键ldap_client。 - 包含
certificate公钥的密钥(例如cert.pem)。 - 包含
key私钥的密钥(例如key.pem)。
<placeholders>将上面命令中的替换为您自己的值。 - 与自定义资源位于同一命名空间内
-
.spec.certificates.ldapClientCertificateSecretName在自定义资源的字段中引用秘密名称RedisEnterpriseCluster,并用您自己的值替换<placeholders>。spec: certificates: ldapClientCertificateSecretName: <client-secret-name>
已知限制
Redis Enterprise Software 无法解析带有.local后缀的 DNS 名称。如果您的 LDAP 服务器位于同一个 Kubernetes 集群中并通过 Service 对象公开,请避免使用诸如 之类的地址openldap.openldap.svc.cluster.local。相反,请使用诸如 之类的短格式地址openldap.openldap.svc。
后续步骤Next steps
要将LDAP 组映射到 Redis Enterprise 访问控制角色,您需要使用 Redis Enterprise API或管理控制台。
有关 LDAP 如何与 Redis Enterprise 配合使用的详细信息,请参阅LDAP 身份验证。