Terraform Secret 관리하기
rsadecrypt를 활용한 Secret 관리
Reference
openssl
명령어로 개인키와 공개키를 생성합니다. 개인키 생성시 사용하는 비트 수에 따라 암호화할 수 있는 문자열의 최대 길이가 달라집니다.
openssl genrsa -out private.pem 4096
openssl rsa -in private.pem -pubout -out public.pem
아래 명령어로 원하는 값을 암호화/복호화 할 수 있습니다.
echo -n 'secret' \
| openssl pkeyutl -encrypt -pubin -inkey public.pem \
| base64 \
| tr -d '\n' \
| xargs -0 echo
echo -n 'encryptedSecret' \
| base64 -d \
| openssl pkeyutl -decrypt -inkey private.pem \
| xargs -0 echo
암호화된 값은 Terraform에서 아래와 같은 방식으로 사용할 수 있습니다.
variable "private_pem_path" {
type = string
}
locals {
private_pem = file("${var.private_pem_path}")
}
output "secret" {
value = rsadecrypt("encryptedSecret", local.private_pem)
}