写点什么

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

2019 年 11 月 15 日

通过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 存储桶。



如上图,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/


2019 年 11 月 15 日 08:00195

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

评论

发布
暂无评论
发现更多内容

第十周学习总结

潜默闻雨

mini-vue之proxy代理

晓枫

vue.js

week10作业1

一网打尽 Java 并发模型

cxuan

Java 后端 并发

计算机网络基础(十八)---传输层-TCP的流量控制

书旅

TCP 计算机网络 协议栈 网络层 流量控制

第10周作业

小胖子

第十周作业

刘卓

第十周学习总结

刘卓

悄咪咪提高团队幸福感 & Surprise!

Kerwin

Java 开源项目

微服务架构

阿飞

微服务架构

架构师训练营 W10 作业

telliex

centos中Anaconda的安装以及keras安装

我是程序员小贱

架构师训练营 week10

devfan

[高冷面试]好不容易走到HR,结果被HR盘了,14题带走

我是程序员小贱

架构师训练营 第十周 作业

CR

微服务架构的一些思考

Acker飏

week10 小结

Geek_196d0f

LeetCode题解:88. 合并两个有序数组,双指针+从前往后+使用新数组Copy,JavaScript,详细注释

Lee Chen

前端进阶训练营

SpringBoot 实战:一招实现结果的优雅响应

看山

springboot 实战

FastDFS不同步怎么破

心平气和

Binlog 同步 fastdfs

翻译: Effective Go (4)

申屠鹏会

golang 翻译

linux终端的快捷命令汇总

良知犹存

Linux

B 站收藏 10W+,GitHub 标星 6K+,肝了这门计算机速成课!

JackTian

GitHub 编程 程序员 B站 计算机基础

第十周作业

Geek_a327d3

DDD

GalaxyCreater

架构

架构师训练营 第十周 总结

CR

计算机网络怎么学?学会这几个工具有助你理解网络协议!

我是程序员小贱

week10

不在调上

架构师训练营 week10 - 学习总结

devfan

架构师训练营 W10 学习心得

telliex

第十周命题作业

菲尼克斯

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