미리 준비하십시오
환경 : Linux 시스템
버전 : V1.6.2
다운로드 : https://www.consul.io/downloads.html
구성 파일 : config-acl.json
{
"datacenter":"tencent-datacenter",
"data_dir":"/usr/local/consul-1.6.2/data",
"log_file":"/usr/local/consul-1.6.2/log/",
"log_level":"INFO",
"bind_addr":"0.0.0.0",
"client_addr":"0.0.0.0",
"node_name":"tencent-node",
"ui":true,
"bootstrap_expect":1,
"server":true,
"acl":{
"enabled":true,
"default_policy":"deny",
"enable_token_persistence":true,
"enable_key_list_policy":true
}
}
- acl.enabled : acl 활성화
- acl.default_policy : 정책, 기본적으로 거부 거부, 기본적으로 허용 허용
- acl.enable_token_persistence : 영구 토큰 허용
- acl. enable_key_list_policy : KV의 재귀 적 작업 허용
Consul 시작 :./consul agent -config-file=config-acl.json
ACL 사용 시나리오
- 에이전트의 액세스 제어
- 서비스 등록 / 검색 접근 제어
- KV 액세스 제어
ACL 사용 단계
첫째, Consul ACL 초기화
bash : consul acl bootstrap
생성 된 정보는 다음과 같습니다 (정보 저장).
AccessorID: xxxx-xxxx-xxxx-xxxx-xxxx
SecretID: xxxx-xxxx-xxxx-xxxx-xxxx
Description: Bootstrap Token (Global Management)
Local: false
Create Time: 2019-12-23 12:06:53.799083966 +0800 CST
Policies:
00000000-0000-0000-0000-000000000001 - global-management
이 명령을 실행하여 생성 된 AccessorID 및 SecretID가 가장 높은 권한을 갖습니다.
둘째, 구성 규칙
브라우저 액세스 : localhost:8500
ACL 탭에서 위의 SecretID를 입력하면 다음 페이지가 표시됩니다.
기본 정책 : 글로벌 관리, 최고 관리자와 동일한 최고 권한을 가진 SecretID입니다.
AccessorID : 액세스 ID입니다. 토큰이 하나뿐입니다. 입력 할 레코드를 클릭하면
범위 :
역할 및 정책 : 권한 또는 정책 있음, AccessorID가 다른 역할 및 정책을 연결하여 액세스 권한을 제어합니다.
다음은 몇 가지 정책 사례입니다.
1) 서비스 정책
service_prefix "" {
policy = "write"
}
위의 전략은 모든 서비스를 작성할 수 있음을 의미합니다.
특정 전략 참조 : 서비스 규칙
2) KV 전략
key_prefix "" {
policy = "list"
}
key_prefix "" {
policy = "write"
}
key_prefix "config/" {
policy = "read"
}
첫 번째 : 모든 KV가 재귀 목록 작업을 수행 할 수 있음을 나타냅니다.이 옵션 "enable_key_list_policy":true
은 구성 파일이 지정된 후에 만 적용 됩니다 .
두 번째 : 모든 KV가 쓰기 작업을 수행 할 수 있습니다.
세 번째 : config /로 시작하는 키를 읽을 수 있습니다.
특정 전략 참조 : 키-값-규칙