首页 > 其他分享 >Zero Trust Networks【3】

Zero Trust Networks【3】

时间:2024-06-01 16:43:28浏览次数:28  
标签:代理 用户 Zero 授权 信任 Trust 数据 Networks 设备

一、What Is an Agent?
二、How to Expose an Agent?

Chapter 3. Context-Aware Agents

想象一下,你正处在一个有安全意识的组织中。每个员工都有一台经过高度认证的笔记本电脑来完成他们的工作。随着今天的工作和个人生活的融合,一些人还想在手机上查看他们的电子邮件和日历。在这个假设的组织中,安全团队基于用户使用的访问特定资源的设备来应用细粒度的策略决策。

例如,也许从员工的公司发布的笔记本电脑上提交代码是允许的,但从他们的手机上提交代码将是一件相当奇怪的事情。由于从移动设备访问源代码显然比从注册笔记本电脑访问风险大,该组织阻止这种访问。也就是说,员工可以通过个人设备访问公司的电子邮件。您将在本章中了解到,在零信任环境中进行决策时,上下文至关重要。

这里描述的故事是一个相当典型的零信任应用程序,因为认证和授权的多种因素发生,涉及用户和设备。然而,在这个例子中,很明显,有一个因素影响了另一个因素——一个可能“通常”能够访问源代码的用户不会从他们的移动设备上享受这种访问。此外,该组织不希望经过身份验证的用户仅从任何受信任的设备提交代码——它希望用户使用其组织的设备。

这种用户和设备的结合是由零信任引入的一个新概念,我们称之为代理。在零信任网络中,单独处理用户和设备是不够的,因为策略通常需要同时考虑这两者,以准确地执行所期望的行为。通过在系统中正式定义一个代理,我们就能够捕获这种关系并使用它来驱动策略决策。

本章将定义什么是代理以及如何使用它。在此过程中,我们将讨论包含在代理中的数据类型,其中一些代理可能是敏感的。考虑到这些数据的性质,我们将讨论何时以及如何将一个代理暴露于数据平面系统中。代理作为一个新概念,可以从标准化中受益。我们将探讨标准化这种代理的好处。

一、What Is an Agent?

代理是关于请求中参与者的已知数据的组合。这通常包括一个用户(也称为主题)、一个设备(主题用于发出请求的资产)和一个应用程序(web应用程序、移动应用程序、API端点等)。传统上,这些实体是被单独授权的,但是零信任网络认识到,策略最好被捕获为一个请求中的所有参与者的组合。通过授权一个请求的整个上下文,就大大减轻了凭证盗窃的影响。最好把代理看作是一个短暂的实体,根据需要形成来评估政策。用于形成代理的数据——用户和设备信息——通常将存储在持久存储器中,并进行查询以形成代理。

当查询此数据时,该时间点的数据的并集就是我们所说的代理。这种方法的好处是,对用于形成代理的数据进行的任何更改都将更改代理本身。例如,如果用户的角色发生了更改,则用于评估该用户的策略的代理也将发生更改。如果一个设备未从系统中注册,则与该设备关联的任何代理都将不再有效。


❗什么是主题?

术语“user”是通常用来指用户身份,但重要的是要理解术语“subject”也使用,特别是标准机构,如国家标准与技术研究所(NIST)和其他人,定义人类和非人类用户(如无头或机器身份)。当我们在第6章中检查用户和第5章中的设备时,我们将在后面的章节中进一步强调这一区别。当我们在本章的其余部分讨论用户时,我们指的是人类身份和机器身份。

1.1 Agent Volatility,代理波动性

代理中的某些字段是专门用于减轻主动攻击的,因此,相对于IT组织通常期望的不频繁的变化,预计会迅速变化。信任分数就是这类动态数据的一个例子。信任评分系统可以评估网络中的每个请求,使用该活动提要来更新用户、应用程序和设备的信任分数。因此,为了获得信任评分来减轻一种新的攻击,它需要尽可能地实时更新。第四章更详细地介绍了信任分数。

除了快速变化的数据外,代理还经常有稀疏的数据。正在引导的设备就是一个例子,与成熟设备相比,代理的数据更少。在引导过程中,我们对该设备知之甚少,但它仍然必须与企业基础设施交互,以执行设备注册和软件安装等任务。在这种情况下,引导设备尚未分配给用户,如果策略希望分配的用户出现在代理中,则可能会遇到问题。这个场景应该被预期并反映在授权策略中。

稀疏数据不仅仅可以在引导场景中找到。与人操作的系统相比,零信任网络中的自治系统往往具有稀疏的数据。例如,这些系统可能不会对应用程序下运行的用户帐户进行身份验证,而是依赖于创建该用户的配置管理系统的安全性。

1.2 What’s in an Agent?,代理中包含什么?

代理中包含的数据的粒度可以根据需求和成熟度而变化。它可以是用户名或设备制造商的高级,也可以是序列号和居住地或问题地点的低级。请注意,更详细的数据更有可能有数据清洁问题,这必须处理。


❗代理数据字段


存储在代理中的数据类型在存在和粒度上都有很大不同。以下是一些人们可以在代理中找到的数据示例:

Agent trust score
User trust score
User role or entitlements
User groups
User location
User authentication method (MFA, password, etc.)
Device trust score
Device manufacturer
Host operating system manufacturer and version
Hardware security module (HSM) manufacturer and version
Trusted platform module (TPM) manufacturer and version
Current device location
IP address

另一个需要考虑的问题是,代理中包含的数据是否受信任。例如,在采购过程中填充的设备数据比从在它上面运行的代理报告的设备数据更受信任。这种信任上的差异是由于如果设备受到损害,则难以确保报告信息的准确性和完整性。

1.3 How Is an Agent Used?,如何使用代理?

当在零信任网络中做出授权决策时,它实际上是被授权的代理。虽然很容易分别授权设备和用户,但不推荐使用这种方法。由于代理是被授权的实体,因此它也是编写策略的对象。

如前一节所述,代理携带许多信息。因此,虽然更多的“传统”的授权信息,如IP地址仍然可以被使用,但利用代理也可以解锁“非传统”的授权信息的使用,如设备类型或居住城市。因此,在编写零信任网络策略时,只考虑了代理作为一个整体,而不是精心制定脱节的用户和设备策略。使用代理来驱动授权策略会鼓励作者考虑通信上下文的整体。用户和设备的结合在零信任授权决策中是非常重要的,并且在代理中共同定位数据使得很难忽略其中一个。与零信任体系结构的其他部分一样,降低进入障碍是关键,而共同定位数据以使设备/用户的比较更容易也没有什么不同。

❗DATA CO-LOCATION:数据共同定位

当用户和设备数据被组合或在请求中时,它们将形成一个代理。因此,请求的整体上下文将变得更加清晰。考虑一下以下场景: Adam要求通过他的iPhone访问一份具有高商业影响的季度销售报告,它运行iOS操作系统,他将该系统作为“Bring Your Own Device ”(BYOD)的一部分。如果他的iPhone上没有安装任何可以执行策略执行的移动设备管理解决方案,他的请求可能会被拒绝,因为使用的设备被认为是不可信的。用户属性和设备属性的组合在这里至关重要;否则,Adam可以作为用户访问报告。

一个代理,作为网络中的主要参与者,在信任分数的计算中扮演着额外的角色。除了代理本身所包含的数据外,信任引擎还可以使用已记录的操作来对代理的可信度进行评分。这个信任分数将作为代理的附加属性公开,应该根据其定义大多数策略。我们将在第四章中进一步讨论如何计算信任分数。

1.4 Agents Are Not for Authentication,代理不用于身份验证

了解代理上下文中的身份验证和授权之间的区别是很重要的。代理仅作为授权组件,在身份验证中不起任何作用。实际上,身份验证是代理形成的前兆,通常为用户和设备单独执行。例如,设备可以使用X.509证书进行身份验证,而用户可以通过传统的多因素方法进行身份验证。

在成功的身份验证之后,可以使用用户和设备的规范标识符来形成代理及其详细信息。特定于设备的证书可以用作设备的规范标识符,因此可以用于填充诸如设备类型或设备所有者等信息。类似地,用户名可以作为查找键来填充用户信息,比如他们在公司中的角色。

通常,身份验证是面向会话的,但在授权的情况下,最好是面向请求的。因此,允许缓存身份验证请求的结果,但是缓存代理或授权请求的结果是不明智的。这是因为代理中用于进行授权决策的细节可能会根据许多因素而发生快速变化,因此需要使用最新的数据来做出授权决策。这与认证材料相反,认证材料变化得少得多,也不会直接影响授权本身。

最后,生成代理的行为应该尽可能具有轻量级性。如果代理生成成本昂贵,则会由于性能原因而阻止频繁的授权请求。我们将在第4章中进一步讨论性能如何影响授权。


❗首先撤销授权,其次撤销凭据


成功的身份验证是指向远程系统证明自己的身份的行为。然后,该经过验证的身份被用于确定用户是否真的有权访问相关资源(授权)。如果必须撤销访问权限,则更新授权比更改身份验证凭据更有效。当考虑到身份验证结果通常被缓存并分配给会话标识符时,情况就更加严重了。验证经过身份验证的会话的行为实际上是一种授权决策。

二、How to Expose an Agent?,如何暴露一个代理?

代理中包含的数据可能是敏感的。可以个人身份识别的用户信息(例如,姓名、地址、电话号码)通常会出现在代理中,以方便详细的授权决策。这些数据应谨慎处理,以保护用户的隐私。
然而,这些数据的敏感性已经超出了用户的范围范围。当设备细节落入一个坚定的攻击者手中时,它们也可能是敏感的数据。对用户设备有详细了解的攻击者可以利用这些数据进行有针对性的远程攻击,甚至了解该用户的物理位置的模式来窃取设备。
为了充分保护敏感代理的详细信息,整个代理生命周期应该包含在可信的控制平面系统中,这些系统本身是高度安全的。这些系统应该在逻辑上和物理上与数据平面系统分离,有明确的边界,并且很少变化。

大多数策略决策将在控制平面系统中做出,因为做出这些决策需要代理数据。然而,控制平面中的授权引擎往往不是执行以应用程序为中心的策略的最佳位置,尽管它能够以请求的方式执行授权。这在面向用户的系统中尤其如此。因此,需要向数据平面系统公开一些代理的详细信息。

让我们来看一个例子。一个管理应用程序存储了一个特定公司的所有客户的详细信息。该系统会根据员工在公司中的角色,向他们公开这些数据。搜索功能允许员工在他们被允许访问的数据子集中进行搜索。应用程序需要实现这个逻辑,并且需要访问用户的角色。

为了允许应用程序实现它们自己的细粒度授权逻辑,可以通过受信任的通信通道向代理细节公开给应用程序。这可以简单地将头注入通过反向代理的网络请求。代理是一个零信任控制平面系统,可以查看代理以执行自己的授权决策,并将数据的子集公开给下游应用程序进行进一步授权。

将代理详细信息向下游应用程序公开也有助于实现与具有丰富授权系统的现有应用程序的兼容性。此兼容性目标突出显示,代理详细信息应该以应用程序首选的格式暴露给应用程序。对于第三方应用程序,代理数据的格式将会有所不同。对于第一方应用程序,代理数据的通用结构将简化系统的管理。

2.1 Rigidity and Fluidity, at the Same Time:刚性和流动性,同时存在

在考虑如何以及使用代理的格式时,了解代理的格式以及在哪里找到特定的数据片段是非常重要的。某些数据块的“坐标”必须是固定的和众所周知的,以确保跨控制平面系统的一致性。这里的一个很好的类比是关系数据库的模式,访问数据的应用程序必须了解它,才能提取正确的信息片段。

在实现和维护零信任控制平面系统时,这种数据兼容性非常重要。零信任网络,特别是更成熟的网络,很可能从多个系统和数据源构建一个代理。没有模式,不仅很难表面数据以一致的方式,但它也会导致负面所需的努力引入新的控制平面系统或代理数据,这被认为是至关重要的一个成熟的零信任网络。

然而,需要记住的一件事是,由于在设备库存等源系统中遇到的几乎不可避免的数据清洁度问题,代理数据很可能相当稀疏。其结果是一个“麻烦”代理,其中许多字段可能因为这样或那样的原因而无人填充。与其寻求数据清洁(规模只会变得更难),最好接受现实,并制定理解并非所有数据都存在的政策。因此,虽然人们可能仍然需要特定的数据,但考虑没有替代数据的替代数据是一个合适的替代是一个有用的思维练习。

2.2 Standardization Desirable,标准化的要求

人们可能会想知道,如何有可能将一种似乎与使用它的组织不可分割的数据格式标准化。毕竟,代理很可能包含与业务逻辑或其他专有/本地信息相关的信息类型。标准化在这种情况下甚至可行吗?

幸运的是,已经有一些标准定义了以这种方式运行的数据格式。其中一个最好的例子是简单网络管理协议(SNMP)及其相关的管理信息数据库(MIB)。

SNMP是一种经常用于网络设备管理的协议,它允许设备以一种标准而灵活的方式向操作员和管理系统公开数据。MIB组件描述了数据本身的格式,它是oid或对象标识符的集合。每个OID描述(并为其保留)一个特定的数据片段,并在ISO或国际标准化组织注册。这使得某些数据适合被广泛接受的“坐标”。让我们来看看图3-1所示的OID树中的简化节点集的示例。

图3-1.显示对象标识符(OID)树中节点组织的简化图

在本例中,“IP”节点和相关数据将被处理为1.3.6.1.1.1.4。一个MIB为一组oid进行排列并赋予颜色。例如,Cisco MIB可能为树的1.3.6.1.4.1.9部分下的所有oid提供定义,包括人类可读的描述。当然,这个注册列表可以被扩展,通常会为组织或制造商开辟大量的OID空间。通过这种方式,一个OID可以与一个IP地址进行比较,其中一个IP地址全局识别一个计算机系统,而一个OID全局识别一段数据。

不幸的是,没有好的OID相当于私有IP地址空间,这对于特别的或特定于站点的数据很有用。最好的折衷方案是使用IANA注册一个私人企业号码,这将为您提供一个专用的OID前缀。幸运的是,这样的注册是免费的,而且很少有人问他什么问题。人们已经在努力创建一个类似于IP的私有领域。然而,这些努力都没有成功。尽管缺乏一个真正的免费/私人的OID空间用于实验或内部使用,但在考虑代理的标准化时,SNMP仍然是一个有用的类比。它描述了一组数据的格式和打包——使用唯一的oid很容易找到和识别的数据——以及如何从一个系统传输和理解到另一个系统。

2.3 In the Meantime?

虽然近年来零信任网络出现了一些发展,NIST等标准机构已经发布了体系结构指导,但代理标准化仍然主要是一项实现任务。同时,考虑到实现者的需要,代理以阻力最小的形式出现。无论是JSON blob、已签名和加密的JSON Web令牌(JWT)、协议缓冲区、平板缓冲区还是任何其他自定义二进制格式,都建议确保其中包含的数据是灵活的和易于扩展的。与强类型相比,更容易,因为后者将使引入新数据和系统更加困难。可插拔的设计模式可能有助于在将来转移到一个标准化的代理中。但是,这远不是必需的,如果它们阻碍了在您的网络中采用代理授权,则不应该这样做。

以下是一个可能包含代理信息的JSON脚本的说明:


一旦签名和编码,JSON将产生一个如下所示的JWT。任何常见的JWT解码器都将工作来解码它。例如,通过将编码的令牌粘贴到像https://jwt.io这样的网站中,你可以在线解码它的内容。请注意,您也可以加密令牌,尽管为了清晰起见,该示例省略了此步骤。


eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXYXluZSBDb3Jwb3JhdGlvbiAi
LCJpYXQiOjE2NzY5MzgyMDEsImV4cCI6MTcwODQ3NDIwMSwiYXVkIjoiQVBQMDEwOTEiLCJzd
WIiOiJib2JAd2F5bmVjb3JwLmNvbSIsImdpdmVuX25hbWUiOiJCb2IiLCJlbWFpbCI6ImJvYk
B3YXluZWNvcnAuY29tIiwicm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9
yIl0sImRldmljZV9pZCI6IkQ5OFZDVlEzSk1CSCIsImRldmljZV9wYXRjaGVkIjoieWVzIiwi
ZGV2aWNlX29zX3ZlcnNpb24iOiIxMy4yICgyMkQ0OSkiLCJkZXZpY2Vfb3NfdHlwZSI6Ik1hY
09TIiwidXNlcl9pZCI6IlVJRDEyMzMiLCJ1c2VyX2xvY2F0aW9uIjoiRGFsbGFzLFRYIiwidX
Nlcl9pcF9hZGRyZXNzIjoiMS4yLjMuNCIsInVzZXJfYXV0aF9tZXRob2QiOiJYLjUwOSIsInR
ydXN0X3Njb3JlIjoiNyJ9.eSE9Onzyb3s_WGGi5kE2eaH5h8KVCSlOcCoNeWMWwOE
❗使用JWT共享代理数据字段

根据RFC 7519的定义,JSON Web令牌(JWT)是双方交换索赔的一种紧凑方式。jwt被编码为JSON对象,它可以携带表示代理所需的数据字段。此外,在共享有关代理的信息时,您还可以对JWT进行数字签名和加密,以确保高完整性和机密性。

Summary

本章介绍了代理的概念,即零信任网络中的一个新实体,并对它作出授权决策。添加这个概念对于实现零信任网络的好处至关重要。我们探讨了创建代理的过程。代理包含快速变化的数据,并且经常具有不可用或不一致的数据。在引入代理概念时,接受现实这一事实对于成功很重要。

代理纯粹用于做出授权决策。身份验证是一个单独的问题,当前的身份验证状态反映在代理的属性中。控制平面系统使用代理来授权请求。这些系统是零信任网络中授权的主要执行者,但有时它们必须将代理细节公开给能够更好地实现细粒度授权决策的应用程序。我们探讨了如何在保持隐私的同时向应用程序公开这些数据。

虽然像NIST这样的标准机构最近制定了关于零信任的指导方针,但它的管理方面仍然非常新,因此,没有被证实的代理标准存在。定义一个标准将允许零信任系统的更好的重用和互操作性,有助于采用这种技术。我们讨论了一种可能的标准化代理定义的方法。下一章将重点介绍负责授权零信任网络中的所有请求的系统。

标签:代理,用户,Zero,授权,信任,Trust,数据,Networks,设备
From: https://www.cnblogs.com/o-O-oO/p/18203131

相关文章

  • Zero Trust【1】
    Chapter1.ZeroTrustFundamentals在一个网络监控无处不在的时代,我们发现很难信任任何人,而定义信任本身也同样困难。我们能相信,我们的互联网流量将是安全的,不会被窃听吗?当然不是!那你租用光纤的供应商呢?或者是昨天在你的数据中心处理电缆的合同技术人员?像爱德华·斯诺登和马克·......
  • Learning Latent Permutations with Gumbel-Sinkhorn Networks
    目录概SinkHornoperatorMeanG.E.,BelangerD.,LindermanC.andSnoekJ.Learninglatentpermutationswithgumbel-sinkhornnetworks.ICLR,2018.概本文提出了一种自动学习permutations的方法.SinkHornoperatorSinkHornoperator的操作流程如下:\[S^{0}(......
  • geotrust通配符证书600元且赠送一个月
    GeoTrust作为国际知名的数字证书颁发机构,旗下有RapidSSL、QuickSSL等子品牌经营着各种类型的SSL数字证书,其中RapidSSL旗下的SSL数字证书都是入门级的,性价比高。审核速度也比较快,证书的适用范围也比较广泛。今天就随SSL盾小编了解GeotrustRapidSSL旗下的通配符SSL证书。1.Geot......
  • LiT: Zero-shot transfer with locked-image text tuning
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!ProceedingsoftheIEEE/CVFConferenceonComputerVisionandPatternRecognition(CVPR),2022 Abstract 1.Introduction 2.Relatedwork 3.Methods 3.1.Contrastivepre-training 3.2.C......
  • LeetCode 283. Move Zeroes All In One
    LeetCode283.MoveZeroesAllInOnearrayin-placeswap/数组就地交换算法errorsfunctionmoveZeroes(nums:number[]):void{//in-place就地交换letindex=0;//letflag=false;for(leti=0;i<nums.length;i++){if(nums[i]===0){......
  • orangepi zero2在linux5.4以上内核使用ili9341
    背景根据orangepizero2用户手册说明,linux5.13内核不能使用modprobefbtft_device驱动spilcd查看linux内核源码提交记录,发现在v5.4-rc3中删除了fbtft_device.c文件commit如下staging/fbtft:Removefbtft_deviceCommitc440eee("Staging:fbtft:Switchtothegpiode......
  • golang微服务之go-zero零基础实战
    golang微服务之go-zero零基础实战1.环境准备mysql提供rpc服务接口后端交互存储etcd提供rpc服务注册与发现2.文件结构rpc服务接口:1.用户登录2.用户创建3.查询用户信息api服务接口:1.用户登录2.用户创建3.查询用户信息3.搭建步骤1.搭建rpc服务创建rpc......
  • 【HZERO】事件以及消息队列
    事件以及消息队列服务事件:https://open.hand-china.com/document-center/doc/component/157/18147?doc_id=408820&_back=%2Fdocument-center%2Fsearch%3Fs%3D%25E4%25BA%258B%25E4%25BB%25B6%25E6%259C%258D%25E5%258A%25A1&doc_code=197230事件服务:https://open.hand-china.c......
  • 开源低代码框架 ReZero API 正式版本发布 ,界面操作直接生成API
    一、ReZero简介ReZero是一款.NET中间件:全网唯一界面操作就能生成API, 可以集成到任何.NET6+API项目,无破坏性,也可让非.NET用户使用exe文件免费开源:MIT最宽松协议,一直从事开源事业十年,一直坚持开源1.1纯ReZero开发适合.NetCore零基础用户,大大简化了.NetCore开发门......
  • flutter 运行ios真机测试 提示 Command PhaseScriptExecution failed with a nonzero
    我这边引起CommandPhaseScriptExecutionfailedwithanonzeroexitcode的原因是我刚更换了推送证书,于是我打开钥匙串访问发现推送证书处于不受信任状态,于是把证书状态设置为信任状态并删除了旧的推送证书,设置完成后再去运行,就可以成功运行了。这是我这边的单一情况,......