에이전트 암호화 모범 사례

에이전트 암호화 모범 사례 (Agent encryption best practices)

이 페이지에서는 데이터센터에서 Consul 에이전트 간 gossip 암호화와 mTLS 암호화를 구성하기 위한 모범 사례를 나열해요.

출처: 문서

본문

이 페이지에서는 데이터센터에서 Consul 에이전트 간 gossip 암호화와 mTLS 암호화를 구성하기 위한 모범 사례를 나열합니다.

Gossip 암호화 모범 사례 (Gossip encryption best practices)

다음은 gossip 암호화에 대한 권장 사례 목록입니다.

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"

더 알아보기 (Learn more)