前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Consul 的 ACL(访问控制列表)机制

Consul 的 ACL(访问控制列表)机制

原创
作者头像
堕落飞鸟
发布2023-04-18 07:26:00
1.6K0
发布2023-04-18 07:26:00
举报
文章被收录于专栏:飞鸟的专栏

Consul是一个开源的分布式服务发现和配置管理工具,支持多种功能,包括健康检查、KV存储和ACL(访问控制列表)等。ACL机制是Consul的一项重要功能,它可以帮助用户保护其集群中的服务和数据不受未经授权的访问。

配置ACL

Consul的ACL机制是默认关闭的,用户需要手动启用并配置ACL才能使用。启用ACL后,Consul会要求客户端进行身份验证,并根据其权限决定其是否可以访问某些资源。在Consul中,用户可以为每个ACL配置一个访问策略,包括访问控制列表、策略和令牌。下面是配置ACL的步骤:

步骤1:创建ACL token

首先,需要创建一个ACL token,用于授权Consul的客户端和用户。ACL token是一种标识符,它可以用来验证客户端的身份,并根据其权限授权其访问某些资源。可以使用Consul的Web UI或Consul API创建ACL token。

使用Web UI创建ACL token:

  1. 打开Consul Web UI并登录。
  2. 转到“ACLs”选项卡并单击“Create Token”。
  3. 在“Create Token”对话框中输入ACL token的名称和其他详细信息,然后单击“Create Token”。

使用Consul API创建ACL token:

代码语言:javascript
复制
$ curl \
    --request PUT \
    --data \
    '{
        "Name": "My Token",
        "Type": "client",
        "Rules": "node_prefix \"\" { policy = \"read\" } service_prefix \"\" { policy = \"write\" }"
    }' \
    http://localhost:8500/v1/acl/create

该命令将创建一个名为“My Token”的ACL token,其类型为“client”,并且只允许读取节点和写入服务。

步骤2:启用ACL

启用ACL需要在Consul配置文件中设置以下参数:

代码语言:javascript
复制
acl {
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true
}
  • enabled参数启用ACL机制。
  • default_policy参数设置默认策略,允许或拒绝访问。默认设置为“deny”,表示所有未明确授权的访问都将被拒绝。
  • enable_token_persistence参数启用ACL token持久化,以便Consul重启后仍然保留ACL token。

步骤3:分配ACL token

现在,需要将ACL token分配给Consul的客户端和用户。有两种方法可以分配ACL token:使用环境变量或配置文件。

使用环境变量分配ACL token:

代码语言:javascript
复制
$ export CONSUL_HTTP_TOKEN=<token>
$ consul acl policy create -name "web" -rules \
    'service "web" { policy = "write" } node_prefix "" { policy = "read" }'
$ consul acl token create -description "Web Token" -policy-name "web"

这个命令将创建一个名为“web”的策略,该策略允许写入名为“web”的服务并读取所有节点,并使用该策略创建一个名为“Web Token”的ACL token。

使用配置文件分配ACL token:

在Consul客户端配置文件中添加以下参数:

代码语言:javascript
复制
acl {
  tokens {
    agent = "token-value"
  }
}

这将在客户端配置文件中配置ACL token,并为代理分配ACL token。

使用ACL

启用ACL后,Consul会要求客户端进行身份验证,并根据其权限授权其访问某些资源。在Consul中,用户可以为每个ACL配置一个访问策略,包括访问控制列表、策略和令牌。下面是如何使用ACL的示例:

示例1:创建KV存储并分配ACL

创建一个名为“test”和值为“value”的键值对:

代码语言:javascript
复制
$ consul kv put test value

创建一个ACL policy,该策略只允许读取键值对:

代码语言:javascript
复制
$ consul acl policy create -name "test-read" -rules \
    'key_prefix "test" { policy = "read" }'

使用ACL policy创建一个ACL token:

代码语言:javascript
复制
$ consul acl token create -description "Test Read Token" -policy-name "test-read"

使用ACL token读取键值对:

代码语言:javascript
复制
$ curl \
    --header "X-Consul-Token: <test-read-token>" \
    http://localhost:8500/v1/kv/test

示例2:创建服务并分配ACL

创建一个名为“web”的服务:

代码语言:javascript
复制
$ consul services register -name web -port 80

创建一个ACL policy,该策略只允许写入“web”服务:

代码语言:javascript
复制
$ consul acl policy create -name "web-write" -rules \
    'service "web" { policy = "write" }'

使用ACL policy创建一个ACL token:

代码语言:javascript
复制
$ consul acl token create -description "Web Write Token" -policy-name "web-write"

使用ACL token注册“web”服务:

代码语言:javascript
复制
$ curl \
    --header "X-Consul-Token: <web-write-token>" \
    --request PUT \
    --data \
    '{
        "ID": "web1",
        "Name": "web",
        "Address": "10.0.0.1",
        "Port": 80
    }' \
    http://localhost:8500/v1/agent/service/register

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置ACL
    • 步骤1:创建ACL token
      • 步骤2:启用ACL
        • 步骤3:分配ACL token
        • 使用ACL
          • 示例1:创建KV存储并分配ACL
            • 创建一个名为“test”和值为“value”的键值对:
              • 创建一个ACL policy,该策略只允许读取键值对:
                • 使用ACL policy创建一个ACL token:
                  • 使用ACL token读取键值对:
                    • 示例2:创建服务并分配ACL
                      • 创建一个名为“web”的服务:
                        • 创建一个ACL policy,该策略只允许写入“web”服务:
                          • 使用ACL policy创建一个ACL token:
                            • 使用ACL token注册“web”服务:
                            相关产品与服务
                            多因子身份认证
                            多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档