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を特定の監視サーバに送信し集約することができます。例えばstatsiteやstatsdCirconusやDogStatsDなどです。
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を使うかどうかで構成が変わってきます。
また試したいことが増えました。