草庐IT

分布式系统安全之分布式系统协调资源聚类

铸盾安全 2023-03-28 原文
与P2P系统的分散控制相反,存在许多分布式系统,其中分布式资源和服务之间的交互是使用各种协调机制编排的,这些机制提供了逻辑集中和协调的系统或服务的错觉。协调可以只是调度程序/资源管理器、离散协调器或协调组,并包括时间排序(因果关系)或跨分布式事务的不同优先级顺序。虽然离散地定义每种类型的分布式系统很诱人(即,与P2P中的分散控制不同),但庞大而多样化的分布式系统/服务组共享“协调”的共同抽象,尽管每个系统的实现和结果属性会有所不同。

首先,在分布式资源平台(或基础结构)上复制服务,以启用对用户的地理分散访问,同时在服务上保持所需类型的一致性规范。云和许多分布式客户端-服务器系统都属于这一类。

替代方法解决了分布式服务(相对于平台),其中分散的服务参与者进行交互以产生给定一致性要求的集体分布式服务。例如,事务数据库和分布式账本就属于这种强一致性的类别。网络爬虫、搜索或物流应用程序很可能在弱一致性规范下工作。

总体而言,它们构成了协调资源池模式下的两大类分布式系统,即资源协调和服务协调类,尽管它们的功能和定义经常重叠,但基于其特征协调模式。

在随后的小节中,为了将分布式系统安全性置于上下文中,我们首先详细介绍了基本的分布式概念以及基于它们的协调模式。接下来是概述每个资源和服务协调模型中的特征系统。这构成了与两类协调分布式系统相关的一般中断/漏洞集的基础。然后,我们概述了特定于每类系统的威胁和安全影响。我们向读者推荐的优秀文本,以全面而严谨地解决这些问题。

关于分布式平台底层技术的说明:引言强调,本KA的重点是分布式系统的安全性,而不是使用分布式来提供安全性。扩展这个主题,值得评论与分布式平台和服务的“设计和实现”相关的其他观点。这种面向设计的视角倾向于强调分布式系统、分布式服务及其构建的架构。这种观点通常侧重于(a)建立安全需求,(b)实现方法,说明如何在每个抽象级别满足给定的安全要求,以及(c)考虑分布式系统作为分层体系结构,其中每一层都建立在下层提供的原语和分布式服务之上。从这个角度来看,集中(协调)和分散模式经常以不同的方式组合在不同的层次上。同样从这个角度来看,必须通过补充和构建较低层和服务提供的内容来满足应用程序的安全要求。

这是一种构造和组合方法,其中应用程序级别或给定层的安全属性(要求)驱动解决方案和子系统的选择必须组装(例如,身份验证、授权、问责制、不可否认性等)。此类子系统/解决方案的组成通常是通过使用权衡(以及威胁)分析来实现的,这些分析往往涵盖部分而不是全部要求从而确定相对优势和劣势。例如,区块链应用程序,在第5.2节中进一步讨论,强调不可否认性和去中心化是其主要属性。

这种分层和组合的方法经常可以在文献中遇到,例如和许多其他文献。由于架构和实现从根本上奠定了在分布式系统中提供安全性的KA前提,因此鼓励读者参考本文献。下一节将重点重新介绍分布式系统概念,尤其是分布式系统协调类的基本概念。

分布式概念,协调类

如引言中所述,分布式系统是地理分散的com的整理,将集体交互的资源用于提供(a)连接分散数据生产者和消费者,(b)通过容错复制实现高可用性,以覆盖资源(计算和通信)故障,或(c)从分布式资源中提供集体聚合能力(计算或服务)(错觉)逻辑上集中/协调的资源或服务。

分布式系统通常是根据要交付给客户端的服务来构建的。每个服务都包含并在一个或多个服务器上执行,并导出客户端通过发出请求调用的操作。尽管使用单个集中式服务器似乎很诱人,但驻留在服务器上的最终服务只能与托管它的服务器一样具有容错能力。通常,为了适应服务器故障,服务器会以物理或逻辑方式进行复制,以确保在具有这种隔离的服务器故障之间具有一定程度的独立性。随后,副本管理协议用于协调这些服务器副本之间的客户端交互。当然,还需要考虑客户端故障或客户端入侵(包括它们在通过恶意代码或病毒发起攻击中的作用)的处理。我们现在概述了一组基本的分布式系统概念,这些概念也构成了其中安全考虑的基础。这些概念在非正式层面上提出以传达直觉,读者可以以获取有关这些主题的综合论文。

有关分布式系统安全之分布式系统协调资源聚类的更多相关文章

  1. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  2. ruby - 分布式事务和队列,ruby,erlang,scala - 2

    我有一个涉及多台机器、消息队列和事务的问题。因此,例如用户点击网页,点击将消息发送到另一台机器,该机器将付款添加到用户的帐户。每秒可能有数千次点击。事务的所有方面都应该是容错的。我以前从未遇到过这样的事情,但一些阅读表明这是一个众所周知的问题。所以我的问题。我假设安全的方法是使用两阶段提交,但协议(protocol)是阻塞的,所以我不会获得所需的性能,我是否正确?我通常写Ruby,但似乎Redis之类的数据库和Rescue、RabbitMQ等消息队列系统对我的帮助不大——即使我实现某种两阶段提交,如果Redis崩溃,数据也会丢失,因为它本质上只是内存。所有这些让我开始关注erlang和

  3. ruby - 如何安全地删除文件? - 2

    在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?

  4. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  5. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  6. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  7. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  8. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

    因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

  9. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

    默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同

  10. ruby - 以毫秒为单位获取当前系统时间 - 2

    在Ruby中,以毫秒为单位获取自纪元(1970)以来的当前系统时间的正确方法是什么?我试过了Time.now.to_i,好像不是我想要的结果。我需要结果显示毫秒并且使用long类型,而不是float或double。 最佳答案 (Time.now.to_f*1000).to_iTime.now.to_f显示包含十进制数字的时间。要获得毫秒数,只需将时间乘以1000。 关于ruby-以毫秒为单位获取当前系统时间,我们在StackOverflow上找到一个类似的问题:

随机推荐