Skip to content
Latchkey

OpenID Connectとは何か?OAuthの上に載るアイデンティティ

OpenID Connect(OIDC)はOAuth 2.0の上に載る薄いアイデンティティレイヤーであり、アプリケーションがユーザーやworkloadが実際に誰であるかを検証できるようにします。

OpenID Connect、すなわちOIDCは、OAuthが残す隙間を埋めます。認証を追加するのです。OAuthがアクセスを付与するのに対し、OIDCは認証済みのサブジェクトを記述する署名付きのID tokenを発行することでアイデンティティを証明します。CI/CDでは、OIDCはキーレス認証の基盤となり、パイプラインが自身のアイデンティティをクラウドプロバイダーに証明し、保存されたシークレットなしで短命の認証情報を受け取れるようにします。

OIDCがOAuthに追加するもの

OAuthは認可のためにaccess tokenを発行します。OIDCはID tokenを追加します。これは、subやissといった、ユーザーやworkloadに関する検証済みのclaimを含む署名付きのJSON Web Token(JWT)です。relying partyは署名を検証し、そのclaimを信頼します。

ID token

  • sub(subject)やiss(issuer)といったclaimを持つ署名付きのJWT。
  • issuerの公開鍵に対してオフラインで検証可能。
  • 時間で制限されているため、無期限にリプレイすることはできない。

キーレスなCI/CDのためのOIDC

最新のCIプラットフォームはOIDCプロバイダーとして振る舞えます。workflowは自身(リポジトリ、branch、環境)を記述するOIDCトークンを要求し、そのissuerを信頼するよう設定されたクラウドプロバイダーとそれを交換します。クラウドは短命の認証情報を返します。長命のシークレットは一切保存されません。

これがセキュリティにとって重要な理由

保存されたクラウドキーは、長命で漏洩しやすいため、侵害の主要な原因の1つです。OIDCは常設の認証情報を取り除きます。各jobは数分で失効する、新鮮で狭くスコープされたトークンを得ます。盗むべき永続的なものが何もないのです。

信頼の設定

OIDCのセキュリティは信頼ポリシーに依存します。どのissuer、リポジトリ、branchがクラウドロールを引き受けられるかをスコープします。緩いポリシー(組織内のどのリポジトリも信頼する)は露出を広げ、厳しいポリシー(1つのリポジトリ、1つのbranch、1つの環境)はアクセスを最小限に保ちます。

OIDCとrunner

OIDCトークンは、job中にrunner上で生成されます。隔離されたエフェメラルなrunner(Latchkeyのマネージドrunnerなど)では、そのトークンとそれが生み出す認証情報はjobの間だけ存在し、環境が破棄されると消えます。

重要なポイント

  • OIDCはOAuth 2.0の認可の上に、検証済みのアイデンティティ(ID token)を追加します。
  • キーレスなCI/CDを可能にします。パイプラインがアイデンティティを証明し、短命のクラウド認証情報を得ます。
  • セキュリティは、issuer、リポジトリ、branchに対する厳密にスコープされた信頼ポリシーに依存します。

関連ガイド