赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. ACK Serverless集群
  4. 安全合规
  5. 容器应用安全
  6. ACK对接外部LDAP验证源

ACK对接外部LDAP验证源

  • 容器应用安全
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

随着企业客户上云进程的推进,有些客户有自己的账户体系,而上云后这些体系如何平滑迁移到云上?如何避免大量账号的注册和多份用户名密码的管理?为解决这些问题,本文介绍如何在阿里云上完成对自建LDAP( 轻量目录访问协议)的对接过程。

背景信息

本文涉及到的产品如下:

  • 容器服务Kubernetes版(Container Service for Kubernetes)。

  • 访问控制RAM(Resource Access Management)。

  • 应用身份服务:用于对接您自己的账户系统和阿里云的账户系统的产品。

  • LDAP轻型目录访问协议:用来保存账户信息,实现单点登录。OpenLDAP是LDAP的开源实现。

对接原理

LDAP

阿里云上完成对自建LDAP的对接的原理如下:

  1. IDaaS添加LDAP对接配置,同步LDAP账号进入IDaaS,密码不同步。此时使用LDAP用户名登录需要在IDaaS中重新设置密码(如果您不想使用多套密码,可以使用以下SSO方式)。

  2. IDaaS中添加应用:

    • 应用需要通过访问密钥(AccessKey)对接RAM中有AliyunRAMFullAccess权限的子账号,用于应用对RAM权限的操控。

    • 应用与RAM中另外的一个Role或RAM账号对接,用于赋权给LDAP中用于登录的账号。

    • 应用需要导入IDaaS中已经导入阿里云系统的LDAP账号,允许这些账号使用本应用,权限为应用中对接的Role或RAM账号权限。

  3. 配置IDaaS单点登录对接的LDAP服务。

  4. LDAP用户通过SSO登录阿里云平台,获取IDaaS中某应用里对接的Role或RAM账号权限。

  5. 阿里云账号在容器平台进行PaaS层赋权。

步骤一:环境准备

模拟LDAP环境操作步骤如下。

  1. 执行以下命令搭建OpenLDAP。

    搭建OpenLDAP来模拟LDAP数据源和LDAP的管理工具php-LDAP-admin。

    1. 执行以下命令复制库代码。

      git clone https://github.com/lilongthinker/demo-base-code.git

      预期输出:

      正克隆到 'demo-base-code'...
      remote: Enumerating objects: 12, done.
      remote: Counting objects: 100% (12/12), done.
      remote: Compressing objects: 100% (10/10), done.
      remote: Total 12 (delta 0), reused 9 (delta 0), pack-reused 0
      展开对象中: 100% (12/12), 完成.
    2. 检查目录结构如下,并创建新的YAML文件如下。

      cd demo-base-code/01_ldap
      01_ldap git:(master) tree ./
      ./
      ├── ingress-phpadmin.yaml
      ├── ldap-deploy.yaml
      ├── ldap-secret.yaml
      ├── ldap-service.yaml
      ├── phpldapadmin-deploy.yaml
      └── phpldapadmin-svc.yaml
      
      0 directories, 6 files
      ################################################ 
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        labels:
          ingress-controller: nginx
        name: ldap-ui
        namespace: public-service
      spec:
        ingressClassName: nginx
        rules:
          - host: phpldap.example.com # 需替换为您实际的域名。
            http:
              paths:
                - backend:
                    service:
                      name: phpldapadmin
                      port:
                        number: 8080
                  path: /
                  pathType: ImplementationSpecific
      ################################################
    3. 执行以下命令创建命名空间。

      01_ldap git:(master) kubectl create ns public-service

      预期输出:

      namespace/public-service created
    4. 执行以下命令部署应用。

      01_ldap git:(master) kubectl apply -f ./

      预期输出:

      ingress.extensions/ldap-ui created
      deployment.extensions/ldap created
      secret/ldap-secret created
      service/ldap-service created
      deployment.extensions/phpldapadmin created
      service/phpldapadmin created
  2. 初始化账号。

    1. 登录php-LDAP-admin。

      1. 执行以下命令获取ingress域名和地址。

        01_ldap_with_ui git:(master) ✗ kubectl get ing
        NAME      HOSTS                 ADDRESS          PORTS   AGE 
        ldap-ui   phpldap.example.com   121.xx.xxx.xxx   80      45s
      2. 拷贝上述获取的ingress域名至浏览器中,然后用默认的DN和密码登录php-LDAP-admin控制台页面。

        说明
        • 默认的DN:cn=admin,dc=example,dc=org。

        • 默认的密码:admin。

        • 如果出现/var/lib/php/sessions无权限访问的情况,需要通过chmod修改路径权限。

    2. 创建组织和账号。

      1. 在php-LDAP-admin控制台左侧导航栏,单击Create new entry here,在Create Object页面,单击Generic: Organisational Unit,然后单击Create Object。unit

      2. 输入组织名称,然后单击Create Object。本文组织示例名称为dev。

      3. 在php-LDAP-admin控制台左侧导航栏,单击上步中创建的ou=dev,单击Create a child entry,然后单击Courier Mail:Account,配置创建用户信息,然后单击Create Object。Account

        重要

        php-LDAP-admin的账号默认生成的名字中间会有空格,请注意删除空格。

步骤二:配置IDaaS

  1. 登录应用身份管理控制台,单击免费创建实例。

  2. 在创建实例面板中,输入实例描述,并勾选相应协议,然后单击创建。

  3. 在实例列表中,选择已创建的目标实例进入云身份服务快速入门页面,然后单击绑定 OpenLDAP。

  4. 在绑定 OpenLDAP的连接 LDAP页面,设置LDAP的配置信息,然后单击下一步。

    关于绑定OpenLDAP的更多信息,请参见绑定OpenLDAP。

    类别

    配置项

    说明

    基础信息

    显示名称

    自定义名称。

    服务器配置

    服务器地址

    此处为服务idap-service的External IP。获取方法如下。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

    2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择网络 > 服务。

    3. 找到名为idap-service的服务,并记录其External IP。

    LDAP域配置

    管理员账号

    默认的管理员DN为:cn=admin,dc=example,dc=org。

    管理员密码

    密码为:admin。

  5. 在选择场景页面,设置场景信息,然后单击完成创建。关于场景设置更多信息,请参见绑定OpenLDAP。

  6. 在字段映射页面,配置字段映射,本例只需配置用户名和邮箱两个字段,然后单击保存并同步。

    说明
    • 字段映射时,如果映射规则为选择字段,则需要根据使用需求灵活选择IDaaS的字段,例如,本例中账户名对应OpenLDAP中的CN,也可根据需求选择其他字段进行映射。

    • 可以选择一个字段设为标识。以某一字段作为映射的唯一标识时,如果两侧字段的值相同,且账户无绑定关系,则绑定账户并修改数据;如果值不相同,则创建并绑定账户。

  7. 以上信息保存同步后,在左侧导航栏选择账户 > 账户与组织,可看到OpenLDAP的组织和用户信息都已成功同步。

  8. 在左侧导航栏选择登录,在通用配置页签下设置登录方式,本例设置PC和移动端的登录方式均为ack-ldap。

步骤三:查看效果

在左侧导航栏选择身份提供方 > 委托认证,查看并复制委托链接,将其拷贝至浏览器,出现阿里云IDaaS的登录页面并成功登录,说明IDaaS配置成功。

相关操作

关于配置IDaaS账户单点登录的操作,请参见创建应用、首次单点登录。

相关文章

ACK对接外部LDAP验证源 2025-04-18 14:52

随着企业客户上云进程的推进,有些客户有自己的账户体系,而上云后这些体系如何平滑迁移到云上?如何避免大量账号的注册和多份用户名密码的管理?为解决这些问题,本文介绍如何在阿里云上完成对自建LDAP( 轻量目录访问协议)的对接过程。 背景信息

为应用导入阿里云KMS服务凭据 2025-04-18 14:52

您可以在应用Pod中以文件系统或Secret挂载的形式,将存储在阿里云KMS凭据管家中的密文引入到应用程序中使用,避免敏感数据在应用开发构建流程中传播和泄露。默认情况下,您直接从文件系统读取密钥和阿里云KMS凭据管家之间的直接交互可能存在兼容性问题,您可以通过ack-secret-manager或c

为应用导入阿里云OOS加密参数 2025-04-18 14:52

您可以在应用Pod中以文件系统或Secret挂载的形式,将存储在阿里云OOS加密参数中的密文引入到应用程序中使用,避免敏感数据在应用开发构建流程中传播和泄露。默认情况下,您直接从文件系统读取密钥和阿里云OOS加密参数之间的直接交互可能存在兼容性问题,您可以通过ack-secret-manager或c

使用Keycloak OIDC Provider进行身份认证 2025-04-18 14:52

本文介绍如何在ACK托管集群中部署Keycloak服务,并将Keycloak作为K8s OpenID Connect的认证服务器,实现在ACK托管集群上的身份认证。 前提条件 已创建Kubernetes托管版集群,且集群为1.22及以上版本。

使用Notation和Ratify进行OCI制品的加签和验签 2025-04-18 14:52

您可以通过notation-alibabacloud-secret-manager插件基于阿里云KMS管理的密钥对容器镜像服务ACR管理的OCI制品进行加签,然后在集群中安装配置Ratify进行验签,以确保集群中部署的都是有合法签名的镜像,不符合签名的镜像将会被拦截以提升系统安全性。 相关概念 no

使用Vault作为KMS服务 2025-04-18 14:52

Vault是一个基于身份的密钥管理和数据加密系统,提供对Token、密码、证书、API Key等常见敏感凭据的安全存储和控制,可有效解决应用系统中对敏感信息的硬编码问题。本文介绍如何在ACK Serverless集群中部署和使用Vault。 前提条件

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号