[アップデート]HCP Vault SecretsにGitHub Actionsとのシークレット同期機能が追加されました

[アップデート]HCP Vault SecretsにGitHub Actionsとのシークレット同期機能が追加されました

Clock Icon2023.08.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

アップデート概要

HCP Vault Secretsはシークレット管理のSaaSサービスです。

2023年6月にパブリックベータとして発表されました。

HCP Vault Secretsで管理しているシークレットはAWS Secrets Manager同期させることが可能です。

今回同期可能な対象として、GitHub Actsionsのシークレットが追加されました。

HCP Vault Secrets extends secret sync to GitHub Actions

何が嬉しい?

  • GitHub Actionsのシークレットの変更履歴を確認できる
  • シークレットの内容を設定後も確認できる
  • 複数リポジトリ間でのシークレット同期が可能

GitHub Actionsのシークレットの変更履歴を確認できる

GitHub Actionsには現在シークレットの変更履歴をログに残す機能はありません。

そのため、いつ誰が変更したかを把握するのが難しいです。

HCP Vault Secretsのシークレットの変更はActivity Logに残るため、変更履歴を追跡できるようになります。

シークレットの内容を設定後も確認できる

現在、GitHub Actionsでは一度設定したシークレットは後から確認することができません。

「シークレットへのコピペミスでActionsがコケた」という経験をしたことがある人は多いかもしれません。

HCP Vault Secretsでは設定後にもシークレットを確認することが可能です。 (確認は、アクティビティログに記録されます)

より安全にシークレットの設定ができそうです。

複数リポジトリ間でのシークレット同期が可能

複数リポジトリ間のシークレット同期が可能です。

GitHub FreeプランのPrivateリポジトリでは、Organizationシークレットが使えないため、代替案として使えそうです。(現在、HCP Vault Secretsの利用は無料)

やってみた

Vault Secretsでシークレットを作成して、Github Actions Secretsに同期してみます。

GitHub リポジトリの用意

任意の名前でリポジトリを作成します。公開範囲はPublicでもPrivateでも大丈夫です。

当たり前ですが、この時点ではActions Secretsは登録されていません。

HCP Vault Secretsにシークレットを登録

HCP PortalからVault Secretsを開きます。

Appsを選択して、Create new applicationでApplicationを作成します。

シークレットを登録します。

Integrations(GitHub Actions)の追加

作成したアプリケーションを選択して、サイドバー: Integrations-> GitHub Actionsの順に選択します。

どこにHCP Vault Secretsをインストールするか聞かれるため、任意のOrganizationやリポジトリを選択します。

どのリポジトリと同期をするか設定します。ここでは、前の手順で作成したリポジトリを選択します。

複数のリポジトリと同期させたい場合は、Add sync destinationを選択して上記の手順を繰り返します。

動作確認

Actions SecretsにVault Secretsで設定したUSER_NAMEが追加されていることが確認できました。

中身も一応確認してみましょう。

以下のGitHub Actionsワークフローファイルを用意します。

Secretsの値は直接Echoすると、実行結果ではマスクされて確認できません。

そのため、値がHCP Vault Secretsで設定した値かどうかをテストしてみました。

name: Test

on:
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Run a multi-line script
        run: |
          if [ ${{ secrets.USER_NAME }} = "hoge" ]; then
            echo "true"
          else
            echo "false"
          fi

trueが返ってきたので問題なさそうです。シークレットをhoge以外にして、falseになることも確認できました。

Secretsの追加と削除も試してみます。

シークレット追加

USER_PASSWORDというシークレットを追加してみます。

追加を確認できました。

シークレット削除

同期されているため、HCP Vault Secrets上のシークレットを削除することで、GitHub上のシークレットも削除されます。

HCP Vault Secrets自体にシークレットを残しつつ、GitHub上のシークレットだけ削除したい場合は同期先を削除します。

おわりに

HCP Vault SecretsのGitHub Actions シークレット統合の追加についてでした。

GitHub ActionsのSecrets管理のかゆいところに届く機能かと思いました。(後から内容確認できる、変更履歴がログに残る)

統合はAWS Secrets Managerだけだったのが、GitHub Actionsシークレットも追加されて使い方の幅が広がりました。

以上、AWS事業本部の佐藤(@chari7311)でした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.