且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

更新时间:2022-06-07 21:30:25

阿里云支持基于SAML 2.0的SSO(Single Sign On,单点登录),也称为身份联合登录。本文以Microsoft Active Directory (AD) 为例为您介绍企业如何使用自有的身份系统实现与阿里云的SSO并在容器服务ACK集群中进行身份验证。

本文主要介绍 AD FS的安装部署 用户SSO 配置和登录, 如需了解 角色SSO 配置和登录 请参考在AlibabaCloud上,如何使用AD FS进行 【角色SSO】 并完成在容器服务ACK集群中的身份验证

一. 安装部署Microsoft AD

  1. 打开 "Server Manager",单击 “Add roles and features”
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
  2. 单击 “Next”
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

  1. 选择 “Active Director Domain Service” "Add Featrues"
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

  1. 安装完成后点击 “Promote this server to a domain controller”
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
  2. "Add a new forest"
    本示例中我们使用“testdomain.com”

在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

安装完成后,服务器会重启:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

  1. Start Menu -> Active Directory Users and Computers
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
  2. new Org and new Users
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

二. 安装CA

  1. 选择“Add roles and features” 安装CA
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
  2. 点击下一步直到选择"Active Directory Certificate Services"
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

  1. 访问http://localhost/certsrv 确保 CA安装成功
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

三. 安装ADFS

  1. 添加服务账号
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

  1. 安装ADFS
    在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

  1. 测试
    访问https://adserver.testdomain.com/adfs/ls/idpinitiatedsignon

在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

四. 配置AD到阿里云的单点登录

  1. RAM控制台配置ADFS
    首先访问https://adserver.testdomain.com/FederationMetadata/2007-06/FederationMetadata.xml下载 FederationMetadata.xml文件

访问阿里云RAM控制台Settings -> Advanced -> SSO Settings:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

更改"SSO Status" 为 "Enabled" 并且 "Upload" FederationMetadata.xml文件:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

点击“OK”:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

  1. 在ADFS中配置阿里云RAM为可信SAML SP
    AD FS -> Tools -> AD FS Management:

在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
Trust Relationships -> Replying Party Trusts -> Add Replying Trust:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

the URL can be found in ram console:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

Add rules:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

选择"Transform an Incoming Claim":
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

现在我们在AD上有以下组和用户:
Group001:
testuser01 testuser02
Group002:
testuser03 testuser04

我们在RAM控制台也创建相应的组和用户:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

使用子账号testuser01 testuser02 testuser03 testuser04测试登录操作:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

使用testuser01@testdomain.com登录:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

五. 为子账户授权ACK集群操作权限

此时子账户没有任何集群操作权限:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
我们可以创建一个自定义策略允许group01下的用户对命名空间ci有读写权限:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】
授权完成后访问集群资源:
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【用户SSO】

参考子账号RBAC权限配置指导为子账户授权。

参考文档:
https://help.aliyun.com/document_detail/93685.html
https://help.aliyun.com/document_detail/87656.html