【问题标题】:ACL not getting enabled in consul没有在领事中启用 ACL
【发布时间】:2015-10-26 12:03:44
【问题描述】:

我在单个实例上设置了领事。 web-ui 运行良好,但 ACL 未启用。以前我没有任何配置文件,但现在我在/etc/consul.d/bootstrap/ 中创建了一个config.json 文件,内容如下。

{
    "bootstrap": true,
    "server": true,
    "datacenter": "dc1",
    "acl_datacenter": "dc1",
    "data_dir": "/var/consul",
    "encrypt": "consul keygen output",
    "ca_file": "/etc/consul.d/ssl/ca.cert",
    "cert_file": "/etc/consul.d/ssl/consul.cert",
    "key_file": "/etc/consul.d/ssl/consul.key",
    "verify_incoming": true,
    "verify_outgoing": true,
    "log_level": "INFO",
    "enable_syslog": true
}

比我运行以下命令

consul 代理 -server -bootstrap -data-dir /tmp/consul -ui-dir /home/ubuntu/dist/ -client=X.X.X.X

X.X.X.X 是我的实例的私有 ip

但 ACL 未启用。

/etc/consul.d/server/config.json

{
    "bootstrap": false,
    "server": false,
    "log_level": "DEBUG",
    "enable_syslog": true,
    "datacenter": "dc1",
    "data_dir": "/var/consul",
    "ui_dir": "/home/ubuntu/dist",
    "acl_datacenter": "dc1"
    "encrypt": "SECRET"
}

/etc/consul.d/server/config.json

{
    "bootstrap": false,
    "server": true,
    "log_level": "DEBUG",
    "enable_syslog": true,
    "datacenter": "dc1",
    "data_dir": "/var/consul",
    "acl_datacenter": "dc1",
    "acl_default_policy": "allow",
    "encrypt": "SECRET"
}

工作配置文件

{
    "bootstrap": true,
    "server": true,
    "log_level": "DEBUG",
    "enable_syslog": true,
    "datacenter": "dc1",
    "addresses" : {
      "http": "X.X.X.X"
    },
    "bind_addr": "X.X.X.X",
    "node_name": "X.X.X.X",
    "data_dir": "/tmp/consul",
    "ui_dir": "~/dist",
    "acl_datacenter": "dc1",
    "acl_master_token": "secret",
    "encrypt": "secret"
}

现在运行以下命令

consul agent -config-dir ~/server -ui-dir ~/dist -bootstrap true -client=X.X.X.X

【问题讨论】:

  • 由于您只运行单个实例,请将您的config.json 的配置发布在/etc/consul.d/server/etc/consul.d/client 目录中。
  • @AnkitKulkarni 添加了所需的 'config.json' 文件的内容

标签: amazon-web-services consul


【解决方案1】:

您的配置中缺少主令牌。如果你添加这个,

"acl_master_token": "secret",并且在您的 UI 中使用相同的令牌,您应该能够使用 ACL。

注意:如果您使用的是单节点实例,请不要将acl_token 属性设置为与您的主令牌相同。这意味着任何有权访问 UI 的人都可以访问master token,基本上绕过了您的所有 ACL 规则。该属性只能在服务器节点上设置。

在让它运行良好后,我创建了一个截屏视频来演示如何在单个服务器上设置consulHere is the link

【讨论】:

  • 我没有明白你的意思,“不要将 acl_token 属性设置为与你的主令牌相同”
  • acl_master_token 就像预期的令牌,用于编辑 ACL。 acl_token 是该客户端/服务器提交的令牌。只有服务器应该具有与acl_master_token 相同的acl_token。在客户端上将它们设置为相同会禁用您的 ACL。
  • 我在引导配置和服务器配置文件中添加了 acl_master_token。还在设置部分下的 web-ui 中添加了相同的标记。并通过命令“consul agent -server -bootstrap -data-dir /tmp/consul -ui-dir /home/ubuntu/dist/ -client=X.X.X.X”启动领事,仍然显示 ACL 已禁用。
  • 我已经在gist.github.com/cskksc/ad0862509dbfe177debc 上传了一个示例引导配置。使用consul agent -config-dir ~/consul_config -ui-dir ~/consul_config/dist -bootstrap true 运行它,然后在您的Web ui 中输入secret 作为令牌(最右边的齿轮按钮)。
  • 我也试过这种方式。根据示例引导配置中提到的配置制作了一个 config.json 文件。使用您提到的命令启动领事并访问了 url 'example.com:8500/ui` 它给出了错误HTTP error code from Consul: 0 error
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 2021-01-18
相关资源
最近更新 更多