Vault Agent Injector TLS 구성
Vault Agent Injector TLS 구성
중요 참고: 이 차트는 Helm 2와 호환되지 않습니다. 이 차트에는 Helm 3.6+를 사용하세요.
다음 지침은 Vault Agent Injector를 자체 서명 인증서로 수동 구성하는 방법을 보여줍니다.
본문
인증 기관(CA) 만들기
먼저 사용자 지정 인증 기관(CA)이 사용할 개인 키를 만듭니다.
$ openssl genrsa -out injector-ca.key 2048
다음으로 인증 기관 인증서를 만듭니다.
중요 참고:
days(인증서가 유효한 기간) 같은 값은 환경에 맞게 구성해야 합니다.
$ openssl req \
-x509 \
-new \
-nodes \
-key injector-ca.key \
-sha256 \
-days 1825 \
-out injector-ca.crt \
-subj "/C=US/ST=CA/L=San Francisco/O=HashiCorp/CN=vault-agent-injector-svc"
Vault Agent Injector 인증서 만들기
다음으로 위에서 생성한 CA가 서명한 인증서와 키를 만들 수 있습니다. 이 인증서와 키는 Vault Agent Injector가 Kubernetes API와의 TLS 통신에 사용합니다.
먼저 인증서용 개인 키를 만듭니다.
$ openssl genrsa -out tls.key 2048
다음으로 인증서 서명 시 사용할 CSR(certificate signing request)을 만듭니다.
$ openssl req \
-new \
-key tls.key \
-out tls.csr \
-subj "/C=US/ST=CA/L=San Francisco/O=HashiCorp/CN=vault-agent-injector-svc"
CSR을 만든 후 인증서 서명에 대한 추가 매개변수를 구성하는 확장 파일을 만듭니다.
중요 참고: 인증서의 대체 이름(alternative names)은 Vault Agent Injector Kubernetes 서비스와 그것이 생성된 네임스페이스의 이름을 사용하도록 구성해야 합니다. 이 예시에서 Vault Agent Injector 서비스 이름은
vault네임스페이스의vault-agent-injector-svc입니다.<k8s 서비스 이름>.<k8s 네임스페이스>.svc.cluster.local패턴을 사용합니다.
$ cat <<EOF >csr.conf
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = vault-agent-injector-svc
DNS.2 = vault-agent-injector-svc.vault
DNS.3 = vault-agent-injector-svc.vault.svc
DNS.4 = vault-agent-injector-svc.vault.svc.cluster.local
EOF
마지막으로 인증서를 서명합니다.
중요 참고:
days(인증서가 유효한 기간) 같은 값은 환경에 맞게 구성해야 합니다.
$ openssl x509 \
-req \
-in tls.csr \
-CA injector-ca.crt \
-CAkey injector-ca.key \
-CAcreateserial \
-out tls.crt \
-days 1825 \
-sha256 \
-extfile csr.conf
구성 (Configuration)
이제 인증 기관과 서명된 인증서를 만들었으니 Helm과 Vault Agent Injector가 이를 사용하도록 구성할 수 있습니다.
먼저 위에서 만든 인증서와 키를 담은 Kubernetes 시크릿을 만듭니다.
중요 참고: 이 예시는 Vault Agent Injector가
vault네임스페이스에서 실행된다고 가정합니다.
$ kubectl create secret generic injector-tls \
--from-file tls.crt \
--from-file tls.key \
--namespace=vault
다음으로 Kubernetes가 인증서의 진위를 검증할 수 있도록 인증 기관을 base64 인코딩합니다.
$ export CA_BUNDLE=$(cat injector-ca.crt | base64)
마지막으로 다음 사용자 지정 값으로 Vault Agent Injector를 설치합니다.
$ helm install vault hashicorp/vault \
--namespace=vault \
--set="injector.certs.secretName=injector-tls" \
--set="injector.certs.caBundle=${CA_BUNDLE?}"
출처: 문서