OCI KMS seal 구성

OCI KMS seal 구성

OCI KMS seal은 Vault가 OCI KMS를 seal wrapping 메커니즘으로 사용하도록 구성합니다. OCI KMS seal은 다음 중 하나로 활성화됩니다:

출처: 문서

본문

Seal wrapping에는 Vault Enterprise가 필요합니다 모든 Vault 버전은 OCI KMS에 대해 auto-unseal을 지원하지만, seal wrapping에는 Vault Enterprise가 필요합니다. Vault Enterprise는 기본적으로 seal wrapping을 활성화하므로 KMS 서비스가 봉인 해제 과정 중뿐만 아니라 런타임에도 사용 가능해야 합니다. 자세한 내용은 Seal wrap overview를 참고하세요.

  • Vault 구성 파일에 seal "ocikms" 블록이 있는 경우
  • 환경 변수 VAULT_SEAL_TYPEocikms로 설정된 경우. 환경 변수로 활성화한다면 OCI KMS 고유의 다른 필수 값(즉 VAULT_OCIKMS_SEAL_KEY_ID, VAULT_OCIKMS_CRYPTO_ENDPOINT, VAULT_OCIKMS_MANAGEMENT_ENDPOINT)과 성공적인 인증에 도움이 되는 다른 모든 OCI 관련 환경 변수도 제공해야 합니다.

ocikms 예시

이 예시는 모든 필수 값을 제공해 Vault 구성 파일을 통해 OCI KMS seal을 구성합니다:

seal "ocikms" {
    key_id               = "ocid1.key.oc1.iad.afnxza26aag4s.abzwkljsbapzb2nrha5nt3s7s7p42ctcrcj72vn3kq5qx"
    crypto_endpoint      = "https://afnxza26aag4s-crypto.kms.us-ashburn-1.oraclecloud.com"
    management_endpoint  = "https://afnxza26aag4s-management.kms.us-ashburn-1.oraclecloud.com"
    auth_type_api_key    = "true"
}

ocikms 파라미터

다음 파라미터는 Vault 구성 파일의 seal 스탠자에 적용됩니다:

  • key_id (string: <required>): 사용할 OCI KMS 키 ID입니다. VAULT_OCIKMS_SEAL_KEY_ID 환경 변수로도 지정할 수 있습니다.

  • crypto_endpoint (string: <required>): OCI KMS 암호화/복호화 요청을 만드는 데 사용할 OCI KMS 암호화 엔드포인트(또는 데이터 플레인 엔드포인트)입니다. VAULT_OCIKMS_CRYPTO_ENDPOINT 환경 변수로도 지정할 수 있습니다.

  • management_endpoint (string: <required>): OCI KMS 키 관리 요청을 만드는 데 사용할 OCI KMS 관리 엔드포인트(또는 컨트롤 플레인 엔드포인트)입니다. VAULT_OCIKMS_MANAGEMENT_ENDPOINT 환경 변수로도 지정할 수 있습니다.

  • auth_type_api_key (boolean: false): OCI KMS 서비스에 인증하기 위해 API 키를 사용할지 여부를 지정합니다. false이면 Vault는 compute 인스턴스의 instance principal로 인증합니다. 자세한 내용은 Authentication 섹션을 참고하세요. 기본값은 false입니다.

  • disabled (string: ""): Vault가 auto seal 구성에서 마이그레이션 중이라면 true로 설정하세요. 그렇지 않으면 false로 설정하세요.

key_id는 간접 값 참조(indirect value references)일 수 있습니다.

seal 마이그레이션 과정에 대한 자세한 내용은 Seal Migration 문서를 참고하세요.

인증

인증 관련 값은 환경 변수나 구성 파라미터로 제공해야 합니다.

Instance Principal을 사용하려면 아래와 같은 섹션 구성을 추가하고, 구성 문서에 설명된 대로 추가 구성 설정을 더 지정하세요.

seal "ocikms" {
    crypto_endpoint     = "<kms-crypto-endpoint>"
    management_endpoint = "<kms-management-endpoint>"
    key_id              = "<kms-key-id>"
}
# Notes:
# crypto_endpoint can be replaced by VAULT_OCIKMS_CRYPTO_ENDPOINT environment var
# management_endpoint can be replaced by VAULT_OCIKMS_MANAGEMENT_ENDPOINT environment var
# key_id can be replaced by VAULT_OCIKMS_SEAL_KEY_ID environment var

User Principal을 사용하려면 플러그인이 OCI SDK에 대해 정의한 API 키(보통 ~/.oci/config 아래)를 사용합니다.

seal "ocikms" {
    auth_type_api_key   = true
    crypto_endpoint     = "<kms-crypto-endpoint>"
    management_endpoint = "<kms-management-endpoint>"
    key_id              = "<kms-key-id>"
}

compute 인스턴스가 OCI KMS 서비스를 사용하도록 권한을 부여하려면 KMS 접근에 대한 정책을 작성하세요.

  • OCI 테넌시에 Dynamic Group을 만드세요.
  • Dynamic Group이 OCI KMS의 키를 사용하거나 관리할 수 있게 하는 정책을 만드세요. 이러한 정책을 작성하는 방법은 여러 가지가 있습니다. OCI Identity Policy를 참조나 시작점으로 사용할 수 있습니다.

가장 일반적인 정책은 테넌트 A의 dynamic group이 테넌트 B의 KMS 키를 사용할 수 있게 허용합니다:

define tenancy tenantB as <tenantB-ocid>

endorse dynamic-group <dynamic-group-name> to use keys in tenancy tenantB
define tenancy tenantA as <tenantA-ocid>

define dynamic-group <dynamic-group-name> as <dynamic-group-ocid>

admit dynamic-group <dynamic-group-name> of tenancy tenantA to use keys in compartment <key-compartment>

ocikms OCI KMS 마스터 키 회전

OCI KMS 키 회전 기능의 경우 OCI KMS가 내부적으로 새 키 버전을 만듭니다. 이 과정은 Vault와 독립적이며, Vault는 중단 없이 같은 key_id를 계속 사용합니다.

key_id를 변경하려면: Shamir로 마이그레이션하고, key_id를 변경한 다음, 새 key_id로 OCI KMS로 마이그레이션하세요.

더 알아보기