安全地远程控制多个领事堆栈的概念
Concept of remote controling several consul stacks securely
简介
我是 运行 多个人,我称他们为 consul-stacks。他们总是看起来像:
- 1 台领事服务器
- 9 个领事节点
每个节点都提供一些服务——只是一个经典的网络堆栈等等(对这个问题不感兴趣)。
Gossip 用于保护服务器被任意节点查询并泄露数据。
几个 consul-template / tiller "watchers" 正在等待动态配置 nodes/services KV changes
目标
假设我有 10 个这样的堆栈(数字是动态的)并且我想创建一个网络应用程序 uild 使用特定逻辑控制每个堆栈的 consul-KV
我现在拥有的
我创建了一个 thor+diplomat 工具来包装创建特定 KV 条目所需的逻辑。我在 运行 时在堆栈中的 "controller" 容器上实现了它,与 localhost:8500 交谈 - 然后使用八卦进行身份验证并写入服务器。
问题
我现在使用什么概念将此工具移动到远程(不是 consul-stack 的一部分)服务器,同时能够写入每个 consul-stacks KV。
当然,我可以使用外交官连接到 stack1.tld:8500 - 但这意味着我打开 HTTP 端口并需要以某种方式保护它(不受八卦保护?不知何故,只有 RPC?)和也保护 /ui.
- 是否有更好的方法连接到每个堆栈?
- 在 8500 之前使用具有基本身份验证的 nginx 代理服务器来保护访问?
- 还在这个端口上使用 ssl 拦截并且仍然使用 8500 或者更确切地说使用配置的 https 端口(在 consul HTTPS API)
- 使用 ACL 来保护访问? (大量设置允许堆栈成员访问 - 需要 TLS?)
一般来说,如果不使用 TLS(客户端需要做很多工作来设置),什么概念适合这个需要与堆栈服务器通信以安全地写入其 KV。
如果我遗漏了什么,很乐意添加您要求的任何内容
关于这个的答案是
- 在领事服务器上启用 ACL
{
"acl_datacenter": "stable",
"acl_default_policy": "deny",
"acl_down_policy": "deny"
}
- 使用 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>
确保在这里使用在服务器启动期间创建的主令牌
还可以选择配置八卦,让您的客户端进行加密通信(否则 ACL 有点没有意义)
将通用令牌添加到您远程使用的领事客户端,以便能够与远程领事交谈 - 因为该领事将不再公开做任何事情(没有令牌)
简介
我是 运行 多个人,我称他们为 consul-stacks。他们总是看起来像: - 1 台领事服务器 - 9 个领事节点
每个节点都提供一些服务——只是一个经典的网络堆栈等等(对这个问题不感兴趣)。 Gossip 用于保护服务器被任意节点查询并泄露数据。 几个 consul-template / tiller "watchers" 正在等待动态配置 nodes/services KV changes
目标
假设我有 10 个这样的堆栈(数字是动态的)并且我想创建一个网络应用程序 uild 使用特定逻辑控制每个堆栈的 consul-KV
我现在拥有的
我创建了一个 thor+diplomat 工具来包装创建特定 KV 条目所需的逻辑。我在 运行 时在堆栈中的 "controller" 容器上实现了它,与 localhost:8500 交谈 - 然后使用八卦进行身份验证并写入服务器。
问题
我现在使用什么概念将此工具移动到远程(不是 consul-stack 的一部分)服务器,同时能够写入每个 consul-stacks KV。
当然,我可以使用外交官连接到 stack1.tld:8500 - 但这意味着我打开 HTTP 端口并需要以某种方式保护它(不受八卦保护?不知何故,只有 RPC?)和也保护 /ui.
- 是否有更好的方法连接到每个堆栈?
- 在 8500 之前使用具有基本身份验证的 nginx 代理服务器来保护访问?
- 还在这个端口上使用 ssl 拦截并且仍然使用 8500 或者更确切地说使用配置的 https 端口(在 consul HTTPS API)
- 使用 ACL 来保护访问? (大量设置允许堆栈成员访问 - 需要 TLS?)
一般来说,如果不使用 TLS(客户端需要做很多工作来设置),什么概念适合这个需要与堆栈服务器通信以安全地写入其 KV。
如果我遗漏了什么,很乐意添加您要求的任何内容
关于这个的答案是
- 在领事服务器上启用 ACL
{
"acl_datacenter": "stable",
"acl_default_policy": "deny",
"acl_down_policy": "deny"
}
- 使用 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>
确保在这里使用在服务器启动期间创建的主令牌
还可以选择配置八卦,让您的客户端进行加密通信(否则 ACL 有点没有意义)
将通用令牌添加到您远程使用的领事客户端,以便能够与远程领事交谈 - 因为该领事将不再公开做任何事情(没有令牌)