启用LDAP认证
为Kubernetes上的Redis Enterprise启用LDAP认证。
Redis企业版软件的LDAP支持
Redis Enterprise 软件支持通过基于角色的访问控制(RBAC)进行LDAP认证和授权。您可以将LDAP组映射到Redis Enterprise角色,以控制对数据库和集群管理器UI的访问。有关LDAP如何与Redis Enterprise配合使用的更多详细信息,请参阅LDAP认证。
Redis Enterprise for Kubernetes 支持使用 RedisEnterpriseCluster
(REC) 自定义资源启用和配置 LDAP 认证。目前,Redis Enterprise 集群 (REC) 仅支持与 LDAP 服务器相关的配置,例如服务器地址、连接详细信息、凭据和查询配置。
要将LDAP组映射到Redis Enterprise访问控制角色,您需要使用Redis Enterprise的API或管理控制台。
启用LDAP
要为您的REC启用LDAP,请在RedisEnterpriseCluster
自定义资源中使用.spec.ldap
字段。
以下 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
键,用于绑定密码。
将上述命令中的
替换为您自己的值。 - 与
-
在
RedisEnterpriseCluster
自定义资源的.spec.ldap.bindCredentialsSecretName
字段中引用秘密名称。spec: ldap: bindCredentialsSecretName: <bind-secret-name>
LDAPS 或 STARTTLS 协议
除了普通的LDAP协议外,Redis Enterprise Software还支持LDAPS和STARTTLS协议,用于与LDAP服务器进行安全通信。
要启用这些协议之一,请编辑RedisEnterpriseCluster
自定义资源中的spec.ldap.protocol
字段:
启用 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
自定义资源位于同一命名空间内。 - 包含一个带有PEM编码的CA证书的
cert
键(例如cacert.pem
)。
将上述命令中的
<placeholders>
替换为您自己的值。 - 与
-
在
RedisEnterpriseCluster
自定义资源的spec.ldap.caCertificateSecretName
字段中引用密钥名称。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>
替换为您自己的值。 - 与
-
在
RedisEnterpriseCluster
自定义资源的.spec.certificates.ldapClientCertificateSecretName
字段中引用秘密名称,将
替换为您自己的值。spec: certificates: ldapClientCertificateSecretName: <client-secret-name>
已知限制
Redis Enterprise Software 无法解析带有 .local
后缀的 DNS 名称。
如果您的 LDAP 服务器位于同一个 Kubernetes 集群中并通过 Service 对象暴露,避免使用诸如 openldap.openldap.svc.cluster.local
的地址。相反,使用简写地址,例如 openldap.openldap.svc
。
下一步
要将LDAP组映射到Redis Enterprise访问控制角色,您需要使用Redis Enterprise的API或管理控制台。
有关LDAP如何与Redis Enterprise配合使用的更多详细信息,请参阅LDAP认证。