分布式erlang安全如何?

2024-03-08

我想要有 2 个独立的 erlang 节点可以相互通信:

so node a@myhost将能够发送消息至b@myhost.

有没有办法限制节点a@myhost,所以只有来自 a 的函数安全模块可以被召唤b@myhost?

它应该是这样的:

a@myhost> rpc:call(b@myhost,secure_module,do,[A,B,C]) returns  {ok,Result}

和所有其他电话

a@myhost> rpc:call(b@myhost,Modue,Func,Args)  return {error, Reason}

其中一种选择是使用ZeroMQ库来建立节点之间的通信,但是如果可以使用一些标准的 Erlang 函数/模块来完成会更好吗?


在这种情况下,分布式 Erlang 并不是您想要的。将节点 A 连接到节点 B 形成一个集群——一个巨大的、可信的计算环境。您不想信任其中的一部分,因此您不需要单个集群。

而是编写一个特定的网络服务。使用网络本身作为抽象层。最直接的方法是建立一个流连接(只是无聊的老gen_tcp, or gen_sctp或使用 ssl 或其他)从 A 到 B。

A 上的套接字处理进程从节点 A 需要调用 B 的任何部分接收消息——你可以这样写exactly就像它们直接连接一样。使用普通的 Erlang 消息传递风格:Message = {name_of_request, Data}或类似的。 A 上的连接过程很简单gen_tcp:send(Socket, term_to_binary(Message)).

B 穿梭机上的套接字处理进程通过简单地接收套接字和服务进程之间的网络消息{tcp, Socket, Bin} -> Servicer ! binary_to_term(Bin).

计算结果通过完全相同的过程返回另一个方向term_to_binary/binary_to_term再次翻译。

您的服务流程应该接收明确定义消息,并忽略任何没有意义的内容(通常只是记录无意义的内容)。因此,通过这种方式,您不会执行直接 RPC(这在不受信任的环境中是不安全的),您只是响应有效语义在您的(小)消息传递协议中定义。套接字处理过程的编写方式可以为您抽象出来,让您感觉好像您正在处理分布式 Erlang 中的可信环境,但实际上您有两个独立的集群,它们可以向每个集群请求的内容受到限制。其他由您的协议定义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分布式erlang安全如何? 的相关文章

  • 在 Erlang 中删除字符串的子字符串/字符串模式

    我有一个 xml 字符串 例如 S b a a b b 我想删除结束标签 b S2 b a a b 我怎样才能实现这个目标 如果您只想删除特定的字符串文字 b 然后获取子列表就可以了 S b a a b b lists sublist S
  • 重新启动 erlang 进程并保留状态

    我有一个主管进程 它启动多个子进程 目前 当孩子死亡时 我会生成一个具有新 Pid 的新进程 这意味着我丢失了刚刚死亡的子进程的状态信息 我希望我的客户始终使用相同的标识符与子进程进行通信 尽管子进程可能会死亡并由主管重新启动 我正在考虑使
  • Erlang 可以使用哪些分布式进程注册表?

    我想为 Erlang 编译一个相当完整的分布式进程注册表库列表 此类库需要支持基本操作 例如register name Pid Name and whereis name Name 并且理想情况下registered names 0 名称不
  • Mnesia 返回 {aborted, no_transaction}

    我有一个名为 Mnesia 的表person 使用以下记录定义 record person id firstname lastname phone 该表包含以下值 12 alen dumas 97888888 13 franco mocci
  • 在 Red Hat 上安装 RabbitMQ - 错误的 Erlang 版本

    我正在尝试按照以下说明在 Red Hat Enterprise Linux 7 64 位工作站版本 的评估虚拟机上安装 RabbitMQhttps www rabbitmq com install rpm html https www ra
  • Erlang 中的 Apple 推送通知(或 Ruby 中的改进?)

    目前 我的服务器上有一个使用 Ruby 运行的 Apple 推送通知 我想在 Erlang 中使用一个 因为我想使用一个主管来监视它 有人有任何代码可以帮助我吗 这是我的 Ruby 代码 我不喜欢当前实现的一件事是它似乎无法保持连接 它每天
  • `ejabberdctl start` 导致“内核 pid 终止”错误 - 我该怎么办?

    我用谷歌搜索了三个小时但没有结果 我有一个 ejabberd 安装 但不是使用 apt 安装的 它是从源代码安装的 其中没有名为 ejabberd 的程序 启动和停止 一切都是通过 ejabberdctl 进行的 它完美地运行了一个月 突然
  • Erlang 代码的持续集成服务器

    您使用什么类型的敏捷工具进行 Erlang 开发 什么持续集成 http en wikipedia org wiki Continuous integration您使用 CI 服务器来构建 Erlang 代码吗 我得到的唯一参考来自 Quo
  • 随机排列列表中的元素(随机重新排列列表元素)

    我的程序的一部分要求我能够随机洗牌列表元素 我需要一个函数 当我给它一个列表时 它会伪随机地重新排列列表中的元素 安排的改变Must每次通话时都可以看到相同的列表 我的实现似乎工作得很好 但我觉得它相当长 并且正在增加我的代码库 而且 我有
  • Elixir / Erlang Dialyzer:为什么行为回调的参数类型应该是子类型而不是超类型?

    我有一个行为 X 和一个参数类型的回调函数 a any 模块 Y 实现行为 X 实现模块 Y 中的回调函数具有参数类型 a any b any Dialyzer 不喜欢这样并抱怨 a b gt is not a supertype of a
  • Erlang停止gen_server

    我有 gen server start UserName gt case gen server start global UserName player of ok gt io format Player UserName started
  • 与共享数据相比,消息传递的性能损失

    最近有很多关于不使用锁和使用 Erlang 等消息传递方法的讨论 或者关于使用不可变的数据结构 例如函数式编程与 C Java 中的比较 但我关心的是以下几点 AFAIK Erlang 不保证消息传递 消息可能会丢失 如果还要担心消息丢失
  • Erlang - 导入 GPG 公钥

    我正在尝试在 Erlang 中做一些与公钥相关的事情 它们要求我跟踪公钥 根据这一页 http www erlang org doc apps public key using public key html id61611 我应该能够通过
  • 终止连接到 erlang 端口的进程

    我想写一个某种主管 我正在尝试实现关闭外部程序的功能 外部进程通过端口连接到 erlang 的代码 我不知道如何通过发送信号或其他任何方式来关闭该程序 关闭端口不是解决方案 因为我已经检查过许多程序不会在 SIGPIPE 上退出 您有任何想
  • 零部署 CouchDB 嵌入 Windows 应用程序?

    我可能在这里做梦 但我想知道是否有可能将最小的 CouchDB 引擎完全嵌入到 Windows 应用程序中 以便该应用程序可以运行而无需在用户计算机上安装 CouchDB Erlang 我已经提供了这种精简 捆绑的功能 请在此处查看http
  • 在 Erlang 中展平嵌套列表的列表

    我正在做练习Erlang编程 问题是 编写一个函数 给定一个嵌套列表的列表 该函数将返回一个平面列表 例子 flatten 1 2 3 4 5 6 1 2 3 4 5 6 提示 使用concatenate解决flatten 这是我的conc
  • Erl 无法连接到本地 EPMD。为什么?

    Erlang R14B04 erts 5 8 5 source 64 bit rq 1 async threads 0 kernel poll false Eshell V5 8 5 abort with G root ip 10 101
  • 停止 Erlang 守护进程

    除了跑步 killall 9 beam smp 当我知道 Erlang 节点的情况时 如何以编程方式杀死它 sname 如果我不希望心跳监视器重新启动该进程 如何确保上述问题的任何答案也会终止心跳 有没有一个不错的指南来将 Erlang 部
  • 设置 Emacs 进行 Erlang 编程

    Emacs 是 Erlang 编程的首选 IDE 有很多好的模式 distel erlware mode 默认的 erlang 模式 但是您对设置 Emacs 进行专业 Erlang 开发有何建议 按照中所述设置 erlang mode自述
  • Erlang 如何睡觉(晚上?)

    我想在 Erlang 服务器上每隔几个小时运行一次小型清理过程 我知道计时器模块 我在教程中看到一个示例 使用链式计时器 睡眠命令来等待几天后发生的事件 我觉得这很奇怪 我知道 Erlang 进程与其他语言中的进程相比是独一无二的 但是进程

随机推荐