vault - シークレット管理、サービスとしての暗号化、特権アクセス管理のためのツール

(A tool for secrets management, encryption as a service, and privileged access management)

Created at: 2015-02-25 08:15:59
Language: Go
License: MPL-2.0

ボールトサークルCI ボールトエンタープライズ


: Vault では、Vault のセキュリティとユーザーの信頼を非常に重視しています。Vault でセキュリティ上の問題が見つかったと思われる場合は、security@hashicorp.com まで責任を持って開示してください


ボールトロゴ

Vault は、シークレットに安全にアクセスするためのツールです。シークレットとは、API キー、パスワード、証明書など、アクセスを厳密に制御するものです。Vaultは、あらゆるシークレットへの統一されたインターフェイスを提供すると同時に、厳格なアクセス制御を提供し、詳細な監査ログを記録します。

最新のシステムでは、データベースの資格情報、外部サービスのAPIキー、サービス指向アーキテクチャ通信の資格情報など、多数のシークレットにアクセスする必要があります。誰がどのシークレットにアクセスしているかを理解することは、すでに非常に困難であり、プラットフォーム固有です。キーローリング、安全なストレージ、詳細な監査ログを追加することは、カスタムソリューションなしではほとんど不可能です。ここで Vault の出番です。

Vault の主な機能は次のとおりです。

  • 安全なシークレットストレージ:任意のキー/値のシークレットを保存できます ボールトで。Vault は、これらのシークレットを永続に書き込む前に暗号化します。 ストレージであるため、rawストレージにアクセスするだけではアクセスできません あなたの秘密。Vaultはディスクに書き込むことができます、領事、 もっと。

  • 動的シークレット: Vault は一部のシークレットをオンデマンドで生成できます AWS や SQL データベースなどのシステム。たとえば、アプリケーションが S3バケットにアクセスする必要があり、Vaultに資格情報を要求し、Vault は、オンデマンドで有効なアクセス許可を持つ AWS キーペアを生成します。後 これらの動的シークレットを作成すると、Vaultも自動的に取り消します リースが終了した後。

  • データ暗号化:Vaultは保存せずにデータを暗号化および復号化できます それ。これにより、セキュリティチームは暗号化パラメータを定義し、 暗号化されたデータをSQLデータベースなどの場所に格納する開発者 独自の暗号化方法を設計する必要があります。

  • リースと更新: Vault のすべてのシークレットにはリースが関連付けられています 彼らと。リースの終了時に、Vaultは自動的にそれを取り消します 秘密。クライアントは、組み込みの更新 API を使用してリースを更新できます。

  • 失効: Vault にはシークレット失効のサポートが組み込まれています。ボールト 単一のシークレットだけでなく、シークレットのツリーを取り消すことができます。 特定のユーザーによって読み取られたすべてのシークレット、または特定の種類のすべてのシークレット。 失効は、キーローリングとシステムのロックダウンを支援します 侵入の場合。

ドキュメント、入門、認定試験

ドキュメントは Vault のウェブサイトで入手できます。

Vault を初めて使用し、セキュリティの自動化を開始したい場合は、 HashiCorpの学習プラットフォームの入門ガイドをご覧ください。学習を続けるための追加のガイドもあります。

さまざまなプログラミング言語でアプリケーション内から Vault を操作する方法の例については、vault-examples リポジトリを参照してください。すぐに使用できるサンプル アプリケーションも利用できます。

Vaultの知識を披露するには、認定試験に合格しましょう。試験に関する情報については認定ページにアクセスし、HashiCorpの学習プラットフォームで学習資料を見つけてください。

ボールトの開発

Vault自体またはその組み込みシステムのいずれかで作業したい場合は、 まず、Goをマシンにインストールする必要があります。

ローカル開発者の場合、まずGOPATHの設定を含め、Goが正しくインストールされていることを確認してください。が 一部のディストリビューションとしてのパスは、古いバージョンのビルドツールをバンドルしています。次に、これを複製します リポジトリ。ボールトはGoモジュールを使用します。 そのため、GOPATHの外部でリポジトリをクローンすることをお勧めします。 その後、環境をブートストラップすることで、必要なビルドツールをダウンロードできます。

$GOPATH/bin

$ make bootstrap
...

Vault の開発バージョンをコンパイルするには、または を実行します。これは Vaultバイナリをフォルダとフォルダに配置します。

make
make dev
bin
$GOPATH/bin

$ make dev
...
$ bin/vault
...

UI を使用して Vault の開発バージョンをコンパイルするには、 を実行します。これは Vaultバイナリをフォルダとフォルダに配置します。

make static-dist dev-ui
bin
$GOPATH/bin

$ make static-dist dev-ui
...
$ bin/vault
...

テストを実行するには、と入力します。注:これにはDockerがインストールされている必要があります。もし これは終了ステータス0で終了し、すべてが機能しています。

make test

$ make test
...

特定のパッケージを開発している場合は、そのためのテストを実行できます 変数を指定してパッケージ化します。次の例では、パッケージ テストのみが実行されます。

TEST
vault

$ make test TEST=./vault
...

ボルトのインポート

このリポジトリは、他のプロジェクトからインポートできる 2 つのライブラリを公開しています。

github.com/hashicorp/vault/api
github.com/hashicorp/vault/sdk

このリポジトリにはVault(製品)も含まれており、ほとんどのGoと同様に プロジェクトでは、Vault は Go モジュールを使用して依存関係を管理します。行うメカニズム それが go.mod ファイルです。たまたま、そのファイルの存在 また、理論的にはVaultを依存関係として他のものにインポートすることも可能になります プロジェクト。他のいくつかのプロジェクトは、取るためにそうすることを実践しました Vault自体をテストするために開発されたテストツールの利点。これ は、Vault プロジェクトを使用するためのサポートされている方法ではなく、これまでもサポートされていません。私たちはそうではありません プロジェクトへのインポートの失敗に関連するバグを修正する可能性があります。

github.com/hashicorp/vault

受け入れテスト

Vaultには、シークレットメソッドと認証メソッドのほとんどの機能をカバーする包括的な受け入れテストがあります。

シークレットまたは認証メソッドの機能に取り組んでいて、次のことを行う場合 それが機能している(そして他に何も壊していない)ことを確認する、私たちはお勧めします 受け入れテストの実行。

警告:受け入れテストでは、実際のリソースを作成/破棄/変更します。 場合によっては、実際のコストが発生する可能性があります。バグが存在する場合、技術的には 壊れたバックエンドが未解決のデータを置き去りにする可能性があります。そこで 受け入れテストは自己責任で実行してください。少なくとも、 バックエンドに関係なく、独自のプライベートアカウントで実行することをお勧めします あなたはテストしています。

受け入れテストを実行するには、以下を呼び出します。

make testacc

$ make testacc TEST=./builtin/logical/consul
...

変数は必須であり、次のフォルダーを指定する必要があります。 バックエンドはです。変数は、特定の テストするリソースは、それらすべてを一度にテストすることがあるため、非常に時間がかかる場合があります 千載。

TEST
TESTARGS

受け入れテストでは、通常、他の環境変数を設定する必要があります。 アクセス キーなど。テスト自体は早期にエラーが発生し、 何を設定するかは、ここでは説明されていません。

Vault Enterprise の機能の詳細については、Vault Enterprise のサイトを参照してください。