Ansible Vault 暗号化・復号化ツール
AES-256を使用してブラウザ上でAnasible Vaultのシークレットを直接暗号化・復号化
入力
出力
Readme
Ansible Vaultとは?
Ansible Vaultは、Ansibleの組み込み機能で、パスワード、APIキー、証明書などの機密データを暗号化し、playbookやroleとともにバージョン管理に安全に保存できます。AES-256対称暗号化とPBKDF2鍵導出を使用しており、暗号化と復号化の両方に単一のパスワードが使用されます。Vault暗号化コンテンツは$ANSIBLE_VAULT;1.1;AES256ヘッダーで識別され、その後に16進数エンコードされた暗号文が続きます。
Ansible Vaultは、基本的なDevOpsの課題を解決します。インフラストラクチャコードと同じリポジトリに機密情報を保持しながら、それらを公開しないようにするにはどうするかという課題です。別のシークレットストアを管理したり、環境変数に依存したりする代わりに、チームは暗号化されたファイルをGitに直接コミットし、playbook実行時にランタイムで復号化できます。
ツールの説明
このツールは、ブラウザ内でAnsible Vaultコンテンツを直接暗号化および復号化します。Vault パスワードと平文を入力して、完全に互換性のある暗号化されたvault blobを生成するか、既存のvault blobを貼り付けて元のシークレットを表示します。データはブラウザから送信されません。すべての暗号化操作はクライアント側で実行されます。
例
平文の暗号化:
入力(平文):
db_password: s3cur3P@ss!出力(暗号化vault):
$ANSIBLE_VAULT;1.1;AES256
33383239333036363833303565653032383832663162356533343630623030613133623032636566
6536303436646561356461623866386133623462383832620a646363626137626635353462386430
34333937313366383038346135656563316236313139333933383139376333353266666436316536
6335376265313432610a313537363637383264646261303637646631346137393964386432313633
3666Vault コンテンツの復号化:
上記の暗号化ブロックを正しいパスワードで貼り付けて、元のdb_password: s3cur3P@ss!値を復元します。
機能
- AES-256暗号化はAnsible Vault 1.1形式と完全に互換
- クライアント側のみ — データはサーバーに送信されません
- 単一のパスワードフィールドで暗号化と復号化の両方をサポート
- 入力時のライブプレビュー付きの即座の変換
- 複数行のシークレット、YAMLフラグメント、任意のテキストに対応
ユースケース
- Ansibleplaybookを含むGitリポジトリにコミットする前に、新しいシークレットを迅速に暗号化する
- Ansibleをローカルにインストールする必要なく、デバッグ中にvaultコンテンツを復号化して検査する
- 共有されたvaultパスワードを使用してブラウザで復号化できるチームメンバーと暗号化されたシークレットを共有する
動作原理
Ansible Vault 1.1は以下のプロセスを使用します:
- 鍵導出 — PBKDF2-HMAC-SHA256は、パスワードとランダムなsalt(10,000回の反復)から80バイトの鍵を導出します。鍵は32バイトの暗号化鍵、32バイトのHMAC鍵、および16バイトのIVに分割されます。
- 暗号化 — 平文は導出された鍵とIVを使用してAES-256-CTRで暗号化されます。
- 認証 — HMAC-SHA256が暗号文に対して計算され、整合性を確保します。
- エンコーディング — salt、HMACダイジェスト、および暗号文は16進数エンコードされ、
$ANSIBLE_VAULT;1.1;AES256ヘッダーの下に結合されます。
復号化はプロセスを逆にします。パスワードは同じ鍵を再導出し、HMACを検証し、暗号文を復号化します。
制限事項
- AES-256暗号化を使用したAnsible Vault 1.1形式のみをサポート
- 複数パスワード設定用のvault IDラベルをサポートしていません
- 大きなファイルは、CPU集約的な鍵導出ステップのため、UIの短い遅延を引き起こす可能性があります