HashiCorp VaultのConfigurationについて

これまでの記事はこちらです。

はじめに

今回はサーバ起動時に設定するConfigurationについてです。Configurationについてのドキュメントはこちら

必須項目

storage

データを保存するストレージを設定します。現時点でVaultが設定できるストレージは以下です。

  • Azure
  • CockroachDB
  • Consul
  • CouchDB
  • DynamoDB
  • Etcd
  • Filesystem
  • Google Cloud
  • In-Memory
  • MySQL
  • PostgreSQL
  • Cassandra
  • S3
  • Swift
  • Zookeeper

それぞれの使い方は今後ブログにしていきたいと思います。

listener

Vaultがリクエストを受け付けるためのリスナーです。現時点ではTCPのみ対応しています。

listener "tcp" {
  address = "127.0.0.1:8200"
  tls_disable = true
}

address

リスナーがバインドするIPアドレスです。Dev Serverではloopback(127.0.0.1)が設定されています。通常はVault Serverが動作するサーバのプライベートIPアドレスを入力します。実際にそのサーバが所有するIPアドレス以外を設定するとエラーが出ますので、Elastic IPのようなIP Masqueradeされたグローバルアドレスは設定出来ません。

また、ここでリッスンするポート番号も設定します。デフォルトでは8200です。

cluster_address

Vault Serverをクラスタ化する際に必要になります。クラスタ内の他のサーバとのやり取りに使用するアドレスです。デフォルトではaddressのポート番号より1つ大きなポート番号(addressが8200なら8201)となります。

proxy_protocol_behavior

Proxyプロトコルの使用について設定します。設定により、監査ログに記録されるソースIPアドレスが変わります。指定できる値は3つです。

  • use_always ... 常にクライアントのIPアドレスを記録します。
  • allow_authorized ... proxy_protocol_authorized_addrsに設定されたIPアドレスであれば、クライアントのIPアドレスを記録します。そうで無い場合は接続元IPアドレス(ProxyのIPアドレス)を記録します。
  • deny_unauthorized ... proxy_protocol_authorized_addrsに設定されていないIPアドレスであれば接続を拒否します。

proxy_protocol_authorized_addrs

proxy_protocol_behaviorで使う設定項目で、接続元のProxyのIPアドレスを指定します。

tls_disable

Vaultへの接続にTLSを使うかどうかを設定します。trueにするとTLSを使用せず、HTTPで接続されます。falseの場合はTLSに関する各種オプションを設定することで、HTTPSでの接続を求めます。TLSに関する各種オプションには以下のものがあります。

  • tls_cert_file
  • tls_key_file
  • tls_min_version
  • tls_cipher_suitestls_prefer_server_cipher_suites
  • tls_require_and_verify_client_cert
  • tls_client_ca_file
  • tls_disable_client_certs

詳細は今後ブログにて試します。

非必須項目

seal

前回のブログでSeal/Unsealの仕組みについて説明しましたが、Vaultではデフォルトでマスターキーを暗号化し分割することでSeal(封印状態)を保ちます。本設定項目では、更にセキュリティ設定を加えることが出来ます。具体的には以下の3つです。

  • AWS KMS
  • GCP Cloud KMS
  • HSM PKCS11

なお、本機能を使うためにはEnterpriseライセンスが必要です。本機能によりFIPS 140-2準拠のHSMと連携することで、FIPS 140-2のコンプライアンス要件をクリアすることが出来ます。

telemetry

各種Metricsを特定の監視サーバに送信し集約することができます。例えばstatsitestatsdCirconusDogStatsDなどです。

cache_size

物理的なストレージで使用される読み取りキャッシュのサイズを指定します。設定値はエントリ数で、デフォルトでは32000個です。

disable_cache

trueにすると全てのキャッシュを無効にします。デフォルト値はfalseです。

disable_mlock

mlock()システムコールを無効化します。mlockはメモリをディスクにスワップしないようにするものです。つまりdisableにするとメモリがディスクにスワップされます。これは機密情報をメモリに入れている場合非常に危険です。原則として本番環境においてmlockをdisableにすることは推奨されていません。

plugin_directory

Vaultが使うプラグインが配置されるディレクトリのパスを指定します。デフォルトでは空白です。

default_lease_ttl

TokenやSecretsのデフォルトリース期間を設定します。デフォルト値は768hです。s(秒)やm(分)といった指定も可能です。この値はmax_lease_ttl以下である必要があります。

max_lease_ttl

TokenやSecretsの最大リース期間を設定します。デフォルト値は768hです。s(秒)やm(分)といった指定も可能です。

raw_storage_endpoint

sys/rawエンドポイントを有効にします。この機能を有効化することで、rawデータの暗号化/復号が可能になります。デフォルト値はfalseです。

ui

Web UIを有効化します。この機能にはEnterpriseライセンスが必要です。

pid_file

Vault ServerのPIDを格納するファイルのパスを指定します。デフォルト値は空白です。

cluster_name

Vaultクラスタの名前を指定します。省略した場合Vaultによって自動的に生成されます。

High Availability Modeで使用する項目

Vaultでは、High Availability Modeをサポートするデータストアをストレージとして使用すると、自動的にHigh Availability Modeが有効になります。High Availability Modeでは1台のVault Serverがアクティブに、他のVault Serverは全てスタンバイとなります。High Availability Modeでは以下の設定項目を利用します。

  • ha_storage
  • api_addr
  • cluster_addr
  • disable_clustering

High Availability Modeについてはいずれ別途検証します。

さいごに

最低限storageとlistenerを設定すればVault Serverが動作します。ストレージの選択とTLSの設定がキモになります。更にHA Modeを使うかどうかで構成が変わってきます。

また試したいことが増えました。