GitHub
本チュートリアルでは、Shisho Cloud 上のワークフローを GitHub リポジトリにインポートしたのち、リポジトリ内のワークフローと Shisho Cloud 上のワークフローを同期する仕組みを GitHub Actions を用いて構築します。
このページでは、Shisho Cloud 上で実行される検査ルールを表す「Shisho Cloud 上のワークフロー」と GitHub Actions 上で実行される「GitHub Actions ワークフロー」の両者に言及します。単に「ワークフロー」と記載する場合は、Shisho Cloud 上のワークフローを指します。
本チュートリアルは、以下の 4 ステップからなります:
- Shisho Cloud 上のワークフローを格納した GitHub リポジトリを作成する
- Shisho Cloud において、特定リポジトリの GitHub Actions からのアクセスを許可する
- GitHub に おいて、ワークフローを Shisho Cloud にデプロイする GitHub Actions ワークフローを作成する
- GitHub において、リポジトリ内と Shisho Cloud 上のワークフローの差分をチェックする GitHub Actions ワークフローを作成する
3. のステップによって、リポジトリ内のワークフローの変更が即座に Shisho Cloud に反映されるようになります。 また 4. のステップによって、Shisho Cloud の Web インターフェースから直接ワークフローを編集した場合に、その変更に対応するプルリクエストが作成されるようになります。 これらのセットアップによって、GitHub リポジトリと Shisho Cloud 上のワークフローが常に同期されるようになります。
GitHub Actions から Shisho Cloud にアクセスするために「Shisho Cloud のアクセストークンを GitHub Actions のシークレットに登録する」というような操作の必要はありません。その代わりに、GitHub Actions ジョブに対して GitHub が発行する OIDC トークンの情報に基づき、Shisho Cloud がジョブに短命の認証情報を発行します。 これはおよそ GitHub Action が有する OIDC ベースの AWS/Google Cloud 連携の仕組み と同等の仕組みです。
ワークフローを格納した GitHub リポジトリを作成する
Shisho Cloud 上の全ての検査ルールを Git でバージョン管理するために、まずは既に Shisho Cloud 上にあるワークフローをエクスポートして、リポジトリに取り込みましょう。
まず GitHub でリポジトリを作成し、クローンしてください。クローンしたディレクトリへ Shisho Cloud 上のワークフローをエクスポートするには、次のコマンドを実行します。ただし、コマンド中の $SHISHO_CLOUD_ORG_ID はお使いの Shisho Cloud 組織の ID に置換してください。
shishoctl workflow export --structured --org $SHISHO_CLOUD_ORG_ID --path .
エクスポートが完了したら、作成されたファイルをコミットして GitHub にプッシュしてください。
特定リポジトリの GitHub Actions から Shisho Cloud 組織へのアクセスを許可する
続いて、GitHub Actions 上で Shisho Cloud にログインできるよう、Shisho Cloud 側の設定をしていきます。まず Shisho Cloud のボット作成画面を開き、「ボット」を作成します。ボットとは Shisho Cloud 組織へのアクセス権限を持つ主体であり、GitHub Actions ジョブはボットとして Shisho Cloud にログインすることになります。

ボットを作成したら、ボット名をクリックすると信頼条件の設定画面に遷移します。

信頼条件とは、GitHub Actions ジョブが当該ボットとして Shisho Cloud にログインするために、ジョブが満たすべき条件です。ワークフローが格納されている GitHub リポジトリの Organization およびリポジトリ名を記入すると、当該リポジトリに属する GitHub Actions ジョブが、先ほど作成したボットとして Shisho Cloud にログインできるようになります。記入が完了したら、「保存」ボタンをクリックしてください。
ワークフローを Shisho Cloud にデプロイする GitHub Actions ワークフローを作成する
次のステップとして、ワークフローを Shisho Cloud にデプロイする GitHub Actions ワークフローを作成しましょう。リポジトリ内に、以下のようなファイルを作成してください。
name: Deploy
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
id-token: write # Shisho Cloud にログインするために必要な権限
jobs:
main:
runs-on: ubuntu-latest
strategy:
matrix:
SHISHO_CLOUD_ORG_ID: ["flatt-security"] # FIXME: お使いの Shisho Cloud 組織の ID に置換してください
steps:
- uses: actions/checkout@v3
- name: Install shishoctl
run: |
SHISHOCTL_URL="https://shisho.dev/releases/shishoctl-0.14.0-x86_64-unknown-linux-gnu"
sudo curl -L $SHISHOCTL_URL -o /usr/local/bin/shishoctl
sudo chmod +x /usr/local/bin/shishoctl
- name: Sign in
uses: flatt-security/shisho-cloud-action@v1
with:
# FIXME: 入力すべき bot-id の値は信頼条件の設定画面に記載されています
bot-id: "BTXXXXXXXXXXXXXXXXXXXXXXXXXX"
- name: Deploy workflows
run: shishoctl workflow apply --org "$SHISHO_CLOUD_ORG_ID" --path .
env:
SHISHO_CLOUD_ORG_ID: ${{ matrix.SHISHO_CLOUD_ORG_ID }}
コード中の FIXME と記載された箇所を適切に書き換えてください。なお、入力すべき bot-id の値は、先ほど作成した信頼条件の設定画面下部に記載されています。

以上のようにしてファイル .github/workflows/deploy.yml を作成したら、コミットして GitHub にプッシュしてください。
ここまでの設定により、main ブランチにプッシュされるたびにリポジトリ内のワークフローが Shisho Cloud にデプロイされるようになります。GitHub リポジトリの Actions タブを開き、Deploy ワークフローが正常に実行されたことを確認しましょう。
