当前位置:   article > 正文

YARN Application Security_usergroupinformation中issecurtyenable

usergroupinformation中issecurtyenable

overview

编写YARN应用程序的任何人都需要了解该过程,以便编写短期应用程序或长期服务。 他们还需要在早期开发阶段开始对安全集群进行测试,以便编写实际可行的代码。
How YARN Security works
YARN资源管理器(RM)和节点管理器(NM)合作以使用该用户的身份和访问权限来执行用户的应用程序。

The (active) Resource Manager:
1. 在集群中查找空间以部署应用程序的核心,即Application Master(AM)。
2. 请求该节点上的NM分配容器并在其中启动AM。
3. 与AM通信,以便AM可以请求新容器并操纵/释放当前容器,并提供有关已分配和正在运行的容器的通知。

The Node Managers:
1. 本地化资源:从HDFS或其他文件系统下载到本地目录。 这是使用附加到容器启动上下文的委托令牌完成的。 (对于非HDFS资源,使用其他凭据,例如群集配置文件中的对象存储登录详细信息)
2. 以用户身份启动应用程序。
3. 监控应用程序并向RM报告故障。

要在集群中执行代码,YARN应用程序必须:

  1. 有一个客户端应用程序,它设置ApplicationSubmissionContext,详细说明要启动的内容。 这包括:

集群文件系统中要“本地化”的文件列表。
要在容器中设置的环境变量。
在容器中执行以启动应用程序的命令。
YARN启动应用程序所需的任何安全凭证。
应用程序与任何Hadoop集群服务和应用程序交互所需的任何安全凭证。

2.拥有一个应用程序主机,它在启动时向YARN RM注册并监听事件。 任何希望在其他容器中执行工作的AM必须从RM请求它们,并且在分配时,创建一个ContainerLaunchContext,其中包含要执行的命令,执行命令的环境,本地化的二进制文件以及所有相关的安全凭证。
3.即使NM处理本地化过程,AM本身也必须能够检索在启动时提供的安全凭证,以便它本身可以与HDFS和任何其他服务一起使用,并将部分或全部这些凭证传递给启动容器。

获取和添加令牌到YARN应用程序

必须从作为经过身份验证的用户执行的程序中获取YARN应用程序所需的委托令牌。 对于YARN应用程序,这意味着用户启动应用程序。 它是YARN应用程序的客户端部分必须执行此操作:

  1. 通过UserGroupInformation登录。
  2. 确定必须获取的所有令牌。
  3. 从特定的Hadoop服务请求这些令牌。
  4. Marshall将所有令牌转换为字节缓冲区。
  5. 将它们添加到ApplicationSubmissionContext中的ContainerLaunchContext。
    需要哪些令牌? 通常,至少有一个令牌来访问HDFS。

应用程序必须从与其打算交互的每个文件系统请求委托令牌 - 包括集群的主FS。 FileSystem.addDelegationTokens(更新者,凭证)可用于收集这些; 对于那些不发行令牌的文件系统(包括非kerberized HDFS集群),这是一个无操作。

与其他服务(例如Apache HBase和Apache Hive)交谈的应用程序必须使用这些服务的库来请求来自这些服务的令牌以获取委托令牌。 可以将所有令牌添加到同一组凭据中,然后保存到字节缓冲区以进行提交。

应用程序时间轴服务器还需要一个委托令牌。 这是在AM发布时自动处理的。

在AM中提取令牌
启动Application Master并调用触发用户登录的任何UGI / Hadoop操作时,UGI类将自动加载保存在由环境变量HADOOP_TOKEN_FILE_LOCATION命名的文件中的所有标记。

即使应用程序使用了密钥表,这也会发生在不安全的群集和安全群集上,以及安全群集上。 为什么? 因为使用YARN RM验证应用程序所需的AM / RM令牌始终以这种方式提供。

这意味着您在安全和不安全的群集中拥有相对类似的工作流程。

  1. 确保AM启动,登录Kerberos。 对UserGroupInformation.isSecurityEnabled()的调用将触发此操作。
  2. 通过调用UserGroupInformation.getCurrentUser()。getCredentials()枚举当前用户的凭据。
  3. 过滤掉AMRM令牌,生成一组新凭据。 在不安全的群集中,凭据列表现在将为空; 在他们将包含的安全集群中
  4. 将要启动的所有容器的凭据设置为此(可能为空)凭据列表。
  5. 如果要更新的标记的已过滤列表是非空的,则启动一个线程来续订它们。<
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/265852?site
推荐阅读