GitHub ActionsのSecret管理から解放されよう
GitHub ActionsのSecret管理が面倒だなあと思ったことはないだろうか。
RepositoryごとにSecretを登録して、Environmentごとに設定して。そのあとに、APIキーを更新したらGitHub側も忘れずに更新して……。
大した手間ではない作業なのだが、Repositoryや抱えているプロジェクトが増えてくると、ちりつもでだんだん面倒になってくる。
特に複数のサービスで同じSecretを使っていると、変更するたびにあちこち更新する必要がある。
そんなあなたに、Dopplerというサービスを紹介したい。

Doppler is 何。
一言でいうと、DevOpsにおけるSecret管理をいい感じに自動化してくれるサービス。
APIキー、アクセストークン、データベースの接続情報といったアプリケーションの動作に必要な機密情報から、署名や証明書などSecretと名のつくものならなんでも一元管理できる。
例えば、今までのこんな感じのワークフローをだいぶイケイケにできる。
- 1PasswordからAPIキーをコピーする
- GitHubのRepositoryの設定を開く
- Actions Secretsに登録する
- 別のリポジトリにも同じSecretを登録する
- APIキーを更新したら、登録した場所を思い出して全部更新する
当たり前すぎて特に何も感じていなかったが、いや、面倒すぎる。
しかも、更新を忘れたらCI/CDがコケるし、署名回りなんかはコケたらだいぶめんどい。
Dopplerを使えば、こうしたSecretの更新作業周りを楽にできる。
Doppler上でSecretを管理し、GitHub Actionsなどの外部サービスに自動で同期できるからだ。
つまり、Secretを更新する場所をDopplerに集約できる。
集約することがこのサービスの核心であり、それだけと言えばまあそれだけなのだが、これがまあ、非常に便利。
GitHub Actionsとの連携が便利
公式のGitHub Integrationを利用すると、Dopplerに登録したSecretをGitHub ActionsのSecretsに自動同期してくれる。

Dopplerでプロジェクトを作成し、GitHub Integrationから連携するリポジトリとConfigを指定するだけなので、設定もらくちん。
一度連携してしまえば、あとはDoppler側でSecretを追加・更新・削除すると、GitHub側にも変更が反映される。
つまり、毎回GitHubのSettingsを開いてSecretをポチポチ登録する必要がなくなる。
素晴らしい。
ちなみに、GitHub Actionsだけでなく、CodespacesやDependabotなどへの同期にも対応している。
GitHubで開発をしている多くの開発者にとっては使いやすいはずだ。

環境ごとにSecretを分けられる
Dopplerならではの概念だが、人によっては便利だと思うのが、環境ごとのSecret管理だ。
例えば、同じアプリケーションでも、Development、Staging、Productionでは異なるAPIキーや接続情報を使うことが多いだろう。
これをGitHub Actionsだけで管理しようとすると、Environment Secretsを設定したり、命名規則を工夫したりする必要がある。
Dopplerでは、プロジェクトの中に環境ごとのConfigを用意して、それぞれのSecretを管理できる。
例えば、こんな感じ。
my-awesome-app
├── dev
│ ├── DATABASE_URL
│ └── API_KEY
├── stg
│ ├── DATABASE_URL
│ └── API_KEY
└── prd
├── DATABASE_URL
└── API_KEY環境ごとに異なる値を持たせつつ、一つのサービスから管理できるというわけ。
GitHub ActionsのEnvironment Secretsとの連携にも対応しているので、Enviromentを分けて運用しているプロジェクトでも使いやすい。
こういう地味な管理作業を減らしてくれるのはありがたい。
Secretの管理元を統一できる
もう一つ重要なのが、Secretの管理元を明確にできること。
例えば、同じAPIキーがGitHub Actions、デプロイ先のサービス、ローカル開発環境などに散らばっていると、どれが最新なのか分からなくなることがある。
DopplerをSecretの管理元として統一すれば、少なくとも「どこで更新するべきか」は明確になる。
ちなみに、DopplerのGitHub Integrationは基本的にDopplerからGitHubへの一方向同期なので、何れにしてもDopplerへ集約する方が運用として楽になる。
GitHub側でSecretを変更しても、その値がDopplerに反映されるわけではない。
既存のGitHub Secretsも、連携するだけで自動的にDopplerへ取り込まれるわけではないので注意。
Dopplerを導入したら、以降のSecret更新はDoppler側で行う、という運用にするのがよさそう。

Infisicalという選択肢もある
ちなみに、競合サービスとしてはInfisicalなどがある。

競合サービス|Infisical
InfisicalもSecretの一元管理や外部サービスとの連携に対応している。
どちらもSecret管理を効率化するという基本的な目的は同じ。
ただし、提供されている機能やプラン、セルフホストへの対応方針などには違いがあるので、用途に応じて選ぶのがよいと思うが、後述するが学生ならDopplerがおすすめだ。
学生なら無料だよ
さて、ここからが本題と言っても過言ではない。
Dopplerはなんと、学生向けにTeamプランを無料で提供している。
GitHub Educationと提携しており、GitHub Student Developer Packの対象者であれば、通常は月額21ドル/ユーザーのTeamプランを無料で利用できる。

GitHub Student Developer Packといえば、学生向けにさまざまな開発ツールの特典が提供されている、あれである。
Dopplerもその一つというわけだ。
学生開発者としては非常にありがたい。
GitHub Actionsを使っている学生なら、試してみてはいかがだろうか。

学生割引はアカウント登録時に要注意
学生向けの割引を受けるには、GitHub Student Developer Packの認証が有効なGitHubアカウントを使う必要がある。
GitHub Student Developer Packの認証が有効なGitHubアカウントを使ってGitHub SSOでログインし、新しいWorkplaceを作成することで割引が適用される仕組みになっている。
既存のWorkplaceに自動で割引が適用されるとは限らないので、そこは注意。
もし割引が反映されない場合は、一度ログアウトしてGitHub SSOでログインし直し、新しいWorkplaceを作成する方法が公式に案内されている。

ミスっても、初期はTrialで始まるはずなので、プランと請求情報を確認しておこう。

Secret管理はまだ残るが。
便利なDopplerだが、当然ながら導入すればSecret管理について何も考えなくてよくなる、というわけではない。
例えば、どのリポジトリにどのSecretを同期するのかは、適切に設定する必要がある。
Production用のAPIキーをDevelopment環境に渡してしまったら本末転倒だ。
また、Secretを複数のサービスに同期する以上、同期先のアクセス権限やセキュリティについても考える必要がある。
GitHub Actionsとの連携では、同期したSecretは引き続きGitHub側にも保存される。
Dopplerに集約したからといって、同期先のSecretがなくなるわけではない。
さらに、Secretの変更が自動で同期されるのは便利だが、変更によってアプリケーションが動かなくなる可能性は当然ある。
そのため、Production環境のSecretを更新するときは、これまでどおり慎重に運用する必要がある。
とはいえ、手作業での転記や更新漏れを減らせるメリットは大きい。
Secretの安全性を考えながら、面倒な管理作業を減らせるのがDopplerのよいところだろう。
終わりに
GitHub ActionsのSecret管理は、プロジェクトが小さいうちはそれほど気にならないし、おそらく皆そう思っているだろう。
しかし、リポジトリや環境が増えてくると、だんだん面倒になってくる。
そうした管理作業を自動化できるDopplerは、なかなか便利なサービスだ。
特に学生ならTeamプランを無料で利用できるので、試してみるハードルも低い。
Secret管理に時間を使うより、もっとProductiveなことをしよう。
皆様に、快適なDevOps生活があらんことを。




