[アップデート]HCP Vault SecretsにGitHub Actionsとのシークレット同期機能が追加されました
アップデート概要
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)でした。