HashiCorp Vault を使用してエージェントキーを管理する

HashiCorp Vault 用の Signal Sciences プラグインを使用すると、Vault を使用して Next-Gen WAF エージェントのキーを管理できます。Vault は、ID ベースのシークレットおよび暗号化管理システムです。

具体的には、このプラグインでは次のことが可能になります。

  • Vault が、サイト (ワークスペースとも呼ばれる) のエージェントアクセスキーとエージェントシークレットキーを保存する。

  • Vault エージェントが必要に応じて Vault からキーを取得し、そのキーを Next-Gen WAF エージェントに渡す。

  • Vault がキーをローテーションまたは交換する。Vault がキーを交換すると、Vault エージェントは関連する Next-Gen WAF エージェントの設定ファイルを更新し、Next-Gen WAF エージェントを再起動します。

  • 認証済みアプリケーション、サービス、およびマシンが Vault に保存されたキーを読み取る。

制約と考慮事項

Vault 内のキーを管理するプラグインを設定する前に、以下の点に留意してください。

  • HashiCorp Vault 用の Signal Sciences プラグインを使用するには、Vault がすでにインストールされ、外部プラグインを読み込むように設定されている必要があります。

  • キーのローテーションプロセスにより、Next-Gen WAF エージェントが自動的に再起動します。キーのローテーション中にエージェントに短時間のダウンタイムが生じるため、メンテナンス期間中にキーをローテーションすることをお勧めします。

  • Signal Sciences プラグインは、x86 CPU アーキテクチャの Linux でのみサポートされています。

プラグインの設定

systemd を使用するシステムで初めてプラグインを設定するには、次の手順に従ってください。

  1. curl コマンドラインツールを使用して、プラグインのバイナリを外部プラグインディレクトリにコピーします。

    $ curl -O https://dl.security.fastly.com/vault-plugin-sigsci/latest/vault-plugin-sigsci.tar.gz
    $ tar xzvf vault-plugin-sigsci.tar.gz
    $ vault plugin register -sha256=$(sha256sum vault-plugin-sigsci|cut -c-64) secret vault-plugin-sigsci
  2. コマンドラインを使用してプラグインを有効にします。

    $ vault secrets enable -path=sigsci vault-plugin-sigsci

    Vault はプラグインをパス /sigsci にマウントします。

  3. プラグイン用のユーザーを作成します。ユーザーにユーザーロールを割り当てます。プラグインユーザーに指定したメールアドレスに招待メールが送信されます。

  4. プラグインユーザーのメールアカウントから招待メールを開き、Accept invite をクリックします。アカウント作成フォームが表示されます。

  5. アカウント作成フォームに必要な情報を入力します。

    • Email address フィールドはそのままにしておきます。

    • Name フィールドに vault-user と入力します。

    • Password フィールドにアカウントのパスワードを入力します。

    • Confirm password フィールドにパスワードをもう一度入力します。

  6. Create account をクリックします。

  7. プラグインユーザー用の API アクセストークンを作成します。エージェントキーの読み取りと管理には、Signal Sciences クラウド API 認証情報が必要です。

  8. コマンドラインを使用して、API アクセストークンを token.txt ファイルにコピーします。

    $ vault write -f /sigsci/role/vault-user corp=<corp-id> email=<email-id> token=@token.txt

    <corp-id> を貴社 (アカウント) の ID に、<email-id> をプラグインユーザーのメールアドレスに置き換えます。

  9. コマンドラインを使用して、単一のサイト (ワークスペース) またはすべてのサイト (ワークスペース) のエージェントキーを Vault にコピーします。

    $ vault write -f /sigsci/creds/vault-user/sites/<site-name>

    <site-name> をサイト (ワークスペース) の名前に置き換えます。

    または

    $ vault write -f /sigsci/creds/vault-user/sites/
  10. 以下のテンプレートを使用して、Vault エージェントをインストールして設定します。

    template {
    source = "/etc/signalsciences/agent.ctmpl"
    destination = "/etc/signalsciences/agent.conf"
    }

    Vault エージェントは、エージェントキーがローテーションされたときに、Next-Gen WAF エージェント設定テンプレートのレンダリングを自動化します。

    設定テンプレート /etc/signalsciences/agent.ctmpl の例 :

    {{ with secret "sigsci/creds/vault-user/sites/<site-name>" }}
    accesskeyid={{ .Data.accessKey }}
    secretkey={{ .Data.secretKey }}
    {{ end }}
  11. コマンドラインを使用して、systemd service を作成し、エージェントを再起動します。

    $ sudo tee -a /etc/systemd/system/sigsci-agent-restart.service <<END
    [Unit]
    Description="signalsciences agent restarter"
    [Service]
    Type=OneShot
    ExecStart=/usr/bin/systemctl restart sigsci-agent.service
    [Install]
    WantedBy=multi-user.target
    END
  12. コマンドラインを使用して、設定ファイルウォッチャーを作成します。

    $ sudo tee -a /etc/systemd/system/sigsci-agent-restart.path <<END
    [Path]
    PathChanged=/etc/signalsciences/agent.conf
    [Install]
    WantedBy=multi-user.target
    END
  13. コマンドラインを使用して、設定ファイルウォッチャーを起動して有効にします。

    $ systemctl enable --now sigsci-agent-restart.service

エージェントキーのローテーション

サイト (ワークスペース) のエージェントキーをローテーションするには、Vault 内のキーを置き換え、Next-Gen WAF エージェントを再起動してから、Vault 内の非プライマリキーを削除します。

  1. コマンドラインを使用して、Vault 内のエージェントキーをローテーションします。

    $ vault write -f /sigsci/rotate/sites/<site-name>

    <site-name> を該当するサイト (ワークスペース) の名前に置き換えます。

  2. コマンドラインを使用して、Vault 内の非プライマリキーを削除します。

    $ vault delete /sigsci/rotate/sites/<site-name>

    <site-name> を該当するサイト (ワークスペース) の名前に置き換えます。

プラグインのロールとキーの管理

プラグインが設定されると、コマンドラインを使用して次のアクションを実行できます。

Actionコマンド
ロールを一覧表示するvault read /sigsci/role/
ロール詳細を読み込むvault read /sigsci/role/vault-user
ロールを削除するvault delete /sigsci/role/vault-user
1つのサイト (ワークスペース) のキーを Vault にコピーするvault write -f /sigsci/creds/vault-user/sites/<site-name>
すべてのサイト (ワークスペース) のキーを Vault にコピーするvault write -f /sigsci/creds/vault-user/sites/
サイト (ワークスペース) のキーをローテーションするvault write -f /sigsci/rotate/sites/<site-name>
すべてのサイト (ワークスペース) のキーを一覧表示するvault read /sigsci/creds/vault-user/sites/
1つのサイト (ワークスペース) のキーを読み込むvault read /sigsci/creds/vault-user/sites/<site-name>
サイト (ワークスペース) の非プライマリキーを Vault から削除するvault delete /sigsci/rotate/sites/<site-name>
サイト (ワークスペース) のキーを Vault から削除するvault delete /sigsci/creds/vault-user/sites/<site-name>