Chef

Chef Infra自動化プラットフォームでKeeperシークレットマネージャーを利用するためのクックブック集

概要

Chef Infraは、インフラをコードに変換する強力な自動化プラットフォームです。クラウド、オンプレミス、またはハイブリッド環境のいずれで運用していても、Chefはネットワーク全体のインフラの構成、デプロイ、および管理を自動化します。

Keeperシークレットマネージャーのクックブックを使用することで、Chef管理ノードをKeeperシークレットマネージャーと統合でき、Chefインフラ内のシークレット管理をより簡単かつ安全に行うことができます。

機能

  • Chef管理ノードにKeeperシークレットマネージャー用Python SDKをインストールおよび設定

  • Chef実行時にKeeperボルトからKeeper表記法を使用してシークレットを取得

  • 暗号化データバッグを利用した安全な認証

  • クロスプラットフォーム対応 (Linux、macOS、Windows)

要件

  • Keeperシークレットマネージャーへのアクセス (詳細はクイックスタートガイドを参照)

  • Keeperのサブスクリプションでシークレットマネージャーアドオンが有効になっていること

  • シークレットマネージャーポリシーが有効なロールに所属していること

  • シークレットが共有されているKeeperシークレットマネージャーアプリケーション

  • アプリケーションの作成手順はクイックスタートガイドを参照

  • Keeperシークレットマネージャーが初期化されていること

クックブックはBase64形式の構成をサポートしています。

セットアップ

インストール

Berkshelfを使用する場合

Berksfile に次の行を追加します。

Chef Supermarketを使用する場合

手動インストール

  1. クックブックをダウンロード

  2. cookbooksディレクトリに配置

  3. Chefサーバーにアップロード

認証

このクックブックは暗号化データバッグを使用して安全な認証を行います。この方法により、Keeper構成をChefサーバー上に安全に保存し、ノードから利用できるようにすることができます。

シークレットキーファイルの作成

暗号化データバッグを作成する前に、Chefが機密データの暗号化および復号に使用する共有シークレットファイルを作成する必要があります。

次のコマンドを実行します。

暗号化データバッグの設定

Keeper構成を保存する暗号化データバッグを作成します。

暗号化データバッグはKeeperシークレットマネージャーの構成を環境変数として保存し、Chefノードから安全にアクセスできるようにします。

入力構成ファイル

input.json ファイルは必須で、Keeperボルトから取得するシークレットを定義します。このファイルはKeeper表記法を使用して取得対象のシークレットを指定します。

input.jsonの作成

次の構造を持つ input.json ファイルを作成します。

シークレット表記法の形式

このクックブックは柔軟なシークレットマッピングを可能にするKeeper表記法をサポートしています。詳細はKeeper表記法ドキュメントを参照してください。

表記法フォーマット

表記は "KEEPER_NOTATION > OUTPUT_SPECIFICATION" という形式を取ります。

  • 左側: Keeper表記法 (例: UID/custom_field/Label1)

  • 右側: 出力仕様 (例: Label2env:Label2file:/path/to/file)

出力マッピングオプション

  1. キーの単純マッピング

結果: 出力JSONに { "Label2": "VALUE_HERE" } が追加される

  1. 環境変数出力

結果: Chefノード上で DB_PASSWORD 環境変数が設定される

env:Label2 は環境変数としてエクスポートされ、Label2 は出力JSONには含まれません。

  1. ファイル出力

結果: ファイルが指定されたパスに保存され、出力JSONには{ "ssl_cert.pem": "/opt/ssl/cert.pem" } が追加される

ファイル名がキーとなり、ファイルパスが値となります。

input.jsonの完全な例

レコードUIDの確認方法

レコードUIDは次の方法で確認できます。

  • Keeperコマンダー: ls -l コマンドで確認

  • Keeperウェブボルト: レコードをクリックし、URLまたは詳細で確認

  • Keeperデスクトップアプリ: レコードを右クリックし [レコードUIDをコピー] を選択

使用方法

基本インストール

シークレットの取得

完全な例

リソース

ksm_install

KeeperシークレットマネージャーのPython SDKおよびCLIツールをインストールします。

プロパティ

プロパティ
デフォルト値
説明

python_sdk

ブーリアン

true

Python SDKをインストール

cli_tool

ブーリアン

false

CLIツールをインストール

user_install

ブーリアン

false

現在のユーザーのみを対象にインストール

base_dir

文字列

プラットフォーム依存

基本インストールディレクトリ

アクション

  • :install - Keeperシークレットマネージャーをインストール (デフォルト)

ksm_fetch

input.json 構成ファイルを使用してKeeperボルトからシークレットを取得します。

プロパティ

プロパティ
デフォルト値
説明

input_path

文字列

/opt/keeper_secrets_manager/input.json

input.json構成ファイルのパス

timeout

整数

300

スクリプト実行のタイムアウト値

deploy_path

文字列

/opt/keeper_secrets_manager/ksm.py

スクリプトの配置パス

アクション

  • :run - Keeperボルトからシークレットを取得 (デフォルト)

input_path が指定されていない場合、/opt/keeper_secrets_manager/input.json を参照します。

対応プラットフォーム

  • Linux: Ubuntu 18.04+、CentOS 7+、RHEL 7+、Debian 9+

  • macOS: 10.14+

  • Windows: Server 2016+

要件

Chef

  • Chef Infra Client 16.0+

  • Chef Workstation 21.0+ (開発用)

依存関係

  • Python 3.6+ (存在しない場合は自動インストール)

  • pip (自動インストール)

  • Keeper SDKをダウンロードするためのインターネット接続

最終更新