亚马逊AWS官方博客
通过AWS目录服务管理AWS资源
背景
前段时间在拜访客户时,客户提了一个问题:如何结合企业内部既有的身份管理/鉴权体系,更加灵活、经济的实现对AWS 资源实现分角色管理的问题 ?
该客户目前在AWS多个 Region部署了业务系统,并且计划通过AWS Direct connect建立Region之间的专线连接,通过AWS的全球架构支持公司业务的快速扩展。客户的技术运营团队根据各协作团队的分工建立了不同权限的IAM用户,通过制定相应的IAM策略,各个协作团队可以管理对应的云端资源 。在实际工作中由于人员在项目之间频繁调整,及各种原因的人员流动等因素,导致 AWS IAM用户需要频繁调整。
就该客户情况而言,如果人员角色的任何变化只需在AD账户体系就能完成管理并自动映射到AWS 权限体系中, 客户就能平滑遵循企业内部的既有合规体系只需要管理AD帐号统一管理云端与本地的资源, 。
为解决这类的问题,通常可以部署ADFS实现IAM与本地活动目录间的联合身份认证,具体可参考这篇博客内容:https://thinkwithwp.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.thinkwithwp.com/zh_cn/directoryservice/latest/admin-guide/what_is.html
作者介绍:
李艺明
AWS解决方案架构师,负责基于AWS的云计算方案架构咨询和设计,在国内推广AWS云平台技术和各种解决方案。拥有超过10年的IT从业经验,为各种规模的企业客户提供IT项目实施和顾问服务。在加入AWS之前,服务于微软担任解决方案工程师,负责Windows Azure方案和架构设计,在此之前负责企业私有云和企业协同应用系统的架构规划和设计。