AWS KMS

AWS KMS

Enterprise 기능 — 적절한 Vault Enterprise 라이선스 또는 HCP Vault Dedicated 클러스터가 필요해요. AWS KMS 시크릿 엔진은 Advanced Data Protection(ADP) 모듈이 포함된 Vault Enterprise가 필요해요.

Key Management 시크릿 엔진은 AWS KMS 리전에서 키의 수명주기 관리를 지원해요. 이는 awskms 공급자와 다른 공급자별 파라미터 값으로 KMS 공급자 리소스를 구성해서 이뤄져요.

다음 섹션에서 기능을 활성화하도록 시크릿 엔진을 제대로 구성하는 방법을 설명할게요.

출처: 문서

본문

인증(Authentication)

Key Management 시크릿 엔진은 AWS KMS 리전에서 키를 관리할 수 있는 충분한 권한을 가진 자격 증명으로 구성해야 해요. 인증 파라미터는 API 문서의 credentials 섹션에 설명돼 있어요. 인증 파라미터는 다음 우선순위 순서로 설정돼요.

  1. KMS 공급자 자격 증명
  2. 환경 변수
  3. 공유 자격 증명 파일(shared credentials file)
  4. AWS EC2 또는 ECS 태스크의 IAM 역할

제공된 자격 증명에 연결된 IAM 주체는 다음 최소 AWS KMS 권한을 가져야 해요.

  • kms:CreateKey
  • kms:GetParametersForImport
  • kms:ImportKeyMaterial
  • kms:EnableKey
  • kms:DisableKey
  • kms:ScheduleKeyDeletion
  • kms:CreateAlias
  • kms:UpdateAlias
  • kms:DeleteAlias
  • kms:ListAliases
  • kms:TagResource

멀티 리전 키를 사용하려면 다음 권한이 있어야 해요.

  • kms:ReplicateKey
  • kms:DescribeKey

구성(Configuration)

Vault CLI로 KMS 공급자 리소스를 구성하는 예시는 다음과 같아요.

$ vault write keymgmt/kms/example-kms \
    provider="awskms" \
    key_collection="us-west-1" \
    credentials=access_key="ASIADJO3WTX6WPLJM42V" \
    credentials=secret_key="bCiYmNroLxLmPNQ47VIvjlm8mQu5oktZcQdq195w"

개별 구성 파라미터에 대한 자세한 설명은 AWS KMS API 문서를 참고하세요.

키 전송 사양(Key transfer specification)

키는 AWS KMS Bring Your Own Key 사양에 따라 시크릿 엔진에서 AWS KMS 리전으로 안전하게 전송돼요.

키 회전(Key rotation)

가져온 키 자료가 있는 AWS KMS 키는 AWS KMS 내에서 자동 키 회전 대상이 아니에요. 따라서 시크릿 엔진이 수행하는 키 회전은 수동 키 회전 프로세스를 사용해요. 애플리케이션은 가져온 키와 연결된 별칭(alias)을 참조해야 해요. 별칭은 항상 hashicorp/<key_name>-<unix_timestamp> 형태예요.

멀티 리전 키(Multi-region keys)

Key Management 시크릿 엔진으로 키를 AWS KMS 멀티 리전 키로 배포해 같은 키 자료를 여러 AWS 리전에서 사용할 수 있게 할 수 있어요. 멀티 리전 키는 암호화 작업의 지연 시간을 낮추고 크로스 리전 재해 복구에 도움이 되어 여러 리전에서 운영하는 애플리케이션의 성능을 개선할 수 있어요.

Vault는 현재 awskms 공급자에서 aes256-gcm96 키의 멀티 리전 지원을 제한하며, KMS 공급자 리소스의 key_collection 파라미터를 기준으로 primary 리전을 설정해요.

멀티 리전 키 복제(Multi-region key replication)

멀티 리전 키를 만들 때는 replica_regions를 설정하고 키 배포 후 /replicate 엔드포인트를 호출해야 해요.

  1. 명시적 복제 리전으로 키를 만들어요. 키 생성 후 할당된 리전은 변경할 수 없어요.

    $ vault write keymgmt/key/example-key \
        type="aes256-gcm96"               \
        replica_regions="us-east-1,eu-west-1"
    
  2. 키를 primary KMS 리전에 배포해요. 배포하면 primary 리전에 멀티 리전 primary CMK가 생성되고 키 자료가 가져와져요.

  3. /replicate 엔드포인트를 호출해 키 생성 중 replica_regions에 설정한 리전으로 키를 복제해요.

    $ vault write -f keymgmt/kms/example-kms/key/example-key/replicate
    

키 목적 호환성(Key purpose compatibility)

다음 표는 AWS KMS가 지원하는 각 키 유형에 사용할 수 있는 키 목적을 정의해요.

키 유형 목적
aes256-gcm96 encrypt and decrypt

API

키 관리 시크릿 엔진은 완전한 HTTP API를 갖고 있어요. 자세한 내용은 AWS Key Management secrets engine API를 참고해 주세요.

Terraform

Vault Terraform 공급자로 키 관리 시크릿 리소스를 프로그래밍 방식으로 관리할 수 있어요. 자세한 내용은 Terraform Registry 문서를 참고해 주세요.

  • Key management 시크릿 엔진 키 리소스
  • Key management AWS KMS 리소스
  • Key management 키 회전 리소스
  • Key management 키 배포 리소스
  • Key management 키 복제 리소스

더 알아보기 (Learn more)

  • AWS Key Management secrets engine API 문서에서 HTTP API를 확인해 보세요.
  • key-management 시크릿 엔진 개요와 KMS 공급자 목록을 살펴보세요.