メインコンテンツまでスキップ

CI 連携と OIDC 認証

CI から Takumi Guard を組織に紐づけて利用する場合、CI ジョブに発行される ID トークン(OIDC トークン)を使用して、ボットとして Shisho Cloud に認証します。ID トークンはボットに設定された信頼条件に基づいて検証され、検証に成功すると、有効期間の短いアクセストークンが発行されます。このアクセストークンを使用したパッケージのダウンロードは、組織のインストールログに記録されます。

この仕組みにより、CI 環境に長期有効なシークレットを保存することなく、Takumi Guard を利用できます。

具体的な設定方法については、各クイックスタートの CI/CD の節(例:npm)を参照してください。

認証の流れ​

ID トークンには、ジョブを実行したリポジトリ(GitLab CI/CD ではプロジェクト)やユーザーなどの情報が含まれており、発行元によって署名されています。

Shisho Cloud の STS(Security Token Service)は、発行元の公開鍵を使用して ID トークンの署名を検証し、ボットに設定された信頼条件と照合します。条件に一致した場合、Takumi Guard 用の短命なアクセストークンを発行します。

アクセストークン​

アクセストークンには、ダウンロードの帰属先となる Shisho Cloud 組織と、CI ジョブに関する情報が含まれます。Takumi Guard はこのトークンを検証し、パッケージのダウンロードを組織に紐づけてインストールログに記録します。アクセストークンは短時間で期限切れとなるため、漏洩した場合のリスクが最小限に抑えられます。アクセストークンのデフォルト有効期限は 30 分です(最大 24 時間まで設定可能)。

GitHub Actions では Action の expires-in 入力、GitLab CI/CD では shishoctl の --expires-in-minutes オプションで指定します。

Bot ID について​

Bot ID はシークレットではなく、認証対象のボットを識別するための公開可能な識別子です。そのため、GitHub Actions のワークフローファイルや GitLab CI/CD の .gitlab-ci.yml に直接記載できます。

認証には ID トークンの署名検証と信頼条件の照合が必要となるため、Bot ID だけでアクセストークンを取得することはできません。