Consul的ACL机制是基于令牌的访问控制模型。当Consul启用ACL时,所有的请求都需要在请求头中包含ACL token。Consul会检查请求头中的ACL token,并使用它来确定请求是否被授权访问相应的资源。
ACL token可以通过ACL policy分配给用户。ACL policy定义了一个规则集,用于确定哪些资源可以被访问以及哪些操作可以执行。ACL policy由HCL(HashiCorp Configuration Language)编写,并通过Consul API进行创建和管理。
在ACL policy中,可以定义以下内容:
node
:限制对节点的访问。可以指定节点的名称、ID或标签。key
:限制对键值存储的访问。可以指定键的前缀、后缀、名称或全路径。service
:限制对服务的访问。可以指定服务的名称或ID。agent
:限制对代理的访问。可以指定代理的名称或ID。query
:限制查询请求的访问。可以指定查询的名称或ID。
可以组合这些规则,以创建更为复杂的ACL policy。
ACL token是一个用于访问Consul资源的令牌。ACL token可以分配给用户或应用程序,并由用户或应用程序在请求头中传递。ACL token可以被赋予多个ACL policy,并且一个ACL policy可以被分配给多个ACL token。
ACL token可以由Consul CLI或API进行创建和管理。在创建ACL token时,可以为其指定描述和有效期。有效期过期后,ACL token将自动失效,无法再被使用。