
背景
前段时间在拜访客户时,客户提了一个问题:如何结合企业内部既有的身份管理/鉴权体系,更加灵活、经济的实现对 AWS 资源实现分角色管理的问题 ?
该客户目前在 AWS 多个 Region 部署了业务系统,并且计划通过 AWS Direct connect 建立 Region 之间的专线连接,通过 AWS 的全球架构支持公司业务的快速扩展。客户的技术运营团队根据各协作团队的分工建立了不同权限的 IAM 用户,通过制定相应的 IAM 策略,各个协作团队可以管理对应的云端资源 。在实际工作中由于人员在项目之间频繁调整,及各种原因的人员流动等因素,导致 AWS IAM 用户需要频繁调整。
就该客户情况而言,如果人员角色的任何变化只需在 AD 账户体系就能完成管理并自动映射到 AWS 权限体系中, 客户就能平滑遵循企业内部的既有合规体系只需要管理 AD 帐号统一管理云端与本地的资源, 。
为解决这类的问题,通常可以部署 ADFS 实现 IAM 与本地活动目录间的联合身份认证,具体可参考这篇博客内容:https://aws.amazon.com/cn/blogs/china/adfs-bjs/
今天介绍另外一种实现方式,通过 AD Connector 与本地活动目录整合,使用本地活动目录中的用户登录 AWS Console 页面。以下是基于 AWS Global 环境中的测试部署过程:
一.AD 连接器( AD Connector)是什么
AD 连接器 AWS 托管目录服务中的一种目录服务类型,用于将本地 Microsoft Active Directory 连接到 AWS 云端,无需进行复杂的目录同步设置或部署托管联合基础架构的组件。
AD 连接器将登录请求转发到本地 Active Directory 域控制器进行身份验证,并使应用程序能够查询目录中的数据。用户可以使用其现有的企业凭据登录 AWS 应用程序,如 Amazon WorkSpaces,Amazon WorkDocs 或 Amazon WorkMail。授予适当的 IAM 权限,还可以访问 AWS 管理控制台并管理 AWS 资源,如 Amazon EC2 实例或 Amazon S3 存储桶。

如上图,AD Connector 与企业本地数据中心可以通过 AWS Direct Connect 服务或 IPSEC VPN 进行数据交互。
二.活动目录服务器准备
1. 网络环境
在测试环境的 vpc 中规划以下子网:
子网“lab-DC”将运行一个测试的活动目录服务器(域控)
其他两个子网为位于不同 az 的私有子网,AD Connector 将部署在这两个子网中

在生产环境中,可以考虑在 AWS vpc 部署多个与本地域控建立复制关系的只读域控服务器用于和 AD connector 进行连接。
2. 域控服务器安装
在子网 lab-DC 新建一个 windows server 服务器,过程略。按照以下步骤进行域控服务器的部署,测试过程中假定域名为:ymlab.local
Import-Module ServerManager
Install-windowsfeature -name AD-Domain-Services –IncludeManagementTools
Install-addsforest –domainname “ymlab.local”

关于活动目录配置的更多信息可以参考:https://technet.microsoft.com/en-us/library/hh974719(v=wps.630).aspx
3. 测试用户配置
在新建的活动目录环境中建立两个 AD 用户和一个 AD 用户组:
user01:用来模拟某一 AD 用户,该用户在 AWS 云端仅具 ec2 readonly 的权限;
adconnector:ad connector 的服务用户,分配最低权限即可
aws-ec2-readonly:AD 组,user01 将加入该组。

顺便留意一下 aws-ec2-readonly 组的 sid,在后续的步骤中一旦 AD connector 配置完成,将能检索到对应 object 的 sid,以便验证配置是否正确。

4. 域控服务器端口配置
配置测试环境中域控制器所对应安全组。在测试环境中,配置安全组允许来自 vpc 范围内与域控服务器之间的相关数据流。实际生产环境中,可以根据以下端口配置防火墙规则以实现 AD connector 与本地数据中心的域控服务器相互通信。

与活动目录相关的更多端口信息可以参考:https://technet.microsoft.com/en-us/library/dd772723(v=ws.10).aspx
三.AD Connector 配置
1. 在 aws 控制台中找到目录服务,选择创建 AD Connector:

2. 在向导页面中提供活动目录的相关信息:
输入活动目录对应的域名信息
连接账户信息(该测试环境中输入在活动目录中创建的服务用户:adconnector)
DNS 服务器信息(出于服务冗余考虑,可以输入多个 dns 服务器,比如提供 AD 环境中的额外 DNS 服务器 IP)

3. VPC 配置
在配置过程中,提供在不同 az 中建立的两个子网信息,如下图:

AD connector 创建之后,可以明确核对 AD connector 是部署在多个 az 中:

4. 开启管理控制台访问
按照规划设置访问 url, 通过该 url 用户可以在 internet 访问不同的应用服务。可以在下图中查看并配置需要开启的应用服务,比如 workspace,workmail,console 控制台等等。在测试过程中,选择启动”AWS Management Console”:

建立对应的 IAM role, 后续配置过程中 AD 用户或组将映射到该 role,实现 AWS 资源的授权:

测试过程中选择新建一个角色:

选择所需的角色:

可以查看到对应角色的策略设置:

也可以按照实际的需求,自定义相关策略:

5. IAM role 与 AD 用户/组的关联
在配置页面中,输入 AD 用户/组对象的信息,如以下截图所示,在 AD connector 正常连接 AD 后,可以自动检索出 AD 对象:

进一步从 group sid 信息核对此信息与域控服务器检索的信息一致:

以上,完成了 AD connector 与域控服务器的所有配置,接下来验证是否能按照预期工作。
四.验证
输入配置过程中生成的服务 url, 比如:https://ymlab.awsapps.com/console , 在出现的登录页面中输入测试用户信息(user01):

登录成功后,可以看到登录用户所对应的 role,如下图:

在 EC2 管理页面,尝试‘停止’一台 EC2,可以看到如下报错:

尝试开启 Beanstalk,提示没有权限:

小结:
AWS Directory Service 提供了多种将 Microsoft Active Directory 与其他 AWS 服务结合使用的方法。AD Connector 是在 AWS 和本地活动目录环境建立连接的很好选择,还可以配置本地 RADIUS 服务器实现 MFA 身份验证。 除 AD connector 以外,AWS 目录服务还有更多的服务类型对应不同的应用场景,具体信息请参考:http://docs.aws.amazon.com/zh_cn/directoryservice/latest/admin-guide/what_is.html
作者介绍:

李艺明
AWS 解决方案架构师,负责基于 AWS 的云计算方案架构咨询和设计,在国内推广 AWS 云平台技术和各种解决方案。拥有超过 10 年的 IT 从业经验,为各种规模的企业客户提供 IT 项目实施和顾问服务。在加入 AWS 之前,服务于微软担任解决方案工程师,负责 Windows Azure 方案和架构设计,在此之前负责企业私有云和企业协同应用系统的架构规划和设计。
本文转载自 AWS 技术博客。
原文链接:
https://amazonaws-china.com/cn/blogs/china/415-2/
评论