16.04前書きVaultは、APIキー、アクセストークン、パスワードなどの秘密を保存および配布するための安全で信頼できる方法を提供するオープンソースツールです。秘密や機密データの使用を必要とするアプリケーションを展開する場合、Vaultなどのソフトウェアは非常に重要です。このチュートリアルでは、次のことを行います。Vaultをインストールし、システムサービスとして構成する暗号化されたオンディスクデータストアを初期化するTLSを介して機密値を安全に保存および取得するいくつかの追加ポリシーを導入すると、Vaultを使用して、さまざまなアプリケーションやツールの機密データを安全に管理できます。機密情報を管理するサービスと同様に、本番環境で使用する前に、Vaultの展開のベストプラクティスに関する追加のドキュメントを読むことを検討する必要があります。[Vaultの運用強化ガイド]は、ポリシー、ルートトークン、監査などのトピックを扱っています。前提条件このガイドを始める前に、次のものが必要です。rootユーザーとファイアウォール。APIを保護するために使用するSSL証明書。[このCertbotスタンドアロンモードのチュートリアル]。ステップ1-VaultのインストールHashiCorpはVaultを単一のバイナリとして提供するため、Vaultの実行可能ファイルを手動でダウンロードしてインストールします。zipアーカイブをダウンロードします。[Vaultのダウンロードページ]にあります。https://releases.hashicorp.com/vault//vault__linux_amd64.zip次に、このファイルのチェックサムをダウンロードして、ダウンロードを確認できるようにします。https://releases.hashicorp.com/vault//vault__SHA256SUMS次に、zipアーカイブの整合性を確認します。これは、zipアーカイブの内容が、HashicorpがVaultのバージョン0.9.5でリリースしたものと一致することを確認するためです。+`ファイルの各行にはチェックサムとファイル名があり、HashiCorpが提供するzipアーカイブごとに1つです。+`でチェックします。+」であることを示す必要があります。ない場合は、ファイルを再ダウンロードしてください。+`コマンドをインストールします。最初にパッケージリポジトリが最新であることを確認してください。unzip次に、Vaultバイナリを作業ディレクトリに解凍します。+`のディレクトリに移動して、シェルからアクセスできるようにします。/usr/local/bin/最後に、バイナリにLinux機能フラグを設定します。これにより、バイナリがその特権を不必要に上げることなくメモリロックを実行できるようになり、セキュリティが強化されます。+`コマンドを使用できます。Vaultのバージョンを確認して、機能することを確認してください。('d28dd5a018294562dbc9a18c95554d52b5d12390')Vault実行可能ファイルはサーバーにインストールされているため、次のステップは、システムサービスとして実行するように構成することです。ステップ2-ボールトユニットファイルの作成Systemdは、特にシステムのサービスを管理するUbuntuの初期化システムです。Vaultをシステムサービスとして設定するには、次のものを設定する必要があります。[ユニットファイル]自体。*システムユーザーを作成します。これは、Vaultデータディレクトリとして使用されます。+」に設定して、ユーザーを非対話型システムアカウントとして制限します。*グループのみに設定します。+」をセットアップします。これを使用して、暗号化されたシークレットの保存場所など、Vaultのさまざまなオプションを制御します。/etc/vault.hcl以下をファイルに貼り付け、独自のドメイン名に置き換えてください。*ユーザーにのみ読み取りを許可することにより、Vault構成ファイルの権限を保護します。/etc/systemd/system/vault.service以下をコピーしてファイルに貼り付けます。これにより、Vaultは永続的なシステムサービスデーモンとしてバックグラウンドで実行できます。CAP_IPC_LOCKCapabilities=CAP_IPC_LOCK+epSecureBits=keep-capsNoNewPrivileges=yesKillSignal=SIGINT[Install]WantedBy=multi-user.targetサービスユニットオプションの完全なリストは広範囲に渡りますが、上記の定義で注意すべき最も重要な構成オプションは次のとおりです。+`設定ファイルが存在することを保証します。Group`は、Vaultデーモンを実行するユーザーの権限を制御します。以前にインストールした実行可能ファイルを指し、サービスの実行を開始するものを定義します。+`を実行するとき)。起動時にこのサービスを永続的に実行できるため、再起動後に手動で開始する必要がありません。最後に、Vaultには、Certbotで作成した証明書を読み取る権限が必要です。いう特別なグループを作成してこれらのファイルにアクセスします。*ユーザーを追加します。*グループを作成します。*グループがコンテンツを読み取れるようにします。*グループに追加します。これにより、Vaultが証明書にアクセスできるようになり、HTTPSを介して安全にリクエストを処理できるようになります。+)からのリクエストのみをリッスンします。これは、サービスが適切に保護される前に、サービスがパブリックインターネットに公開されないようにするためです。+`コマンドを使用してHTTPSで保護されたドメイン名を正しく解決できるようになります。Encrypt証明書を取得したドメインに置き換えます。+`にルーティングされます。Vault実行可能ファイルがセットアップされ、サービスファイルが書き込まれ、Vault構成ファイルが完成したら、Vaultを起動してシークレットストアを初期化する準備ができました。ステップ3-Vaultの初期化Vaultを初めて起動すると、初期化されません。データを取得して保存する準備ができていません。Vaultを初めて起動したとき、暗号化されたシークレットを実際に保存するバックエンドも初期化されていません。Vaultシステムサービスを開始してバックエンドを初期化し、Vault自体の実行を開始します。vaultクイックチェックを実行して、サービスが正常に開始されたことを確認できます。vaultそのコマンドの出力には、プロセスIDやリソース使用量など、実行中のサービスに関する情報がいくつか含まれている必要があります。サービスが正しく実行されていることを示す次の行が出力に含まれていることを確認します。.サービスがアクティブでない場合は、コマンドの出力の最後にある付随するログ行を見て、Vaultの出力を確認してください。これは、問題を特定するのに役立ちます。`コマンドにVaultサーバーへの接続方法を伝えます。+`環境変数をローカルHTTPSエンドポイントに設定します。`コマンドはデーモンと通信できるようになりました。」または「+127.0.0.1」ではなく、実際のホスト名を定義する必要があることに注意してください。ステータスを確認して、ボールトが初期化されていない状態であることを確認します。statusサーバーは、サーバーがまだ初期化されていないことを示す400エラーを返します。initialized初期化時にVaultが公開する2つの情報がありますが、これらは他の時点では利用できません。これは、すべてのVaultポリシー、マウントなどの管理を可能にするVault展開のルート権限に相当します。これらは、デーモンの起動時にVaultを封印解除するために使用されます。これにより、Vaultデーモンはバックエンドシークレットストアを復号化できます。具体的には、Vaultの開封プロセスは、キー共有で形成されたキーを使用してバックエンドを復号化します。Vaultを初期化するときに、作成する開封キーの数と、開封時にVaultを正常に開封するために必要な開封キーの数を選択できます。封印解除パラメータの一般的な単純な値は、3つのキーを作成し、封印解除時にそれらのキーのうち少なくとも2つを必要とすることです。これにより、重要なキー共有を個別の場所に分離して保存し、危殆化したキー共有がVaultの封印を解除するのに十分でないことを保証できます。言い換えると、Vaultを起動するたびに、サービスを利用可能にして使用できる状態にするために、少なくとも2つの封印解除キーが必要になります。封印されている間、実際のシークレット値を保存するファイルは暗号化されたままで、アクセスできません。前述のパラメーターを使用してVaultを初期化します。-key-threshold=2各封印解除トークンと初期ルートトークンを安全な方法で保存します。1つのオプションは、1つの封印解除キーをパスワードマネージャーに保存し、もう1つをUSBドライブに保存し、もう1つをGPG暗号化ファイルに保存することです。新しく作成した封印解除トークンを使用して、Vaultを封印解除できるようになりました。1つのキーを使用して開封することから始めます。unsealコマンドは、封印解除トークンを要求します。hidden):入力後、コマンドからの出力は開封が進行中であることを示しますが、Vaultを使用する準備ができる前にもう1つの開封キーが必要です。+`コマンドを再度実行します。unsealそして、すでに使用したものとは異なるトークンを入力します。hidden):コマンドの出力は、封印解除プロセスが正常に完了したことを示しています。falseVaultの封印が解除され、使用できる状態になりました。これらの封印解除手順は、Vaultを起動または再起動するたびに必要です。封印解除は、_tokens_によって認証されるVaultとの通常の対話(値の読み取りや書き込みなど)とは異なるプロセスです。最後の手順では、秘密の値を保存し、Vaultの特定のパスの読み取り/書き込みに必要なアクセストークンとポリシーを作成します。このバックエンドは、単純なキー/値のペアをVaultに保存します。最初に、使いやすくするために、以前に生成されたルートトークンをシェル変数に保存します。root_token=まず、Vault内のパスに値を書き込みます。スーパーユーザー特権を持つルートトークンを使用して、汎用シークレットを記述しました。実際のシナリオでは、外部ツールが消費できるAPIキーやパスワードなどの値を保存できます。ルートトークンを使用してシークレット値を再度読み取ることはできますが、単一のシークレットに対する読み取り専用のアクセス許可を持つ、より権限の少ないトークンを生成することは実例です。+`というファイルを作成します。policy.hclファイルに次のVaultポリシーを入力します。このポリシーは、作業ディレクトリのシークレットパスへの読み取り専用アクセスを定義します。["read"]}ファイルを保存して閉じ、このポリシーをVaultに書き込みます。+`という名前のポリシーを作成します。policy.hclこれで、ポリシーで指定された権限を持つトークンを作成できます。-policy="message-readonly"出力は次のようになります。id_token`という変数に保存します。+`に保存されているデータにアクセスできます(Vaultには他の値はありません)。768h0m0svalueまた、この非特権トークンがVaultでのシークレットの一覧表示など、他の操作を実行できないことをテストすることもできます。Errors:*これにより、権限の低いアプリトークンが破壊的なアクションを実行したり、Vaultポリシーで明示的に指定された値以外のその他のシークレット値にアクセスしたりできないことが検証されます。16.04にVaultをインストール、構成、展開しました。[シークレットを保存およびアクセスする追加の方法]およびhttpsに関する詳細情報があります。[Vaultのドキュメント]を読み、ニーズに合わせて適切な構成変更を行ってください。生産準備が整った変更には次のものがあります。日常的に使用するために、より低い特権のトークンを生成します。+」は、特権が制限されたトークンとポリシーの作成方法を示しています。Vaultがチームサービスの一部として展開されている場合、各チームメンバーの封印解除キーを使用してVaultを初期化すると、複数のチームメンバーがプロセスに参加する場合にのみVaultのストレージが復号化されます。