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

Takumi Guard が GitLab CI/CD に正式対応

· 約4分
Yoshiaki Matsutomo
Software Engineer @ GMO Flatt Security Inc.

Takumi Guard が GitLab.com の GitLab CI/CD に正式対応しました。これまでの GitHub Actions に加え、GitLab CI/CD のジョブからも、長期有効なシークレットを保存することなく、OIDC 認証を利用してボットとして Shisho Cloud にサインインすることで、Takumi Guard 経由のパッケージダウンロードが組織のインストールログに記録されるようになりました。

Takumi Guard が GitLab CI/CD に正式対応

概要​

GitLab CI/CD のジョブでは、OIDC を利用して、ボットとして Shisho Cloud に認証します。ID トークンはボットに設定された GitLab CI/CD の信頼条件に基づいて検証され、検証に成功すると、有効期間の短いアクセストークンが発行されます。この仕組みにより、CI 環境に長期有効な API キーやトークンを保存する必要がありません。

これまでも GitLab CI/CD からボットとして Takumi Guard を利用できましたが、詳細が記録されていませんでした。今回の対応により、取得したアクセストークンを使用したパッケージのダウンロードは、GitHub Actions と同様に、組織のインストールログに記録されます。

npm、PyPI、RubyGems、Go モジュール、Packagist のすべてのエコシステムで利用できます。

利用開始​

まず、Shisho Cloud でボットを作成し、対象プロジェクトの GitLab CI/CD の信頼条件を設定してください。信頼条件では、GitLab のプロジェクトパスを照合します。設定方法については、ボットの認証を参照してください。

次に、.gitlab-ci.yml のジョブに、shishoctl を使用してボットとしてサインインし、取得したアクセストークンをパッケージマネージャーに設定する処理を追加します。

例えば、npm の場合は以下のように設定します。

build:
image: node:22-bookworm
id_tokens:
ID_TOKEN:
aud: https://gitlab.com
variables:
SHISHOCLOUD_BOT_ID: "BT01EXAMPLE..." # Shisho Cloud コンソールからコピー
before_script:
# shishoctl をインストールする
- SHISHOCTL_URL="https://shisho.dev/releases/shishoctl-0.15.0-x86_64-unknown-linux-gnu"
- curl -L $SHISHOCTL_URL -o /usr/local/bin/shishoctl
- chmod +x /usr/local/bin/shishoctl

# ボットとしてサインインし、アクセストークンを取得する
- shishoctl auth signin:bot
--bot ${SHISHOCLOUD_BOT_ID}
<<< ${ID_TOKEN}
--expires-in-minutes 30 # 既定は 30 分(最大 1440 分)。ジョブに合わせて調整する
- export ACCESS_TOKEN="$(shishoctl auth print-access-token)"

# アクセストークンを npm に設定する
- npm config set registry https://npm.flatt.tech/
- npm config set //npm.flatt.tech/:_authToken "$ACCESS_TOKEN"
script:
- npm install
- npm test

アクセストークンの有効期間はデフォルトで 30 分です。--expires-in-minutes オプションを使用すると、最大 24 時間まで指定できます。ジョブの実行時間に応じて調整してください。

ほかのエコシステムの設定例については、各クイックスタートの「CI/CD」セクションにある「GitLab CI/CD」タブを参照してください。