通过 AWS 目录服务管理 AWS 资源

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

通过AWS目录服务管理AWS资源

背景

前段时间在拜访客户时,客户提了一个问题:如何结合企业内部既有的身份管理/鉴权体系,更加灵活、经济的实现对 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 存储桶。

通过AWS目录服务管理AWS资源如上图,AD Connector 与企业本地数据中心可以通过 AWS Direct Connect 服务或 IPSEC VPN 进行数据交互。

二.活动目录服务器准备

1. 网络环境

在测试环境的 vpc 中规划以下子网:

  • 子网“lab-DC”将运行一个测试的活动目录服务器(域控)
  • 其他两个子网为位于不同 az 的私有子网,AD Connector 将部署在这两个子网中

通过AWS目录服务管理AWS资源

在生产环境中,可以考虑在 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”

通过AWS目录服务管理AWS资源 关于活动目录配置的更多信息可以参考: 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目录服务管理AWS资源

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

通过AWS目录服务管理AWS资源

4. 域控服务器端口配置

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

通过AWS目录服务管理AWS资源

与活动目录相关的更多端口信息可以参考: https://technet.microsoft.com/en-us/library/dd772723(v=ws.10).aspx

三.AD Connector 配置

1. 在 aws 控制台中找到目录服务,选择创建 AD Connector:

通过AWS目录服务管理AWS资源2. 在向导页面中提供活动目录的相关信息:

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

通过AWS目录服务管理AWS资源

3. VPC 配置

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

通过AWS目录服务管理AWS资源

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

通过AWS目录服务管理AWS资源

4. 开启管理控制台访问

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

通过AWS目录服务管理AWS资源

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

通过AWS目录服务管理AWS资源

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

通过AWS目录服务管理AWS资源

选择所需的角色:

通过AWS目录服务管理AWS资源

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

通过AWS目录服务管理AWS资源

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

通过AWS目录服务管理AWS资源

5. IAM role 与 AD 用户/组的关联

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

通过AWS目录服务管理AWS资源

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

通过AWS目录服务管理AWS资源

以上,完成了 AD connector 与域控服务器的所有配置,接下来验证是否能按照预期工作。

四.验证

输入配置过程中生成的服务 url, 比如: https://ymlab.awsapps.com/console , 在出现的登录页面中输入测试用户信息 (user01):

通过AWS目录服务管理AWS资源

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

通过AWS目录服务管理AWS资源

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

通过AWS目录服务管理AWS资源

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

通过AWS目录服务管理AWS资源

小结:

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 解决方案架构师,负责基于 AWS 的云计算方案架构咨询和设计,在国内推广 AWS 云平台技术和各种解决方案。拥有超过 10 年的 IT 从业经验,为各种规模的企业客户提供 IT 项目实施和顾问服务。在加入 AWS 之前,服务于微软担任解决方案工程师,负责 Windows Azure 方案和架构设计,在此之前负责企业私有云和企业协同应用系统的架构规划和设计。

本文转载自 AWS 技术博客。

原文链接:
https://amazonaws-china.com/cn/blogs/china/415-2/

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

评论

发布