설정 가이드 - GCP Cloud KMS

설정 가이드 - GCP Cloud KMS

GCP Cloud KMS 키 링의 수명주기를 관리하려면 gcpckms 공급자를 사용해 키 관리 시크릿 엔진을 설정해야 해요.

출처: 문서

본문

설정(Setup)

  1. 키 관리 시크릿 엔진을 활성화해요.

    $ vault secrets enable keymgmt
    
  2. example-kms라는 KMS 공급자 리소스를 구성해요.

    $ vault write keymgmt/kms/example-kms \
        provider="gcpckms" \
        key_collection="projects/<project-id>/locations/<location>/keyRings/<keyring>" \
        credentials=service_account_file="/path/to/service_account/credentials.json"
    

    이 명령은 다음을 지정해요.

    • Vault에서 이 KMS 공급자 인스턴스의 전체 경로(keymgmt/kms/example-kms)
    • gcpckms로 설정된 KMS 공급자 유형
    • 기존 GCP Cloud KMS 키 링의 리소스 ID를 가리키는 키 컬렉션(key collection). 이 값은 생성 후 변경할 수 없어요.
    • GCP Cloud KMS 인증에 사용할 자격 증명 파일. 이 파라미터 값 제공은 선택 사항이에요. GOOGLE_CREDENTIALS 환경 변수나 기본 애플리케이션 자격 증명으로도 자격 증명을 지정할 수 있으니까요.

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

사용법(Usage)

  1. keymgmt/key/aes256-gcm96 경로에 aes256-gcm96 유형의 새 키를 써요.

    $ vault write keymgmt/key/aes256-gcm96 type="aes256-gcm96"
    
  2. aes256-gcm96 키를 읽어요. 출력을 JSON으로 지정하고 jq로 파이프해요.

    $ vault read -format=json keymgmt/key/aes256-gcm96 | jq
    

    예시 출력:

    {
      "request_id": "631f98de-b755-9863-40db-f789ff9ff10a",
      "lease_id": "",
      "lease_duration": 0,
      "renewable": false,
      "data": {
        "deletion_allowed": false,
        "latest_version": 1,
        "min_enabled_version": 1,
        "name": "aes256-gcm96",
        "type": "aes256-gcm96",
        "versions": {
          "1": {
            "creation_time": "2021-11-16T13:07:17.878864-05:00"
          }
        }
      },
      "warnings": null
    }
    

    versions의 값에 주목해요. Vault가 아는 이 키의 첫 번째 버전이므로 1이에요. 이 값은 나중에 키 회전 예시에 나올 거예요.

  3. 작성한 키를 사용하려면 Cloud KMS에 배포해야 해요. aes256-gcm96 키를 keymgmt/kms/example-kms/key/aes256-gcm96 경로의 Cloud KMS에 추가해요.

    $ vault write keymgmt/kms/example-kms/key/aes256-gcm96 \
        purpose="encrypt,decrypt" \
        protection="hsm"
    
  4. Cloud KMS 인스턴스에 배포된 키를 나열해요.

    $ vault list keymgmt/kms/gcpckms/key/
    Keys
    ----
    aes256-gcm96
    
  5. 키를 회전시켜요.

    $ vault write -f keymgmt/key/aes256-gcm96/rotate
    
  6. 키를 읽고 .data.latest_version 값을 가져와 키 회전이 성공했는지 확인해요.

    $ vault read -format=json keymgmt/key/aes256-gcm96 | jq '.data.latest_version'
    2
    

    키는 이제 버전 2예요. Cloud Console에서는 Cloud Console UI 스크린샷에 보이는 것처럼 Primary version 아래의 키가 원래 값과 다른 버전 문자열을 가질 것으로 예상돼요.

더 알아보기 (Learn more)

  • GCP Cloud KMS 시크릿 엔진 개요와 인증·권한 요구 사항을 살펴보세요.
  • GCP Cloud KMS API 문서에서 구성 파라미터를 확인해 보세요.
  • key-management 시크릿 엔진 개요를 확인해 보세요.