启用 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自定义资源中引用它们。

  1. 创建一个秘密来存储绑定凭据。

    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>将上面命令中的替换为您自己的值。

  2. .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自定义资源中引用该机密。

  1. 创建一个秘密来保存 CA 证书。

    kubectl -n <rec-namespace> create secret generic <ca-secret-name> \
        --from-file=cert=<ca-cert>.pem
    

    这个秘密必须:

    • 与自定义资源位于同一命名空间内RedisEnterpriseCluster
    • 包含cert带有 PEM 编码的 CA 证书的密钥(例如cacert.pem)。

    <placeholders>将上面命令中的替换为您自己的值。

  2. spec.ldap.caCertificateSecretName在自定义资源的字段中引用秘密名称RedisEnterpriseCluster

    spec:
      ldap:
        caCertificateSecretName: <ca-secret-name>
    

客户端证书

要使用 LDAP 客户端证书,请将证书存储在机密中并在RedisEnterpriseCluster自定义资源中引用该机密。

  1. 创建一个秘密来保存客户端证书。

    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>将上面命令中的替换为您自己的值。

  2. .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 身份验证

给此页面评分
返回顶部 ↑