Puppet

Puppetカタログ実行でシークレットにアクセスするためのKeeperシークレットマネージャーモジュール

概要

Puppetは、IT環境全体で一貫性と拡張性のある構成管理を実現する強力なインフラ自動化プラットフォームです。Infrastructure as Code (IaC)、自動プロビジョニング、DevOpsプロセスにおける継続的コンプライアンスを支援します。

このモジュールは、PuppetとKeeperシークレットマネージャーを安全に統合し、カタログ実行時にシークレットを取得できるようにします。

機能

  • カタログ実行時にPuppetでKeeperボルト内のシークレットを使用可能

  • Base64、JSON、トークン認証構成をサポート

  • シークレット出力をJSONレスポンス、ファイル、環境変数に対応

要件

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

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

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

  • シークレットが共有されているKeeperシークレットマネージャーアプリケーション (アプリケーション作成手順はクイックスタートガイドを参照)

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

  • PuppetモジュールはBase64、トークン、JSON形式の構成を受け付けます

システム要件

  • Puppet: 7.24以降 (preprocess_deferredをサポート)

  • Python: 3.6以降 (エージェントノード上)

  • 対応OS: Linux、macOS、Windows

重要な構成

必須: エージェントの puppet.conf に次の設定を追加してください。

この設定により、遅延関数がカタログ適用中に実行され、事前に実行されないようになります。

シークレット表記法

フォーマット

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

  • 左側: Keeper表記法を使用

  • 右側: 出力仕様

    • VARIABLE_NAME (例: Label2)

    • env:VARIABLE_NAME (例: env:Label2)

    • file:/path/to/file-on-agent (例: file:/opt/ssl/cert.pem)

表記
デフォルト (空)
env:
file:

field または custom_field

表記クエリの結果はJSON出力に配置される

表記クエリの結果はエージェント上の環境変数としてエクスポートされる

許可されていない

file

ファイルがダウンロードされ、エージェントの指定先に配置される

ファイルがダウンロードされ、エージェントの指定先に配置される

ファイルがダウンロードされ、エージェントの指定先に配置される

  1. デフォルト (空)

  1. 環境変数出力 (env:)

  1. ファイル出力 (file:)

セットアップ

手順1: モジュールのインストール

Puppet Forgeからインストールします。

手順2: Hieraの設定

Hiera構成ファイルを作成または更新します (例: data/common.yaml)。

構成の構造

基本構成 (必須)

シークレットの追加 (任意)

これらのシークレットは、パラメータータイプとして Default Lookup が使用された場合に取得されます。

構成の詳細

  • keeper::config (必須): メインの構成コンテナ

  • authentication (必須): 要素数2の配列

    • [0]: 認証タイプ (base64tokenjson)

    • [1]: 認証値 (認証情報か ENV:VARIABLE_NAME)

  • secrets (任意): シークレット表記法文字列の配列

secrets配列は、keeper::config の下に記述しなくてもかまいません。 Deferred('keeper_secrets_manager_puppet::lookup', [SECRETS_ARRAY_HERE]) 関数呼び出しで、secrets配列または単一のシークレットを直接パラメータとして渡すことができます。

手順3: 環境変数の設定 (任意)

AUTH_VALUEENV:KEEPER_CONFIG を使用する場合、Puppetマスターに環境変数を設定してください。

環境変数を公開する際、KEEPER_CONFIG を使用せずに独自の環境変数名を指定することもできます。

使用方法

モジュールを含める

実行時に遅延実行されるカスタムルックアップ関数

このモジュールには keeper_secrets_manager_puppet::lookup というカスタム関数が用意されており、Puppetの Deferred() ラッパーと組み合わせて実行時に使用する必要があります。 詳細については「関数を遅延させる」をご参照ください。

Deferred('keeper_secrets_manager_puppet::lookup', []) 関数は3種類のパラメーターオプションを受け付けます。

パラメータタイプ
説明

パラメータなし

Hiera構成からシークレットを使用

Deferred('keeper_secrets_manager_puppet::lookup', [])

配列[文字列]

パラメーターからシークレットを使用

Deferred('keeper_secrets_manager_puppet::lookup', [$secrets_array])

文字列

パラメーターからシークレットを使用

Deferred('keeper_secrets_manager_puppet::lookup', ['UID/field/login > login_name'])

詳細な例

オプション1: デフォルトルックアップ (パラメーターなし)

オプション2: 文字列配列

オプション3: 単一文字列

完全な例

トラブルシューティング

デバッグモード

Puppet構成でログレベルを設定してデバッグログを有効化します。

よくある問題

1. "preprocess_deferred = false" エラー

  • 問題: 構成エラーでモジュールが失敗する

  • 解決策: puppet.conf[agent] セクションに以下を追加します。

2. "KSM script not found" エラー

  • 問題: 初回実行で Deferred 関数が失敗する

  • 解決策: モジュールが正しく含まれていること、Pythonのインストールが完了していることを確認します。

  1. 認証エラー

  • 問題: "Authentication failed"Error: access_denied, message=Unable to validate Keeper application access が発生する

  • 解決策: 構成内のKeeper認証情報を再確認し、ネットワーク接続を確認します。

最終更新