注: 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 のサイトを参照してください。