키 관리 시크릿 엔진
키 관리 시크릿 엔진
Enterprise 기능 — 적절한 Vault Enterprise 라이선스 또는 HCP Vault Dedicated 클러스터가 필요해요. 키 관리 시크릿 엔진은 Advanced Data Protection(ADP) 모듈이 포함된 Vault Enterprise가 필요해요.
키 관리 시크릿 엔진은 다양한 키 관리 서비스(KMS) 공급자에서 암호화 키의 배포와 수명주기 관리를 위한 일관된 워크플로를 제공해요. 조직이 KMS 공급자 고유의 암호화 기능을 활용하면서도 Vault에서 키를 중앙 집중식으로 제어할 수 있게 해요.
이 시크릿 엔진은 키 자료의 원본 사본을 생성하고 소유해요. 운영자가 지원되는 KMS 공급자 중 하나에서 키의 수명주기를 배포·관리하기로 결정하면, 키 자료의 사본이 배포돼요. 이렇게 하면 KMS 공급자에서 키의 전체 수명주기에 대한 추가적인 내구성과 재해 복구 수단이 제공돼요.
키 자료는 항상 지원되는 KMS 공급자의 키 가져오기 사양에 따라 안전하게 전송돼요.
참고: Key Management 시크릿 엔진은 외부 플러그인으로 실행할 수 있어요. Vault Enterprise 호환 버전과 Enterprise 플러그인 등록 방법은 Plugin management 페이지의 Enterprise 플러그인 섹션을 참고하세요.
출처: 문서
본문
설정(Setup)
대부분의 시크릿 엔진은 기능을 수행하기 전에 미리 구성해야 해요. 이 단계는 보통 운영자 또는 구성 관리 도구가 수행해요.
키 관리 시크릿 엔진을 활성화해요.
$ vault secrets enable keymgmt
Success! Enabled the keymgmt secrets engine at: keymgmt/
기본적으로 시크릿 엔진은 엔진 이름 그대로의 경로에 마운트돼요. 다른 경로에 두고 싶다면 -path 인자를 사용하면 됩니다.
사용법(Usage)
시크릿 엔진이 마운트되고 사용자/머신이 적절한 권한을 가진 Vault 토큰을 갖고 있으면, 이 시크릿 엔진으로 지원되는 KMS 공급자에서 암호화 키를 생성·배포·수명주기 관리할 수 있어요.
-
지정된 유형의 명명된 암호화 키를 만들어요.
$ vault write -f keymgmt/key/example-key type="rsa-2048" Success! Data written to: keymgmt/key/example-key시크릿 엔진이 만든 키는 KMS 공급자에 배포되기 전까지 범용(general-purpose)으로 간주돼요.
-
KMS 공급자를 구성해요.
$ vault write keymgmt/kms/example-kms \ provider="azurekeyvault" \ key_collection="keyvault-name" \ credentials=client_id="a0454cd1-e28e-405e-bc50-7477fa8a00b7" \ credentials=client_secret="eR%HizuCVEpAKgeaUEx" \ credentials=tenant_id="cd4bf224-d114-4f96-9bbc-b8f45751c43f"개념적으로 KMS 공급자 리소스는 키가 배포되고 이후 관리될 대상을 나타내요. 일반적인 파라미터 집합으로 구성되며, 일반 파라미터에 제공되는 값은 지정된
provider에 따라 달라져요. 이 작업은 명명된 Azure Key Vault 인스턴스를 나타내는 KMS 공급자를 만들어요.azurekeyvault공급자와 다른 공급자별 파라미터 값을 지정해서 이뤄져요. 각 지원 KMS 공급자 구성 방법은 KMS Providers 섹션을 참고하세요. -
키를 KMS 공급자에 배포해요.
$ vault write keymgmt/kms/example-kms/key/example-key \ purpose="encrypt,decrypt" \ protection="hsm"이 작업은 명명된 키의 사본을 특정 목적(
purpose)과 보호 수준(protection)으로 KMS 공급자에 배포해요.purpose는 키가 KMS 공급자에서 가질 암호화 기능의 집합을 정의해요.protection은 키로 암호화 작업이 수행되는 위치를 정의해요. 지원되는 purpose와 protection 값 목록은 API 문서를 참고하세요.참고: 키를 KMS 공급자에 배포하는 데 걸리는 시간은 키가 가진 버전 수에 비례해요. 배포 중 타임아웃이 발생하면
VAULT_CLIENT_TIMEOUT을 늘려야 할 수 있어요. -
키를 회전시켜요.
$ vault write -f keymgmt/key/example-key/rotate키를 회전하면 새 키 자료를 담은 새 키 버전이 생성돼요. 키는 Vault와 키가 배포된 KMS 공급자 양쪽에서 회전돼요. 새 키 버전은 활성화되고 KMS 공급자의 암호화 작업을 위한 현재 버전으로 설정돼요.
-
키 버전을 활성화하거나 비활성화해요.
$ vault write keymgmt/key/example-key min_enabled_version=2키의
min_enabled_version을 업데이트해 키 버전 시퀀스를 활성화/비활성화할 수 있어요.min_enabled_version보다 작은 키 버전은 모두 키가 배포된 KMS 공급자에서 암호화 작업이 비활성화돼요.min_enabled_version을 0으로 설정하면 모든 키 버전이 활성화돼요. -
키를 KMS 공급자에서 제거해요.
$ vault delete keymgmt/kms/example-kms/key/example-key이 작업은 KMS 공급자에서 키를 삭제해요. 키는 시크릿 엔진에 여전히 존재하며 나중에 KMS 공급자에 재배포할 수 있어요. 시크릿 엔진에서 키를 영구 삭제하려면 delete key API를 호출하면 돼요.
키 유형(Key types)
키 관리 시크릿 엔진은 다음 키 유형의 생성을 지원해요.
aes256-gcm96— 256비트 AES 키와 96비트 nonce를 사용하는 AES-GCM(대칭)rsa-2048— 비트 크기 2048의 RSA(비대칭)rsa-3072— 비트 크기 3072의 RSA(비대칭)rsa-4096— 비트 크기 4096의 RSA(비대칭)ecdsa-p256— P-256 타원 곡선을 사용하는 ECDSA(비대칭)ecdsa-p384— P-384 타원 곡선을 사용하는 ECDSA(비대칭)ecdsa-p521— P-521 타원 곡선을 사용하는 ECDSA(비대칭)
KMS 공급자(KMS providers)
키 관리 시크릿 엔진은 다음 KMS 공급자에서 키의 수명주기 관리를 지원해요.
- Azure Key Vault
- AWS KMS
- GCP Cloud KMS
각 공급자를 제대로 구성하는 방법은 공급자별 문서를 참고하세요.
호환성(Compatibility)
다음 표는 각 KMS 공급자와 호환되는 키 유형을 정의해요.
| 키 유형 | Azure Key Vault | AWS KMS | GCP Cloud KMS |
|---|---|---|---|
| aes256-gcm96 | 아니요 | 예 | 예 |
| rsa-2048 | 예 | 아니요 | 예 |
| rsa-3072 | 예 | 아니요 | 예 |
| rsa-4096 | 예 | 아니요 | 예 |
| ecdsa-p256 | 아니요 | 아니요 | 예 |
| ecdsa-p384 | 아니요 | 아니요 | 예 |
| ecdsa-p521 | 아니요 | 아니요 | 아니요 |
API
키 관리 시크릿 엔진은 완전한 HTTP API를 갖고 있어요. 자세한 내용은 Key Management Secrets Engine API를 참고해 주세요.
Terraform
Vault Terraform 공급자로 키 관리 시크릿 리소스를 프로그래밍 방식으로 관리할 수 있어요. 자세한 내용은 Terraform Registry 문서를 참고해 주세요.
- Key management 시크릿 엔진 키 리소스
- Key management AWS KMS 리소스
- Key management Azure Key Vault 리소스
- Key management Google Cloud KMS 리소스
- Key management 키 회전 리소스
- Key management 키 배포 리소스
- Key management 키 복제 리소스
더 알아보기 (Learn more)
- KMS Providers 섹션에서 Azure Key Vault·AWS KMS·GCP Cloud KMS 구성 방법을 확인해 보세요.
- Key Management Secrets Engine API 문서에서 HTTP API를 확인해 보세요.