はじめに
IBM Vault (a.k.a. HashiCorp Vault)は、シークレット管理をする製品です。過去の投稿で、シークレット管理が何であるか、IBM Vaultの認証方法をお話ししました。この投稿では、改めてシークレットとは何かを振り返った後に、IBM VaultのSecrets Engineに関してお話しします。
【関連する過去の投稿】
シークレットとは
シークレットとは、今回の文脈で言うと、一般にクレデンシャル(Credential)などと呼ばれる「資格情報」や「認証情報」になります。しかし、本質的な意味で言うと、まさに「秘密」で、「他人や外部に知られないように隠された事柄」です。実際に、Key Value Storeを使えば、秘密のテキストを暗号化して保存することはできます。主に取り扱うシークレットを具体的に言うと、ユーザーID/パスワード、APIキー、TLS証明書、認証トークンなどが該当します。
シークレット・エンジン (Secrets Engine)
IBM Vaultでは、シークレットの種類ごとにシークレット・エンジン (Secrets Engine)があります。シークレット・エンジンとは、そのシークレットを管理するために必要なロジック(プログラム・コード)やシークレットを暗号化して保存するパスなどで構成されています。シークレットを管理する方法は、シークレットによって異なります。ここで管理するとは、シークレットを期限(TTL)付きで発行したり、そのシークレットに対する権限を設定したり、シークレットを暗号化して保管したりすることを意図しています。
IBM Vaultが管理できるシークレットというのは、シークレット・エンジンが存在しているシークレットになりますが、一般的にクラウドやITシステムで利用されるほとんどのシークレットに対するシークレット・エンジンを提供しています。シークレット管理をする上では、シークレットの特性を理解した上で、そのシークレットに対するシークレット・エンジンがどのような動作をして、どのように利用することができるかを理解することが重要です。
この後のセクションで、IBM Vaultが提供している主なシークレット・エンジンをご紹介します。
AWSシークレット・エンジンは、IAMポリシーに基づいてAWSアクセス認証情報を動的に生成します。これにより、Web UIにアクセスる必要がないため、AWS IAMの操作が容易になります。さらに、このプロセスは体系化されており、内部認証方法(LDAPなど)にマッピングされています。AWS IAM認証情報は時間ベースであり、Vaultのリース期限が切れると自動的に失効します。
Azureシークレット・エンジンは、Azureサービス・プリンシパルとロールおよびグループの割り当てを動的に生成します。Vaultロールは1つ以上のAzureロールにマッピングでき、必要に応じてグループ割り当てにもマッピングできるため、生成されたサービス・プリンシパルに付与される権限をシンプルかつ柔軟に管理できます。各サービス・プリンシパルはVaultリースに関連付けられています。リースの有効期限が切れると(通常の失効または早期失効のいずれか)、サービス・プリンシパルは自動的に削除されます。
Kubernetes シークレット・エンジンは、Kubernetes サービス・アカウント・トークンに加え、オプションでサービス・アカウント、ロール・バインディング、ロールを生成します。作成されたサービス・アカウント・トークンには設定可能な TTL があり、作成されたオブジェクトは Vault のリース期限が切れると自動的に削除されます。
PKIシークレット・エンジンは、動的なX.509証明書を生成します。このシークレット・エンジンにより、サービスは、秘密鍵とCSRの生成、CAへの提出、検証と署名プロセスの完了を待つといった通常の手動プロセスを経ることなく、証明書を取得できます。Vaultに組み込まれた認証および認可メカニズムが、検証機能を提供します。TTLを比較的短く保つことで、失効の必要性が低くなり、CRL(証明書失効リスト)も短く抑えられ、シークレット・エンジンを大規模なワークロードに拡張しやすくなります。これにより、実行中のアプリケーションの各インスタンスが固有の証明書を持つことができるため、証明書の共有や、それに伴う失効とロール・オーバーの手間が省けます。
- Oracle データベース・シークレット・エンジン
Oracle データベース・シークレット・エンジンは、データベース・シークレット・エンジンでサポートされているプラグインの一つです。Oracleデータベース用に設定されたロールに基づいて、動的に認証情報を生成することができます。また、静的ロールもサポートしています。
まとめ
IBM Vaultでは一般的に利用されているシークレットをセキュアかつ効果的に利用できるように、多くのシークレット・エンジンを提供しています。この投稿で紹介していない、その他のシークレット・エンジンを含めた詳細情報は、こちらの文書「Secrets engines」を参照ください。是非、お客様のシークレット管理にお役立てください。