에이전트 암호화 모범 사례
에이전트 암호화 모범 사례 (Agent encryption best practices)
이 페이지에서는 데이터센터에서 Consul 에이전트 간 gossip 암호화와 mTLS 암호화를 구성하기 위한 모범 사례를 나열해요.
출처: 문서
본문
이 페이지에서는 데이터센터에서 Consul 에이전트 간 gossip 암호화와 mTLS 암호화를 구성하기 위한 모범 사례를 나열합니다.
Gossip 암호화 모범 사례 (Gossip encryption best practices)
다음은 gossip 암호화에 대한 권장 사례 목록입니다.
- Consul의 전반적인 보안을 개선하기 위해 gossip 암호화 키를 정기적으로 회전하세요. 런타임별 지침은 Rotate gossip encryption keys on VMs 또는 Rotate Gossip Encryption Keys for Consul on Kubernetes을 참조하세요.
- 가능하면 Vault와 Consul Template을 사용하여 gossip 키 회전을 자동화하세요. 자세한 내용은 Generate and manage gossip encryption for Consul with Vault and Consul Template을 참조하세요.
mTLS 암호화 모범 사례 (mTLS encryption best practices)
다음은 mTLS 암호화에 대한 권장 사례 목록입니다.
- 인증서에 만료 기간이 있는지 확인하세요. 이 만료 기간은 회사의 지침이나 특정 보안 요구 사항과 일치해야 합니다.
- Consul의
auto_encrypt또는auto_config기능 중 하나를 사용하여 클라이언트 인증서를 자동으로 배포하세요. - 자동 키 회전과 인증서 갱신을 위해 HashiCorp Vault와 같은 시크릿 관리 솔루션을 사용하는 것을 권장합니다. 자세한 내용과 추가 지침은 Generate mTLS Certificates for Consul with Vault and Consul Template을 참조하세요.
- 클러스터의 공격 표면을 줄이기 위해 와일드카드 인증서 사용을 피하세요. 대신 SAN(주체 대체 이름)과 함께 명명된 인증서를 활용하세요.
- Consul 에이전트에서
verify_server_hostname을 활성화하여 클라이언트가server.<dc>.<domain>과 일치하는 인증서를 제시하는 서버에서만 인증서 파일을 수락하도록 보장하세요. - 특히 Consul 클러스터 외부에 노출해야 하는 경우 API, CLI, UI 인터페이스를 HTTPS로 보호하세요. 이러한 서비스에 액세스를 제공하려면 방화벽 및 보안 그룹 규칙을 조정해야 할 수도 있습니다.
- API, CLI, UI와 함께 mTLS를 활용하려면 요청에 사용할 별도의 클라이언트 인증서를 생성하세요.
- HTTPS를 활성화한 후 서버 및 클라이언트 에이전트 구성에서
ports스탠자를 구성하여 HTTP 액세스를 비활성화하세요. 다음 예제는 이 구성을 보여줍니다:
Port configuration
HCL:
ports = {
https = 8501
http = -1
}
JSON:
"ports": {
"https": 8501
"http" : -1
}
- HTTPS를 활성화한 후 환경 변수를 사용하거나 Consul CLI 명령에 특정 플래그를 포함하세요. 그렇지 않으면 HTTPS를 활성화한 후 CLI와 API에 액세스할 수 없습니다. 다음 예제는 적절한 값을 보여줍니다:
Environment variables
$ export CONSUL_HTTP_ADDR=https://server.dc1.consul:8501
$ export CONSUL_CACERT=consul-agent-ca.pem
$ export CONSUL_CLIENT_CERT=cli.client.dc1.consul.crt
$ export CONSUL_CLIENT_KEY=cli.client.dc1.consul.key
CLI
$ consul members \
-http-addr="https://server.dc1.consul:8501" \
-ca-file="consul-agent-ca.pem" \
-client-cert="cli.client.dc1.consul.crt" \
-client-key="cli.client.dc1.consul.key"