亚马逊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方案和架构设计,在此之前负责企业私有云和企业协同应用系统的架构规划和设计。