クラウドを活用した開発ではプロビジョニングされたインフラストラクチャに変更を加えるため、クラウドプロバイダーに対してCI/CD(Continuous Integration and Continuous Deployment)サーバーの認証が必要となる。これまではクラウドプロバイダー内で作成したIDを、CI/CDサーバー側で長期間有効な資格情報として手動で設定する、という運用だった。しかし資格情報の本来の目的を考えると、この運用は常に重大なビジネスリスクを抱えている。
OpenID Connect認証プロトコルは、ユーザーのIDに関する検証可能な情報を提供するための相互運用可能なメカニズムである。検証側がユーザーのIDプロバイダーを信頼できるものとした場合、ユーザーデータをID トークンと呼ばれるJson Webトークン (JWT)のクレームとして提供する。
GitHub Actionsの最初のステップではクラウドプロバイダーのID・アクセス管理サービスを介してGitHubを外部 ID ソースとして登録する。ワークフローの実行時、パイプラインは実行時にのみ有効なIDトークンにアクセスする。トークンにはトークンの利用者、持ち主の識別子などのメタデータが含まれる。
クラウドプロバイダーはこの情報を使用して、短期間有効な資格情報(アクセストークンなど)を発行することができる。GitHub Actions は現在、Hashicorp Vault、Amazon Web Services、Azure、Google Cloud Platformでこれをサポートしている。
この新機能に対する反応はリリース以来おおむね好評でHashicorp の創設者である Mitchell Hashimoto 氏は、次のようにツイートしている。
GitHub Actionsは実行ごとにOIDC IDを作成するということを最近になって知りました。これでVault を構成してActions ID を使用した認証を許可し何でもアクセスできるようにすることができます。いくつかの整理は必要だけれども、とても有望なことです!
しかし、採用は期待よりも遅れているようで、WhiteDuckのDevOps Consulting & Operationsの責任者であるNico Meisenzahl氏は次のようにツイートしている。
クラウドプロバイダーと #GitHub Actions の #Kubernetes を使用した #OIDC 認証の件は世の中で盛り上がっていますか?多くの利点があるけれども採用している人はまだ少ないようですね。
GitHub が 2021 年後半に機能をリリースした後、他の CI/CDツールベンダーが同様のインテグレーションを自社製品に展開している。例えば2022 年後半にリリースされた GitLab v15.7 には、Hashicorp Vault、AWS、Azure、GCP へのアクセスのサポートが含まれており、Circle CI は2023 年 2 月にGCPとAWSの統合のサポートを発表している。
クラウドプロバイダーを使用した GitHub Actions OIDC ログイン機能は、すべてのプランで追加料金なしで利用できる。