第2章 Record Encryption フィルター用の HashiCorp Vault の準備


OpenShift クラスターで Record Encryption フィルターを使用して Vault を使用するには、Vault インスタンスに対して次の設定を使用します。

  • Record Encryption フィルターは Transit Engine の API に依存しているため、Transit Engine を有効にします。
  • エンベロープ暗号化用の Data Encryption Keys (DEK) を生成および復号化する権限を持つ、フィルター専用の Vault ポリシーを作成します。
  • フィルターポリシーを含む Vault トークンを取得します。

プロキシーのデプロイメント設定では、Vault Transit Engine サービスの URL が使用されます。

Vault は、既存のインスタンス、クラウドインスタンス、または OpenShift 上にデプロイできます。プロキシーにアクセスできる場合は、Streams for Apache Kafka Proxy と同じ場所に配置することも、リモートでデプロイすることもできます。

OpenShift に Vault をインストールし、アクセスを設定する方法については、HashiCorp Vault 製品のドキュメントを参照してください。

この手順では、Vault を準備するための 2 つのオプションを説明します。

  • Streams for Apache Kafka Proxy に付属する一時的なデプロイメント設定の例を使用して、Helm で Vault を OpenShift クラスターにデプロイします。
  • 既存の Vault インスタンスを更新しています。

Vault インスタンスを準備したら、Record Encryption フィルター用の Vault ポリシーとトークンを作成する必要があります。

警告

サンプルのデプロイメント設定は、実稼働環境には適していません。

Streams for Apache Kafka には、examples/proxy/record-encryption/vault フォルダーにサンプルのインストールアーティファクトが含まれています。このフォルダーには、プロキシーおよび Record Encryption フィルターと互換性のある事前設定済みの Vault デプロイメントファイルが含まれています。

  • amqstreams_proxy_encryption_filter_policy.hcl は、Record Encryption フィルターの Vault ポリシーを定義します。
  • helm-dev-values.yaml は、Vault の Helm デプロイメント設定を指定します。

これらのインストールファイルは、プロキシーを試すための簡単なセットアップを提供します。

前提条件

  • インストール用に system:admin などの cluster-admin ロールを持つ OpenShift ユーザーを用意する。
  • oc コマンドラインツールがインストールされ、管理者権限で OpenShift クラスターに接続するように設定されている。
  • Helm コマンドラインツールがインストールされ、管理者権限で OpenShift クラスターに接続するように設定されている。
  • proxy と呼ばれる OpenShift プロジェクトの namespace。これは、プロキシーがデフォルトでインストールされている namespace と同じである。

この手順で使用される oc および Helm コマンドラインオプションの詳細は、--help を参照してください。

Helm デプロイメント設定の例を使用した Vault のデプロイ

  1. Streams for Apache Kafka Proxy インストールアーティファクトをダウンロードして展開します。

    プロキシーは、Streams for Apache Kafka ソフトウェアダウンロードページ から入手できます。

    ファイルには、Vault をデプロイするために必要なデプロイメント設定が含まれています。

  2. ルートトークンを作成し、メモしておきます。

    Copy to Clipboard Toggle word wrap
    cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1 > vault.root.token
    export VAULT_TOKEN=$(cat vault.root.token)
  3. Helm を使用して Vault をインストールします。

    Copy to Clipboard Toggle word wrap
    helm repo add hashicorp https://helm.releases.hashicorp.com
    helm install vault hashicorp/vault \
      --create-namespace --namespace=vault \
      --version <helm_version> \
      --values vault/helm-dev-values.yaml \
      --set server.dev.devRootToken=${VAULT_TOKEN} \
      --wait

    root トークンは Vault インスタンスに使用されます。

  4. デプロイメントのステータスを確認します。

    Copy to Clipboard Toggle word wrap
    oc get pods -n vault

    デプロイメント名と準備状態が表示されている出力

    Copy to Clipboard Toggle word wrap
    NAME                      READY  STATUS   RESTARTS
    vault-0                   1/1    Running  0

    Pod ID は、作成された Pod を識別します。

    デフォルトのデプロイメントでは、単一のプロキシー Pod をインストールします。

    READY は、ready/expected 状態のレプリカ数を表示します。STATUS が Running と表示されれば、デプロイメントは成功です。

  5. 新しい Vault インスタンスを指す Vault アドレス (VAULT_ADDR) 環境変数を作成します。

    Copy to Clipboard Toggle word wrap
    export VAULT_ADDR=$(oc get route -n vault vault --template='https://{{.spec.host}}')
  6. 管理者として Vault にログインし、Vault Transit シークレットエンジンを有効にします。

    Copy to Clipboard Toggle word wrap
    vault secrets enable transit

    シークレットエンジンがすでに有効になっている場合は、エラーを無視します。

  7. Vault Transit アドレスを指す環境変数を作成します。

    Copy to Clipboard Toggle word wrap
    export VAULT_TRANSIT_URL=${VAULT_ADDR}/v1/transit

    アドレスはプロキシーデプロイメント設定で使用されます。

  8. Vault ポリシーとトークンを作成します

独自の Vault インスタンスの設定

すでに Kafka インスタンスがインストールされている場合は、それを更新して Streams for Apache Kafka Proxy で使用できます。

  1. Vault インスタンスを指す Vault アドレス環境変数 (Enterprise を使用している場合は VAULT_ADDRVAULT_NAMESPACE) を作成します。

    Copy to Clipboard Toggle word wrap
    export VAULT_ADDR=https://<vault server>:8200
    export VAULT_NAMESPACE=<namespaces>
  2. 管理者として Vault にログインし、Vault Transit シークレットエンジンを有効にします。

    Copy to Clipboard Toggle word wrap
    vault secrets enable transit

    シークレットエンジンがすでに有効になっている場合は、エラーを無視します。

  3. Vault Transit アドレスを指す環境変数を作成します。

    Copy to Clipboard Toggle word wrap
    export VAULT_TRANSIT_URL=${VAULT_ADDR}/v1/${VAULT_NAMESPACE}/transit

    アドレスはプロキシーデプロイメント設定で使用されます。

  4. Vault インスタンスを参照するようにプロキシーデプロイメント設定を更新します。

    Copy to Clipboard Toggle word wrap
    sed -i "s/\(vaultTransitEngineUrl:\).*$/\1 ${VAULT_TRANSIT_URL}/" */proxy/proxy-config.yaml
  5. Vault ポリシーとトークンを作成します

Vault ポリシーとトークンの作成

Vault インスタンスを設定したら、Record Encryption フィルターの Vault ポリシーとトークンを作成します。

  1. Vault ポリシーを作成します。

    Copy to Clipboard Toggle word wrap
    vault policy write amqstreams_proxy_encryption_filter_policy vault/amqstreams_proxy_encryption_filter_policy.hcl

    Streams for Apache Kafka Proxy に付属する HashiCorp ポリシー定義ファイル (.hcl) を使用して、ポリシーを Vault に書き込みます。ポリシーの名前は amqstreams_proxy_encryption_filter_policy です。

  2. Vault トークンを作成します。

    Copy to Clipboard Toggle word wrap
    vault token create \
      -display-name "amqstreams-proxy encryption filter" \
      -policy=amqstreams_proxy_encryption_filter_policy \
      -no-default-policy \
      -orphan \
      -field=token > vault.encryption.token

    このコマンドは、ポリシーを指定したトークン、および関連付けられた親トークンまたはデフォルトポリシーのないトークンを作成します。

  3. トークンを含むシークレットを作成します。

    Copy to Clipboard Toggle word wrap
    oc create secret generic proxy-encryption-vault-token \
      -n proxy \
      --from-file=encryption-vault-token.txt=vault.encryption.token \
      --dry-run=client \
      -o yaml > base/proxy/proxy-encryption-vault-token-secret.yaml

    このコマンドは、Vault トークンをシークレットに保存し、proxy namespace に YAML ファイルとしてシークレットを作成します。

    Record Encryption フィルターを使用して Streams for Apache Kafka をデプロイするときに、proxy-encryption-vault-token-secret.yaml シークレットが OpenShift クラスターに適用されます。

ヒント

侵害された鍵の影響を最小限に抑えるために、定期的に鍵をローテーションします。HashiCorp Vault などの Key Management System (KMS) を使用する場合は、KMS に保存されている Key Encryption Key (KEK) をローテーションします。Streams for Apache Kafka Proxy は DEK のローテーションを自動的に管理します。プロキシーが新しい鍵を取得するには、再起動が必要になる場合があります。さらに、暗号化されたメッセージには、鍵のローテーションを示す鍵バージョンメタデータが含まれている必要があります。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.