【问题标题】:Concept of remote controling several consul stacks securely安全地遥控几个领事栈的概念
【发布时间】:2016-11-06 13:40:20
【问题描述】:

简介

我正在运行多个,我称它们为 consul-stacks。它们总是看起来像: - 1 个领事服务器 - 9 个领事节点

每个节点都提供一些服务——只是一个经典的网络堆栈等等(这个问题不感兴趣)。 Gossip 用于保护服务器被任意节点查询并泄露数据。 几个 consul-template / tiller “观察者”正在等待动态配置节点/服务的 KV 变化

目标

假设我有 10 个堆栈(数字是动态的),我想构建一个 Web 应用程序,使用特定逻辑控制每个堆栈的 consul-KV

我现在拥有的

我创建了一个 thor+diplomat 工具来包装创建特定 KV 条目所需的逻辑。我在堆栈中的“控制器”容器上运行它时实现了它,与 localhost:8500 对话 - 然后使用 gossip 进行身份验证并写入服务器。

问题

我现在将使用什么概念将此工具移动到远程(不是 consul-stack 的一部分)服务器,同时能够写入每个 consul-stacks KV。

当然,我可以使用外交官连接到 stack1.tld:8500 - 但这意味着我打开 HTTP 端口并需要以某种方式保护它(不受八卦保护?不知何故,只有 RPC?)并且还要保护 /用户界面。

  • 有没有更好的方法连接到这些堆栈中的每一个?
  • 使用 8500 前的基本身份验证的 nginx 代理服务器来保护访问?
  • 也在此端口上使用 ssl-interception 并且仍然使用 8500 或者更确切地说使用配置的 https 端口(在 consul HTTPS API 中)
  • 使用 ACL 保护访问? (允许堆栈成员访问的大量设置 - 需要 TLS?)

一般来说,在不使用 TLS(客户端需要做很多工作来设置)的情况下,什么样的概念适合这个需要与堆栈服务器通信以安全地写入其 KV。

如果我错过了什么,很高兴添加您要求的任何内容

【问题讨论】:

    标签: consul consul-template gossip


    【解决方案1】:

    答案是

    1. 在领事服务器上启用 ACL

    { "acl_datacenter": "stable", "acl_default_policy": "deny", "acl_down_policy": "deny" }

    1. 使用 write/write/write 创建通用 acl 令牌

    consul-cli acl create --management=false --name="general_node" --rule "key::write" --rule "event::write" --rule "service::write" --token=<master-token> 确保在此处使用您在服务器启动期间创建的主令牌

    1. 还可以选择配置 gossip 以让您的客户端进行加密通信(否则 ACL 没有意义)

    2. 将通用令牌添加到您远程使用的领事客户端,以便能够与远程领事交谈 - 因为该领事将不再公开做任何事情(没有令牌)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-17
      • 2011-07-02
      • 1970-01-01
      • 2012-04-20
      • 2021-04-29
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多