翻译自: Secure Consul with Access Control Lists (ACLs)
转载请注明🙂,喜欢请一键三连哦 😊
Consul ACL

前言

Consul通过ACLS 来确保安全的访问 UI, API, CLI, servie 通信,Agent通信。

如果想要确保数据中心安全,你应该首先配置ACLS。

ACL核心原理是,将规则分组为策略, 然后一个或多个策略于令牌关联。

启用ACL系统分为两步, 开启ACL创建令牌(Token)

Consul ACL 引导

启用ACL

default_plolicy: 默认策略, deny标识默认拒绝所有操作, allow标识默认允许所有操作。
enable_token_persistence :持久化到磁盘,重启时重新加载。

acl = {
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true
}

PS: docker 启用ACL方式如下:


docker run -d -p 8500:8500  --name=consul-server1 consul agent -server -bind='172.17.0.2'  -bootstrap=true -node='172.17.0.2' -client='0.0.0.0' -ui -hcl=' acl { enabled = true
	enable_token_persistence = true 
	default_policy = \"deny\"  
}'

初始化ACL Tocken

创建初始令牌—— 内置策略(全局管理),相当于管理员令牌,可以授予一部份管理员全局访问权限。

执行如下命令:


consul acl bootstrap

或通过 HTTP API:

curl \
    --request PUT \
    http://127.0.0.1:8500/v1/acl/bootstrap

Response:

AccessorID:       42542b87-de2a-7173-2ce3-f96ef41dbf01
SecretID:         477cf0a8-0d69-5551-7313-db40a33ae78f
Description:      Bootstrap Token (Global Management)
Local:            false
Create Time:      2020-12-15 02:30:39.804724128 +0000 UTC
Policies:
   00000000-0000-0000-0000-000000000001 - global-management

ACL启动后,会创建全局的管理的内置策略, 相当于管理员最高权限, SecretID即为 global-management策略的Token.

到这里, Consul ACL 系统就已经启动了。

验证

此时,执行 HTTP请求 或 CLI命令,会发现返回结果为[], 或直接返回权限不足403。访问UI界面,此时需要登陆才能观测到数据。

X-Consul-Token 添加至Header, 或设置 CONSUL_HTTP_TOKEN 环境变量, VALUE为 Policy的Secret ID,此时将返回正确解决结果。 鉴权可参考: Consul HTTP API-Authentication

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐