翻译自: Secure Consul with Access Control Lists (ACLs)
转载请注明🙂,喜欢请一键三连哦 😊
前言
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