Consul ACL

Consul ACL

Consul和其他系统ACL的区别

  • 通常的ACL授权例如etcd使用用户名:密码对的方式来认证用户,用户名是可能是公开的,密码是保密的用户自己知道;但是consul没有使用用户名:密码对的方式,就使用一个token值;那么既然只有一个值,就必须注意保密,不能使用约定的名字字符串,例如root, tom, jerry等,因为别人很容易猜出来,现在consul使用的字符串时UUID,既唯一又随机,不能被猜出来。
  • consul的三类权限类型
    • read: 读
    • write: 读和写
    • deny: 不能访问,既不能读也不能写了。

激活ACL

consul的ACL激活需要在所有的consul节点上,办法是,创建一个json格式的配置文件:

{
   "acl": {
       "enabled": true,
       "default_policy": "allow",
       "enable_token_persistence": true,
       "tokens": {
           "master": "***"
      }
   }
}

注意:该文件一定要放置到consul agent通过参数-config-dir指定的目录下面,缺省目录是:/consul/config/

这个相同的文件需要部署到所有的consul节点上。

关于tokens.master值,这个就是Bootstrap Token
Bootstrap Token相当于Unix系统中的root,具有所有的权限。
其名字可以是任意字符串,不一定是一个UUID值。(使用UUID为了安全用户无法猜测。)

配置acl

创建一个agent token

先创建一个policy,可以用api也可以用ui界面,这里通过Ui来配置。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rSHU2hOS-1607585820285)(C:\Users\taiji\Desktop\consul\consul acl.png)]

用这个policy创建一个token

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xVF0GXzr-1607585820287)(C:\Users\taiji\Desktop\consul\consul acl1.png)]

查看token值 ,可以用api也可以用ui界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iEztYG3f-1607585820288)(C:\Users\taiji\Desktop\consul\consul acl2.png)]

修改服务配置文件,将"default_policy"值改为"deny","tokens"节点新增"agent"值

{
   "acl": {
       "enabled": true,
       "default_policy": "allow",
       "enable_token_persistence": true,
       "tokens": {
           "master": "***"
           "agent":"920dfd67-88c1-f82c-ef34-c1d39d72bee0"
       }
   }
}

修改客户端配置文件,新增acl配置

{
   "acl": {
       "tokens": {
           "agent":"920dfd67-88c1-f82c-ef34-c1d39d72bee0"
       }
   }
}

重新启动consul,加载新的配置文件。

添加服务注册token

没配置ACL之前默认策略为allow,可以任意进行服务注册,配置acl后,可以添加一个用于服务注册的token,某个服务要注册到consul,必须带上这个token。

先添加一个策略,可以用api也可以用ui界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gupTZmMs-1607585820290)(C:\Users\taiji\Desktop\consul\consul acl3.png)]

再用这个策略创建一个token,可以用api也可以用ui界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2KMwOaxw-1607585820291)(C:\Users\taiji\Desktop\consul\consul acl4.png)]

查看token值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0wpzwJRY-1607585820292)(C:\Users\taiji\Desktop\consul\consul acl5.png)]

服务注册

把查看到的token复制到acl-token 对应的value中。

spring:
  profiles: dev
  cloud:
    consul:
      host: localhost
      port: 8500
      config:
        enabled: true
        format: YAML
        prefix: config
        profile-separator: ","
        data-key: data
        acl-token: 2e21c3fd-beab-c10d-cf13-5f1aeebae81b
      discovery:
        healthCheckInterval: 30s
        acl-token: 2e21c3fd-beab-c10d-cf13-5f1aeebae81b

启动服务,查看是否注册成功。

ACL规则

合理分配token的权限(制定ACL规则),官方文档有一例分配说明:

# Default all keys to read-only
key "" {
  policy = "read"
}
key "foo/" {
  policy = "write"
}
key "foo/private/" {
  # Deny access to the dir "foo/private"
  policy = "deny"
}
# Default all services to allow registration. Also permits all
# services to be discovered.
service "" {
    policy = "write"
}
# Deny registration access to services prefixed "secure-".
# Discovery of the service is still allowed in read mode.
service "secure-" {
    policy = "read"
}
# Allow firing any user event by default.
event "" {
    policy = "write"
}
# Deny firing events prefixed with "destroy-".
event "destroy-" {
    policy = "deny"
}
# Default prepared queries to read-only.
query "" {
    policy = "read"
}
# Read-only mode for the encryption keyring by default (list only)
keyring = "read"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Consul ACL(Access Control List)是Consul中用于配置和管理访问控制的功能。引用中提到了配置ACL的步骤,包括在各节点启动时启用ACL,并在配置文件夹目录中添加acl.hcl文件。这个文件包含了ACL的配置信息,如启用ACL、默认策略、令牌持久化等。通过重新启动节点,ACL的配置就会生效。 引用中提到了根据规则文件生成策略的步骤。在Consul中,可以通过创建策略来定义ACL的规则。可以使用命令行工具consul acl policy create来创建策略,并指定策略的名称、规则文件和对应的权限令牌。这样就可以为不同的访问需求创建不同的策略。 另外,引用提到了AWS SSM参数引导和管理Consul ACL的实用程序。这个工具可以让您安全地从AWS SSM中存储ACL定义和令牌ID,并简化在多环境场景中引导ACL的过程。 所以,Consul ACL是用于配置和管理Consul中访问控制的功能,它可以通过配置文件和命令行工具来实现。同时,AWS SSM参数也提供了方便的管理工具来简化ACL的引导和管理过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [consul--基础--06--ACL](https://blog.csdn.net/zhou920786312/article/details/127738110)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [consulssm:通过AWS SSM参数引导和管理Consul ACL](https://download.csdn.net/download/weixin_42162171/18299398)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值