写点什么

使用 Kerberos 身份验证将 Amazon EMR 与 Microsoft Active Directory 集成(四)

  • 2020-01-13
  • 本文字数:2226 字

    阅读完需:约 7 分钟

使用 Kerberos 身份验证将 Amazon EMR 与 Microsoft Active Directory 集成(四)

管理和测试解决方案

现在您已配置并构建了解决方案,可以使用 Active Directory 凭证连接到集群来测试解决方案了。

使用 Active Directory 凭证(单点登录)通过 SSH 连接到集群

启动 Kerberized Amazon EMR 集群后,如果您使用了 AWS CloudFormation 模板并将客户端 IP 地址范围添加到了允许的 IP 地址参数中,您应该能够使用 SSH 客户端和 Active Directory 用户凭证连接到集群。如果您使用 SSH 连接到集群时遇到问题,请检查集群的安全组,确保它允许从客户端的 IP 地址(源)进行入站 SSH 连接(TCP 端口 22)。


以下步骤假定您使用的是 OpenSSH 等客户端。如果您使用的是其他 SSH 应用程序(例如,PuTTY),请参阅应用程序特定的文档。


注意:由于集群是使用跨领域信任配置启动的,因此当您使用 SSH 以域用户的身份连接到它时,不需要使用私钥(.pem 文件)。


要使用 SSH 以 Active Directory 用户身份连接到 Amazon EMR 集群,请运行以下命令。使用您在设置域控制器时创建的域管理员用户替换


ad_user,并使用集群的 URL 替换


master_node_URL(请查看堆栈的输出结果以查找此信息):


$ ssh -l <ad_user> <master_node_URL>
复制代码


如果您的 SSH 客户端配置为使用密钥作为首选身份验证方法,登录可能会失败。如果出现这种情况,您可以将以下选项添加到 SSH 命令,以强制 SSH 连接使用密码身份验证:


$ ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no -l <ad_user> <master_node_URL>
复制代码


域用户使用 SSH 连接到集群后,如果这是用户连接的第一个集群,则会为该用户创建本地主目录。除了创建本地主目录之外,如果您在启动集群时使用了


create-hfs-home-ba.sh 引导操作(如果您使用 AWS CloudFormation 模板启动 Kerberized 集群,则默认情况下已完成),还会自动创建 HDFS 用户主目录。


注意:如果您手动启动了集群,并且未使用


create-hdfs-home-ba.sh 引导操作,则需要为您的用户手动创建 HDFS 用户主目录


首次使用 SSH 连接到集群时(以域用户的身份),如果您的域用户的 HDFS 主目录已成功创建,您应该会看到以下消息:



在 Kerberized Amazon EMR 集群上运行作业

要在 Kerberized 集群上运行作业,必须先对提交作业的用户进行身份验证。如果您按照上一部分的说明使用 SSH 以 Active Directory 用户的身份连接到集群,则系统应该会自动对用户进行身份验证。


如果运行


klist 命令时返回“未找到凭证缓存”消息,则意味着用户未经过身份验证(用户没有 Kerberos 票证)。您可以随时运行以下命令重新对用户进行身份验证(请确保 Active Directory 域全部使用大写字母):


$ kinit <username>@<AD_DOMAIN>
复制代码


对用户进行身份验证后,他们可以像在非 Kerberized 集群上一样提交作业。

审计作业

Kerberos 可以提供的另一项优势是,您可以轻松判断哪个用户运行了特定作业。例如,(使用 SSH)连接到具有 Active Directory 用户的 Kerberized 集群,然后提交 SparkPi 示例应用程序:


$ spark-example SparkPi
复制代码


运行 SparkPi 应用程序后,转至 Amazon EMR 控制台并选择您的集群。然后选择应用程序历史记录选项卡。您可以在此处查看有关应用程序的信息,包括提交作业的用户:


常见问题

尽管很难涵盖所有可能出现的 Kerberos 问题,但本部分将介绍一些可能发生的常见问题以及解决这些问题的方法。


问题 1:您可以成功连接集群并在集群上进行身份验证。但是,每当您尝试运行作业时就会失败,并显示如下所示的错误:


org.apache.hadoop.security.AccessControlException: Permission denied


解决方法:确保已为用户创建 HDFS 主目录,并且该目录具有相应的权限。


问题 2:您可以成功连接到集群,但无法运行任何 Hadoop 或 HDFS 命令。


解决方法:使用


klist 命令确认用户是否经过身份验证并具有有效的 Kerberos 票证。使用


kinit 命令重新验证用户身份。


问题 3:您无法使用 Active Directory 用户凭证连接(使用 SSH)到集群,但可以使用


kinit 手动验证用户。


解决方法:确保 Active Directory 域控制器是集群节点的 DNS 服务器(名称服务器)。

清理

完成并测试此解决方案后,请记得清理资源。如果您使用了 AWS CloudFormation 模板来创建资源,请使用 AWS CloudFormation 控制台或 AWS CLI/开发工具包删除堆栈。删除堆栈还将删除该堆栈创建的资源。


如果其中一个堆栈未删除,请确保该堆栈创建的资源没有依赖项。例如,如果您使用 AWS CloudFormation 部署了 Amazon VPC,然后使用不同的 AWS CloudFormation 堆栈将域控制器部署到该 VPC,则必须先删除域控制器堆栈,然后才能删除 VPC 堆栈。

小结

借助使用 Kerberos 对用户和服务进行身份验证的功能,您不仅能够保障大数据应用程序的安全,还能让您轻松将 Amazon EMR 集群与 Active Directory 环境集成。本文介绍了如何在 Amazon EMR 上使用 Kerberos 来创建单点登录解决方案,以便 Active Directory 域用户可以无缝访问 Amazon EMR 集群并运行大数据应用程序。我们还介绍了如何使用 AWS CloudFormation 自动部署此解决方案。



其他阅读资源

了解如何在 Amazon EMR 上运行 Jupyter Notebook 和 JupyterHub





作者介绍:


Bruno Faria 是 AWS 的 EMR 解决方案架构师。 他与我们的客户合作,为他们在 Amazon EMR 上运行复杂应用程序提供架构方面的指导。在业余时间,他喜欢与家人共度时光和学习新的大数据解决方案。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/use-kerberos-authentication-to-integrate-amazon-emr-with-microsoft-active-directory/


2020-01-13 14:52779

评论

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

Plato Labs推出的SeedX,公测15天570万美金净利润

鳄鱼视界

担心今年的金九银十收不到满意的offer?这份18位阿里架构师耗时60天整合的面试总结太香了!

收到请回复

Java 云计算 开源 架构 编程语言

超详细:这份全网首发的Kafka技术手册,从基础到实战一应俱全!

收到请回复

Java 云计算 开源 架构 编程语言

Redis命令传播的心跳检测

急需上岸的小谢

9月月更

MFC与Qt多个控件响应统一响应消息处理

中国好公民st

c++ qt 9月月更

《新神榜:杨戬》亮点抢先看!追光新神话宇宙再添超燃国风巨作

Renderbus瑞云渲染农场

云渲染 云渲染农场 渲染农场 3D电影制作 CG动画电影

jquery入门到实战

楠羽

笔记 JQuery框架 9月月更

架构师的十八般武艺:一致性

agnostic

CAP 一致性

资本“呼唤”:走产品化路线,找得到PMF的云安全创业项目

B Impact

To B业务

【蓝桥杯Web】2022年第十三届蓝桥杯Web大学组省赛真题解析(精华版)

海底烧烤店ai

算法 前端 JavaScrip 9月月更

手把手教你如何使用 Timestream 实现物联网时序数据存储和分析

亚马逊云科技 (Amazon Web Services)

数据分析 物联网 数据存储

图解Kafka Producer中的消息缓存模型

石臻臻的杂货铺

Kakfa 9月月更

DPDK源码分析之rte_eal_init(二)

于顾而言

DPDK

新书上市 | Vue 3.0 核心源码解析,这本书给Vue学习提供新方法

图灵教育

前端 代码 VUE 3.0 源码

【蓝桥杯Web】2022年第十三届蓝桥杯Web大学组省赛真题解析(完整版)

海底烧烤店ai

算法 前端 JavaScrip 9月月更

mysql实数类型和字符串类型

急需上岸的小谢

9月月更

DPDK源码分析之DPDK技术简介

于顾而言

DPDK DPDK开发

新书上市 | Vue 3.0 核心源码解析,这本书给 Vue 学习提供新方法

图灵社区

前端 代码 VUE 3.0 源码

白天建筑师,晚上CG艺术家,他将建筑的华丽发挥极致

Renderbus瑞云渲染农场

云渲染 云渲染农场 渲染农场

5 个 Promise 要避免的常见用法~

掘金安东尼

前端 9月月更

DAYU200升级最新的OpenHarmony系统,一起来玩开源鸿蒙呀!

坚果

鸿蒙 OpenHarmony 9月月更

计算机网络——奈式准则

StackOverflow

编程 计算机网络 9月月更

DPDK源码分析之rte_eal_init(一)

于顾而言

DPDK

每日算法刷题Day12-跳台阶、排列、替换空格、求n累加

timerring

算法题 9月月更

C++学习---cstdio的源码学习分析02-文件删除函数remove

桑榆

c++ 源码阅读 9月月更

NtyCo纯C协程的原理分析

C++后台开发

后台开发 协程 后端开发 异步IO C++开发

2022年第十三届蓝桥杯Web国赛真题解析

海底烧烤店ai

前端 JavaScrip 9月月更

Sentinel哨兵机制

急需上岸的小谢

9月月更

DPDK源码分析之DPDK基础概览

于顾而言

DPDK DPDK开发

TO B的本质是“定制化”不变,“定制化”实现方式求变

B Impact

TO B

使用 Kerberos 身份验证将 Amazon EMR 与 Microsoft Active Directory 集成(四)_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章