Transit seal 구성

Transit seal 구성

Transit seal은 Vault가 Vault의 Transit Secret Engine을 autoseal 메커니즘으로 사용하도록 구성합니다. Transit seal은 다음 중 하나로 활성화됩니다:

출처: 문서

본문

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

  • Vault 구성 파일에 seal "transit" 블록이 있는 경우
  • 환경 변수 VAULT_SEAL_TYPEtransit로 설정된 경우

transit 예시

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

seal "transit" {
  address            = "https://vault:8200"
  token              = "s.Qf1s5zigZ4OX6akYjQXJC1jY"
  disable_renewal    = "false"

  // Key configuration
  key_name           = "transit_key_name"
  mount_path         = "transit/"
  namespace          = "ns1/"

  // TLS Configuration
  tls_ca_cert        = "/etc/vault/ca_cert.pem"
  tls_client_cert    = "/etc/vault/client_cert.pem"
  tls_client_key     = "/etc/vault/ca_cert.pem"
  tls_server_name    = "vault"
  tls_skip_verify    = "false"
}

transit 파라미터

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

  • address (string: <required>): Vault 클러스터의 전체 주소입니다. VAULT_ADDR 환경 변수로도 지정할 수 있습니다.

  • token (string: <required>): 사용할 Vault 토큰입니다. VAULT_TOKEN 환경 변수로도 지정할 수 있습니다.

  • key_name (string: <required>): 암호화와 복호화에 사용할 transit 키입니다. VAULT_TRANSIT_SEAL_KEY_NAME 환경 변수로도 제공할 수 있습니다.

  • key_id_prefix (string: ""): 이 transit seal로 래핑된 값의 키 ID에 추가할 선택적 문자열입니다. 두 transit seal을 구분하는 데 도움이 됩니다.

  • mount_path (string: <required>): transit secret engine의 마운트 경로입니다. VAULT_TRANSIT_SEAL_MOUNT_PATH 환경 변수로도 제공할 수 있습니다.

  • namespace (string: ""): transit secret engine의 namespace 경로입니다. VAULT_NAMESPACE 환경 변수로도 제공할 수 있습니다.

  • disable_renewal (string: "false"): 토큰의 수명 주기가 Vault Agent 같은 Vault 외부의 다른 메커니즘으로 관리되는 경우 토큰의 자동 갱신을 비활성화합니다. VAULT_TRANSIT_SEAL_DISABLE_RENEWAL 환경 변수로도 지정할 수 있습니다.

  • tls_ca_cert (string: ""): Vault 서버와의 통신에 사용되는 CA 인증서 파일의 경로를 지정합니다. VAULT_CACERT 환경 변수로도 지정할 수 있습니다.

  • tls_client_cert (string: ""): Vault 서버와의 통신을 위한 클라이언트 인증서의 경로를 지정합니다. VAULT_CLIENT_CERT 환경 변수로도 지정할 수 있습니다.

  • tls_client_key (string: ""): Vault 서버와의 통신을 위한 개인 키의 경로를 지정합니다. VAULT_CLIENT_KEY 환경 변수로도 지정할 수 있습니다.

  • tls_server_name (string: ""): TLS로 Vault 서버에 연결할 때 SNI 호스트로 사용할 이름입니다. VAULT_TLS_SERVER_NAME 환경 변수로도 지정할 수 있습니다.

  • tls_skip_verify (bool: "false"): TLS 인증서 검증을 비활성화합니다. 이 옵션 사용은 권장되지 않으며 Vault 서버와의 데이터 전송 보안을 저하시킵니다. VAULT_SKIP_VERIFY 환경 변수로도 지정할 수 있습니다.

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

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

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

인증

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

참고: 구성 파일에서 VAULT_TOKEN을 seal 파라미터로 전달할 수 있지만, 이 값을 환경 변수로 설정하는 것을 강력히 권장합니다.

인증에 사용되는 Vault 토큰은 transit 키에 대해 다음 권한이 필요합니다:

path "<mount path>/encrypt/<key name>" {
  capabilities = ["update"]
}

path "<mount path>/decrypt/<key name>" {
  capabilities = ["update"]
}

사용하는 토큰에 대한 다른 고려 사항:

  • 아마도 고아(orphan) 토큰이어야 합니다. 그렇지 않으면 부모 토큰이 만료되거나 철회될 때 seal이 깨집니다.
  • 주기적(periodic) 토큰으로 만들고 명시적 최대 TTL을 설정하지 않는 것을 고려하세요. 그렇지 않으면 언젠가 갱신이 불가능해집니다.

키 회전

이 seal은 Transit Secret Engine의 키 회전 엔드포인트를 사용한 키 회전을 지원합니다. 이전 키는 비활성화하거나 삭제해서는 안 되며 이전 데이터를 복호화하는 데 사용됩니다.

튜토리얼

Auto-unseal using Transit Secrets Engine 튜토리얼을 참고해 transit secrets engine으로 Vault를 자동 봉인 해제하는 방법을 알아보세요.

더 알아보기