为 AWS 北京区管理控制台集成 ADFS 访问

阅读数:12 2019 年 11 月 20 日 08:00

为AWS北京区管理控制台集成ADFS访问

在我们使用 AWS 的过程中, AWS IAM 是我们接触的第一个服务, 它具有强大的功能,可使您在 AWS IAM 中通过管理用户, 用户组, 策略, 角色, 证书, 密钥等来灵活而精确的控制对 AWS 服务和资源的访问和权限. 同时在很多企业内部, 一般都已经部署了自己的用户管理及授权系统, 如何将 AWS 的用户管理及授权纳入现有系统则成为企业的想要解决的一个问题. 本文将介绍如何将企业内部 Windows 活动目录 (Active Directory) 和 AWS 通过 ADFS(Active Directory Service) 进行集成, 从而实现在活动目录中管理用户对 AWS 服务和资源的访问和授权.

在 AWS IAM 中, 我们提供了对 SAML 的支持, 这个功能可以让我们可以和支持该标准的身份提供商进行联合从而实现单点登陆. 对于很多使用微软活动目录的企业, 我们可以使用 Windows 自带的 ADFS 进行和 AWS IAM 的集成.

工作原理:

在我们进行详细配置之前, 可以先看一下工作原理:

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    首先用户访问和 AWS 做了集成的 ADFS 站点 ( https://ADFS/adfs/ls/IdpInitiatedSignOn.aspx )
  2. 复制代码
    用户在登陆页面输入用户名及密码, 提交以后 ADFS 将联系 AD 进行用户验证
  3. 复制代码
    用户浏览器收到 ADFS 返回的 SAML 断言
  4. 复制代码
    用户浏览器将用户断言 Post 到 AWS 的 Sign-in SAML 终结点 (https://signin.amazonaws.cn/saml), Sign-in 将调用 AssumeRoleWithSAML API 接口请求临时安全凭证并使用其构建管理控制台的登陆链接
  5. 复制代码
    用户浏览器转向使用构建的登陆链接进行登陆

配置活动目录:

  1. 复制代码
    在活动目录中及建立用户 adfsuser, 邮件地址设为 adfsuser@examplecom
  2. 复制代码
    在活动目录中建立两个组 AWSBJS-Admin, AWSBJS-ReadOnly, 这两个组会和 AWS 中新建的角色进行匹配
  3. 复制代码
    将用户 adfsuser 添加到 AWSBJS-Admin, AWSBJS-ReadOnly 这两个组中

安装部署 Active Directory Federation Service

我们可以参考如下的文档部署 ADFS 服务

https://technet.microsoft.com/en-us/library/dn486775.aspx

导出 SAML Metadata Document

访问 ADFS 服务器并导出 SAML Metadata Document (将 ADFS 换成你 ADFS 服务器的名称)

https://ADFS/FederationMetadata/2007-06/FederationMetadata.xml

配置 AWS

  1. 复制代码
    登录 AWS 管理控制台 https://console.amazonaws.cn/
  2. 复制代码
    在 IAM 服务中, 点击身份提供商, 选择 SAML, 导入从 ADFS 服务器上导出的 SAML Metadata

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    记录下提供商 ARN 记录

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    新建 IAM 角色 ADFSBJS-Admin 和 ADFSBJS-ReadOnly [注意选择 授予 SAML 提供商 Web 单点登录 (Web SSO) 访问权限, 这两个角色会和活动目录中的新建的用户组 AWSBJS-Admin 和 AWSBJS-ReadOnly 对应]

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    记录各个角色的 ARN

为AWS北京区管理控制台集成ADFS访问

配置 ADFS 将 AWS 作为 信赖方信任

  1. 复制代码
    打开 ADFS 管理界面, 选择信任关系 - 信赖方信任

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    右键点击信赖方信任, 点击 添加信赖方信任

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    点击 启动

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    选择 导入有关在线或在本地网络发布的信赖方的数据, 在联合元数据地址栏输入以下地址, 点击 下一步

https://signin.amazonaws.cn/static/saml-metadata.xml

  1. 复制代码
    在 显示名称 中输入 AWS China, 然后点击下一步

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    选择 不配置多重身份验证, 点击 下一步:

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    选择 允许所有用户访问此信赖方, 点击下一步

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    点击下一步:

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    点击 关闭

为AWS北京区管理控制台集成ADFS访问

  1. 点击 关闭, 并打开编辑声明规则

为AWS北京区管理控制台集成ADFS访问

为 AWS 信赖方信任 建立 声明规则

  1. 复制代码
    在编辑声明规则中, 点击 添加规则

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    选择 转化传入声明, 点击下一步

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    声明规则名称使用 NameId, 传入声明类型 选择 Windows 帐户名, 传出声明类型 选择 名称 ID, 传出名称 ID 格式 选择 永久标识符, 点击完成

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    再次点击 添加规则

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    选择以声明方式发送 LDAP 特性, 点击 下一步

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    声明规则名称 输入 RoleSessionName, 特性存储选择 Active Directory, LDAP 特性 选择 E-Mail-Address, 传出声明类型输入 https://aws.amazon.com/SAML/Attributes/RoleSessionName , 点击完成

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    再次点击 添加规则

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    选择 使用自定义规则发送声明, 点击 下一步

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    声明规则名称输入 Get AD Groups, 自定义规则输入以下文本 (这一步用来取出登录用户所在的 AD 用户组, 并将其传入到临时声明 http://temp/variable 中), 点击完成

c:[Type == “ http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname”, Issuer == “AD AUTHORITY”]

=> add(store = “Active Directory”, types = (“ http://temp/variable”), query = “;tokenGroups;{0}”, param = c.Value);

为AWS北京区管理控制台集成ADFS访问

  1. 再次点击 添加规则

为AWS北京区管理控制台集成ADFS访问

  1. 选择 使用自定义规则发送声明, 点击下一步

为AWS北京区管理控制台集成ADFS访问

  1. 声明规则名称 输入 Roles, 自定义规则中输入以下文本 (这部分主要是用来映射 AD 中的用户组 和 AWS 中的角色之间的对应关系, 其中红色部分需要根据我们前面所建的 AD 用户组名称 和 身份提供商的 ARN 和角色的 ARN 调整), 点击完成

c:[Type == “ http://temp/variable”, Value =~ “(?i)^AWSBJS-“]

=> issue(Type = “ https://aws.amazon.com/SAML/Attributes/Role”, Value = RegExReplace(c.Value, “AWSBJS-“, “arn:aws-cn:iam::761602622223:saml-provider/ADFS,arn:aws-cn:iam::761602622223:role/ADFSBJS-“));

为AWS北京区管理控制台集成ADFS访问

  1. 重新启动 Active Directory Federation Service

为AWS北京区管理控制台集成ADFS访问

测试配置效果

  1. 复制代码
    访问 https://ADFS/adfs/ls/IdpInitiatedSignOn.aspx (将 ADFS 换成你 ADFS 服务器的名称)

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    输入用户名和密码

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    验证以后, 服务器将根据它所在的组返回它拥有的角色, 用户选择不同的角色就可以拿到不同角色的权限

为AWS北京区管理控制台集成ADFS访问

  1. 复制代码
    登录以后在右上角可以看到当前用户及其所使用的角色信息

为AWS北京区管理控制台集成ADFS访问

总结:

上述是将 ADFS 和 AWS 管理控制台集成从而实现使用 AD 账号系统登录访问 AWS 管理控制台的详细流程. 同时我们还可以通过调整 ADFS 本身的身份验证策略来实现多重验证等功能.

本文转载自 AWS 技术博客。

原文链接:
https://amazonaws-china.com/cn/blogs/china/adfs-bjs/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布