Delegation Token

article/2025/8/23 8:03:35

Delegation Token

    • 为什么要用delegation token
    • Delegation Token 生命周期
    • NameNode中Delegation Token的实现

Hadoop最初的实现中并没有认证机制,这意味着存储在Hadoop中的数据很容易泄露。在2010年,安全特性被加入Hadoop(HADOOP-4487),主要实现下面两个目标:

  1. 拒绝未授权的操作访问HDFS中的数据。
  2. 在实现1的基础上,避免太大的性能损耗。
    为了实现第一个目标,我们需要保证:
  3. 任何一个客户端要访问集群必须要经过认证,以确保它就是自己声称的身份。
  4. 集群中任何服务器,需要被认证为集群中的一部分。其它的机制,如:Delegation Token, Block Access Token, Trust等被加入当做Kerberos的补充。特别是Delegation Token机制被引入。下图简要描述了Kerberos and Delegation Tokens在HDFS中应用
    在这里插入图片描述
    在上面的样例中,会涉及到下面几条认证流程
  5. 用户(joe)利用Kerberos来访问NameNode。
  6. 用户(joe)提交的分布式任务用joe的Delegation Tokens来访问NameNode。这是本文接下来的重点。
  7. HDFS中的DataNode通过Kerberos和NameNode进行交互。
  8. 用户及其提交的任务通过Block Access Tokens来访问DataNodes。

为什么要用delegation token

理论上,虽然可以只使用Kerberos实现认证机制,但这会有一定问题,尤其是应用在像Hadoop这样的分布式系统中。想像一下,对于每个MapReduce任务,如果所有的任务都需要使用TGT (Ticket Granting Ticket)通过Kerberos来进行认证,KDC(Kerberos Key Distribution Center)将很快成为系统瓶颈。下图中的红线说明该问题:一个任务中可能涉及到成千个节点之间的通信,从而导致KDC网络拥堵。事实上,如果集群规模较大,这无意间就对KDC执行了一次DDos(distributed denial of service attack)攻击。
在这里插入图片描述
因此,Delegation Tokens作为Kerberos的一个补充,实现了一种轻量级的认证机制。Kerberos是三方认证协议,而Delegation Tokens只涉及到两方。
Delegation Tokens的认证过程如下:

  1. client通过Kerberos与Server完成认证,并从server获取相应的Delegation Tokens;
  2. client与server之间后续的认证都是通过Delegation Tokens,而不进过Kerberos。
    client可以把Delegation Tokens传递给其它的服务(如:YARN),如此一来,这些服务(如:MapReduce任务)以client身份进行认证。换句话说,client可以将身份凭证"委托"给这些服务。Delegation Tokens有一个过期时间的概念,需要周期性的更新以保证其有效性。但是,它也不能无限制的更新,这由最大生命周期控制。此外,在Delegation Token过期前也被取消。
    Delegation Tokens可以避免分发Kerberos TGT 或 keytab,而这些信息一旦泄露,将获得所有服务的访问权限。另一方面,每个Delegation Token与其关联服务严格的绑定在一起,且最终会过期。所以,即使Delegation Token泄露,也不会造成太大损失。此外,Delegation Token使身份凭证的更新更加轻量化。这是因为Token更新过程只涉及到"更新者"和相关服务。token本身并不会改变,所以已经使用token的各个组件并不需要更新。
    考虑到高可用性,Delegation Tokens会被server进行持久化。HDFS NameNode将Delegation Tokens持久化到元数据中(又称为:fsimage and edit logs),KMS会将其以ZNodes形式持久化到ZooKeeper中。即使服务重启或故障切换,Delegation Tokens也会一直可用。
    server和client在处理Delegation Tokens时会有不同的职责

server端的Delegation Tokens
server端主要负责:

  1. 发布Delegation Tokens,并保存用以验证。
  2. 响应更新Delegation Tokens请求。
  3. 当client端执行删除操作或token过期时,移除Token。
  4. 通过验证client提供的Tokens和server端存储的token是否一致,来对client进行认证。
    只有Delegation Token的renewer可以在token过期前进行更新操作。每次更新过后,token的过期时间会延长一个更新周期(renew-interval),直到token达到最大生命周期(默认7天)。
    client端的Delegation tokens
    client主要负责:
  5. 从server端请求一个新的Delegation Tokens,请求同时可以指定token的更新者(renewer)。
  6. 更新Delegation Tokens(如果client将自己指定为renewer),亦或请求别的组件更新token(指定的renewer)
  7. 向server发送取消Delegation Tokens的请求。
  8. 提供Delegation Tokens供server进行认证。

Delegation Token 生命周期

下面来探究下其在实际场景中如何使用。下图展示的是一个运行一个典型应用的认证流程,先通过YARN提交作业,然后将任务分发到各个worker节点执行。
在这里插入图片描述
简单起见,此处将忽略Kerberos认证和Task分发流程。图中通常有5个步骤:

  1. client希望在集群中运行一个job,它分别从NameNode和KMS获取HDFS Delegation Token和KMS Delegation Token。
  2. client将作业提交到YARN资源管理器(RM),同时提交的还有step1中获取的Delegation Token以及ApplicationSubmissionContext。
  3. YARN RM通过更新操作来核实接收的Token,随后,YARN启动job,并将其和Delegation Tokens一同分发到各个worker节点上。
  4. 每个工作节点中的Task利用这些Token来进行认证,比如:需要访问HDFS上数据时,使用HDFS Delegation Token进行认证。需要解密HDFS加密区的文件时,使用KMS Delegation Token。
  5. job结束后,RM则取消该job的Delegation Tokens。

NameNode中Delegation Token的实现

在这里插入图片描述


http://chatgpt.dhexx.cn/article/wbXHgTtJ.shtml

相关文章

用委托机制(delegation)来定制行为

用委托机制(delegation)来定制行为 应用程序的委托是Cocoa最重要的设计模式——委托机制的一个例子。 委托机制的想法在于:一个对象能有单一的委托对象,可以在某些事件发生的时候调用它。从委托的角度来看,这就是某种…

设计模式--委托模式( Delegation)

1、模式定义 委托是对一个类的功能进行扩展和复用的方法。它的做法是:写一个附加的类提供附加的功能,并使用原来的类的实例提供原有的功能。 假设我们有一个 TeamLead 类,将其既定任务委托给一个关联辅助对象 JuniorDeveloper 来完成&#x…

委托(delegation)的使用方法

1,组合和委托 委托是一个对象请求另一个对象的功能,是复用的一种常见形式。 2,委托和继承 3,使用委托的好处 从程序的角度来讲:你就可以把委托看成是用来执行方法(函数)的一个“指针” 通俗的…

线性代数:05 实对称矩阵与二次型

本讲义是自己上课所用幻灯片,里面没有详细的推导过程(笔者板书推导)只以大纲的方式来展示课上的内容,以方便大家下来复习。 本章是特征值与特征向量知识的延续,根据谱定理可知实对称矩阵可以正交对角化,对…

矩阵空间、秩1矩阵

今天要介绍一种新的向量空间,即矩阵空间,之前碰到的所有向量空间,都是n维的实数空间,现在我们将矩阵当成向量,比如说将3*3的矩阵看作向量,这相当于从原来的n维为扩展到n*n维,那么明明是矩阵为什…

【线性代数】详解正定矩阵、实对称矩阵、矩阵特征值分解、矩阵 SVD 分解

前言 本文主要针对线性代数中的正定矩阵、实对称矩阵、矩阵特征值分解以及矩阵 SVD 分解进行总结。 如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 正定矩阵 1. 概念 首先正…

【线性代数】矩阵及其特性

【线性代数】矩阵及其特性 写在前面只拉伸不旋转的方向特征值和特征向量相似和对角化正交,对称矩阵 拉伸最大的方向二次型理论从曲线而来合同矩阵正定二次型 参考资料 写在前面 本文是笔者用于复习本科期间所学线性代数,试图用一种更易接受的方式加强记…

对称函数、半正定矩阵(核函数涉及)

一、对称函数 在对称函数中,函数的输出值不随输入变数的排列而改变。从函数的形式中可以看出若输入变数排列后,方程式不会改变。例如对于一个球体.若 φ 为其方位角,θ为其天顶角,r为半径,则大圆距离可以表…

矩阵的秩,特征值和特征向量 矩阵基础概念

矩阵是非常重要而基础的数学知识了。大学课上学线性代数基本就是在学矩阵的各种操作和运算。在深度学习里,几乎所有的参数也都是存放在矩阵中,并通过矩阵来做各种运算。大概把矩阵的基本知识点复习和总结一下。 行列式和矩阵的区别: 行列式和…

c++求矩阵的秩_常见的矩阵分解

矩阵的谱分解(可对角化矩阵——满秩可逆) 谱分解定理:设 为一个n阶可对角化矩阵,A的谱为 其中 的重数为 ,则存在唯一一组s个n阶方阵 ,满足(1) (2) (3) (4) (5) 这些矩阵 称为矩阵A的成分矩阵或主幂等矩阵。一般成分矩阵不一定是Hermite矩阵&a…

线性代数笔记15——矩阵空间和秩1矩阵

矩阵空间 矩阵空间是对向量空间的扩展,因为矩阵的本质是向量,所以与向量空间类似,也存在矩阵空间。 在向量空间中,任意两个向量的加法和数乘仍然在该空间内。类似的,所有固定大小的矩阵也组成了矩阵空间,在…

满秩矩阵与正定矩阵

满秩矩阵 设A是n阶矩阵, 若r(A) n, 则称A为满秩矩阵。但满秩不局限于n阶矩阵。 若矩阵秩等于行数,称为行满秩;若矩阵秩等于列数,称为列满秩。既是行满秩又是列满秩则为n阶矩阵即n阶方阵。 矩阵的秩: 用初…

矩阵转置与矩阵对称性的关系

对称矩阵的定义:对称矩阵是指以主对角线为对称轴,各元素对应相等的矩阵 即的方阵 用两种方式说明矩阵的转置与矩阵自身相乘的结果是一个对称矩阵(S为对称矩阵) 方法一: 假设有3 x 2的矩阵 根据矩阵乘法可知&#xf…

线性代数学习之对称矩阵与矩阵的SVD分解

完美的对称矩阵: 定义: 在上一次线性代数学习之特征值与特征向量 - cexo - 博客园学习了矩阵的特征值和特征向量相关的概念,这次则继续延展上一次的内容,这次则来学习对称矩阵,其标题上加了“完美”俩字,…

实对称矩阵的特征值求法_线性代数之实对称矩阵得相似对角化问题的方法总结...

对于一个实对称矩阵不仅可以通过一个可逆矩阵相似对角化,还可以通过一个正交矩阵来相似对角化。实对称矩阵的不同特征值所对应的特征向量正交,而且实对称矩阵的特征值全为实数。在考研中,我们一定要重点掌握会求一个正交矩阵来相似对角化,这里的正交矩阵是矩阵的彼此正交且…

三阶实对称矩阵的秩一分解(快速计算三阶矩阵特征值特征向量的方法)

定理:三阶实对称矩阵如果存在二重特征根一定可以写成如下形式 其中三个特征值为,,,其中一个特征向量是。根据定义,另一特征向量一定是与和正交的向量。 通过上述方法,可以快速计算出三个特征值和一个特征向…

为什么非零实对称矩阵一定是正定矩阵

从酉相似的角度证明实对称矩阵一定可以对角化,对角化之后对应的二次型一定大于0,因此实对称矩阵一定是正定矩阵。 第一张图说明了一个方阵A必定酉相似于一个上三角矩阵T,T的对角线元素就是A的特征值。且这里可以无论特征值重复与否。 第二张…

矩阵求秩

矩阵的秩怎么计算,这个问题一下子我居然不知道怎么下手。。虽然本科的时候学过线性代数,但是好久不用,很多东西都忘了。。今天略微梳理一下吧。 最简单直观的方法: 化成行最简形(或行阶梯形),然…

搜片源必备

1.入门级 一般的经典、大众类电影,在各大主流视频网站都有。如:腾讯、优酷、爱奇艺、搜狐、乐视等。 2.初级 冷门的、最新的电影,以及一些“非主流”电影,可以通过网盘搜索引擎和一些影视资源网站来获取。 个人推荐的网盘引擎 呆…

各种搜索

搜索 本校的Lazer2001 学长为我们讲了搜索(乱搞) 搜索 基础:位运算 超级基础感觉有点难度?bitset例题:位运算 & bitset 基础搜索 DFSBFS 特殊的搜索方式 双向DFS搜索双向BFS搜索哈希康托展开迭代加深搜索&#xff…