APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

HCP Vault Secrets が GA したので GitHub Actions と連携してみた

こんにちは、ACS 事業部の埜下です。

今年 6 月にパブリックベータとして発表された HCP Vault Secrets ですが、本日開催された HashiConf でついに GA が発表されました! HCP でも Beta の文字が消えていることが確認できます! アイコンも変わった気がしますね。

HCP Vault Secrets の Beta が消えている

そんなホットな HCP Vault Secrets が連携先として対応している GitHub Actions にシークレットの同期を試してみます。

HCP Vault Secrets とは

HCP Vault Secrets は HashiCorp 社が提供する HashiCorp Vault の新しいマネージドサービス (SaaS) です。

HCP Vault Secrets はシークレット管理に焦点を当てたサービスということで、「開発チームのアジリティを維持したまま、プラットフォームチームが Security Posture*1 の 強化に専念できるように」と開発したようです。 公式ブログも投稿されていますのでご覧ください。

www.hashicorp.com

HCP Vault Secrets と 既存の HCP Vault は以下のような違いがあります*2

項目 HCP Vault Secrets HCP Vault
シークレットの同期
アクセスコントロール
ユーザ管理
Vault Agent
クラスタ管理 UI
ダイナミックシークレット
シークレットのリース & 取り消し

このように、同じマネージドサービスと言っても HCP Vault と HCP Vault Secrets では機能に違いがあります。 HCP Vault Secrets は「シークレット管理に焦点を当てた」だけあって、Vault クラスタの管理が不要になることでシークレット管理の運用負荷を大幅に減らすことができそうです。

もちろんメリットだけでなく、「キーバリュー型以外のシークレットを格納できない」など機能は絞られている点はありますので、これらの違いはどちらのサービスを採用するかの判断基準になるかと思います。

GA 時点では HCP Vault Secrets には Free プランStandard プランが用意されています。 Free プランはシークレットを 25 個まで管理できるため気軽に試すことができます。 その他の機能も使用可能な数に制限があります。

一方、Standard プランでは 1 シークレットあたり月額 $0.50 の費用が発生しますが、各種制限が緩和されています。 また、HashiCorp からのサポートも受けられます。

詳しいプランごとの機能と制限については以下のページを参照してください。

developer.hashicorp.com

HCP Vault Secrets と GitHub Actions を連携

では早速、HCP Vault Secrets と GitHub Actions を連携してみましょう。

HCP Vault Secrets には「アプリケーション」と「シークレット」という 2 つの要素があり、以下のような関係性となっています。 GitHub Actions 等とはアプリケーション単位で連携され、アプリケーション内のシークレットがすべて連携先に同期される形です。

HCP Vault Secrets の要素

HCP にログインしてメニューから Vault Secrets を選び、アプリケーションを作成します。

HCP Vault Secrets 概要

アプリケーション名には英数字とハイフンのみ使用できました。

アプリケーション作成

アプリケーションを作成できたら同期したいシークレットを作成します。 アプリケーション内には複数のシークレットを格納でき、GitHub Actions などとはアプリケーション単位でシークレットが同期されます。

シークレット未作成の状態

今回は password というシークレットを作成してみます。

password シークレット作成

シークレットの準備ができたらメニューの Integrations から GitHub Actions を選択して連携していきます。 GA 時点では GitHub Actions の他に AWS Secrets Manager と Vercel が連携可能でした。

連携可能なサービス

GitHub 側で HCP Vault Secrets をアプリケーションとして登録します。

連携するアカウントを選択

登録した HCP Vault Secrets に公開するリポジトリを選択します。

HCP Vault Secrets に公開するリポジトリの範囲を選択

GitHub の設定が終わると HCP に戻って、シークレットを同期するリポジトリを選択します。

シークレットを同期するリポジトリを選択

すると、作成済みのシークレットが GtiHub Actions に同期されていきます。

GitHub Actions と同期前のステータス

シークレット同期中

同期が完了しました。 GA 発表直後だったからなのか同期完了まで時間が掛かってしまいましたが、現在は初回同期もすぐに完了しています。

同期完了

GitHub 側も見てみると、GitHub Actions のシークレットとして PASSWORD が作成されていました。 HCP Vault Secrets ではシークレット名を小文字で入力しましたが、GitHub 側はのシークレット名は大文字になるようですね。

ちなみに、GitHub Actions 側でシークレット値を変更しても HCP Vault Secrets には反映されませんでした。 同期は HCP Vault Secrets → GitHub Actions の一方通行です。

GitHub Actions のシークレットが作成されている

以上で HCP Vault Secrets と GitHub Actions の連携は完了です。 このあとはいつも通り GitHub Actions でシークレットを使うことができますし、シークレットを更新する場合 HCP Vault Secrets から変更することで即座に GitHub Actions に反映されます。

おわりに

GA したばかりの HCP Vault Secrets を使って GitHub Actions にシークレットを同期してみました。 GitHub Actions との連携からシークレット同期まで、一通りの設定を簡単にできて驚きました。

しかし、GitHub Actions だけ連携しても恩恵はあまり無いです。 HCP Vault Secrets は複数サービスと連携することで、より力を発揮すると考えます。

現在は連携可能なサービスが少ないですが、シークレット同期先は順次増えていくとのことなので今後のアップデートが楽しみですね。 Azure Key Vault 連携が公開されたら Azure と GitHub Actions を跨いだシークレット管理の構成を考えてみたいです。

本記事の投稿者: 埜下 太一
AKS/ACA をメインにインフラ系のご支援を担当しています。
個人ブログ

*1:「Security Posture」とは Microsoft が提案している「攻撃に強い IT 環境の構築」を表す用語のようです。

*2:https://www.hashicorp.com/products/vault/pricing から抜粋