shishoctl CLI から操作する
shishoctl CLI は Shisho Cloud を操作するための CLI です。
このツールを用いると、docker コマンド や kubectl コマンドに近い体験で Shisho Cloud へのポリシーのデプロイや管理を行えます。
インストール
現在 shishoctl がサポートしている各環境で、shishoctl をインストールするコマンドを以下に示します:
- Linux (amd64)
- Linux (arm64)
- macOS (Intel CPU)
- macOS (Apple Silicon)
- Windows (amd64)
以下の コマンドにより、shishoctl を /usr/local/bin にインストールできます:
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
以下のコマンドにより、shishoctl を /usr/local/bin にインストールできます:
SHISHOCTL_URL="https://shisho.dev/releases/shishoctl-0.14.0-aarch64-unknown-linux-gnu"
sudo curl -L $SHISHOCTL_URL -o /usr/local/bin/shishoctl
sudo chmod +x /usr/local/bin/shishoctl
以下のコマンドにより、shishoctl を /usr/local/bin にインストールできます:
SHISHOCTL_URL="https://shisho.dev/releases/shishoctl-0.14.0-x86_64-apple-darwin"
sudo curl -L $SHISHOCTL_URL -o /usr/local/bin/shishoctl
sudo chmod +x /usr/local/bin/shishoctl
以下のコマンドにより、shishoctl を /usr/local/bin にインストールできます:
SHISHOCTL_URL="https://shisho.dev/releases/shishoctl-0.14.0-aarch64-apple-darwin"
sudo curl -L $SHISHOCTL_URL -o /usr/local/bin/shishoctl
sudo chmod +x /usr/local/bin/shishoctl
WSL 等で Linux 向けバイナリを利用するか、https://shisho.dev/releases/shishoctl-0.14.0-x86_64-pc-windows-gnu.exe からダウンロードし、shishoctl.exe として利用してください。
サインイン
shishoctl コマンドが実行できる環境で以下のコマンドを実行することで、shishoctl から Shisho Cloud にサインインすることができます:
shishoctl auth signin
shishoctl auth signin コマンドで Shisho Cloud から取得された認証情報は、一定時間経過後に無効になります。
認証状態に関するエラーが発生した場合には、再度 shishoctl auth signin コマンドを実行してください。
ボットとしてサインインする
CI/CD 環境やサーバー環境など、ブラウザを使用できない環境から Shisho Cloud にアクセスする場合は、ボットアカウントを使ってサインインすることができます。 ボットによるサインイン方法は、以下の2通りです。
信頼条件を使用したサインイン (GitHub Actions / GitLab CI での利用)
GitHub Actions や GitLab CI という OIDC 対応環境では、信頼条件を使用した認証を推奨します。 この方法では API Key を管理する必要がなく、より安全に認証できます。
詳細は以下のドキュメントを参照してください:
API Key を使用したサインイン
OIDC 対応環境以外でボット認証を行う場合、API Key を使用して shishoctl から Shisho Cloud にアクセスできます。
APIキーはボットに紐づく概念です。 そのため、ボットを未だ作成していない場合は、まずボットを作成しましょう。 具体的な手順は以下です。
- ボット一覧 ページにアクセスする
- 「ボットの追加」ボタンから、新しいボットを作成する

作成できたら、以下の手順でAPIキーが発行できます。
- ボット一覧 ページにアクセスする。
- 作成したボットの名前をクリックし、個別ページを開く。
- APIキータブで、「APIキーの作成」を押下し、ボットの API キーを新規作成する。

API キーは作成時に一度しか表示されません。あとからの再確認は不可能なので、作成時に控え、安全な場所に保存してください。
以下のコマンドで API キーを使って認証してください:
shishoctl auth signin:bot \
--bot <Bot ID> \
--api-key-json "$(cat api-key.json)"
なお、api-key.json ファイルは、以下のような JSON 形式で作成する必要があります。
{
"api_key": "shisho_apikey_..."
}
または API Key を直接指定することもできます:
shishoctl auth signin:bot \
--bot <Bot ID> \
--api-key-json '{"api_key":"shisho_apikey_..."}'
Bot ID は BTから始まるIDで、ボット作成画面で作成後、ボットの詳細ページURLにて確認できます。
https://cloud.shisho.dev/{ORGANIZATION_ID}/settings/bots/{BOT_ID}
一般的な SaaS の API キーと同様に、ボットの API キーが漏れると、Shisho Cloud 上のでデータが侵害される可能性があります。安全に扱うため、以下に留意ください。
- API キーを外部公開しない。特に、GitHub 等の公開リポジトリにコミットしない。
- 非公開領域に API キーを保管する場合も、極力安全な場所を利用する。例えば、GitHub リポジトリ内に直接含めるよりは、GitHub Actions のシークレット管理機能を利用する。
- 不要になった API キーは速やかに削除する。
認証方法の使い分け
以下の表は、利用環境に応じた推奨認証方法の一覧です。環境に最も適した方法を選択してください。
| 環境 | 推奨認証方法 |
|---|---|
| GitHub Actions | 信頼条件 (OIDC) |
| GitLab CI | 信頼条件 (OIDC) |
| その他の CI/CD 環境 | API Key |
例: ワークフローの一覧を取得する
shishoctl を通じて Shisho Cloud 上の各種操作を実行できるようになります。
例えば、以下のコマンドは組織ID org-a に登録されているワークフローの一覧を取得する例です:
shishoctl workflow list -o org-a
組織 ID とは、組織の作成時に登録した ID のことです。 組織 ID が不明な場合は、以下の手順で組織 ID を確認してください:
- Shisho Cloud のダッシュボード画面を Web ブラウザ上で開く
- その際に Web ブラウザに表示される以下のような URL に含まれる組織 ID (
[oid]部分) を確認する
https://cloud.shisho.dev/[oid]/dashboard
例: 複数のコマンドをつなげて実行する
shishoctl CLI では、データを取得するためのコマンドの結果は JSON か YAML 形式で出力されます。
これを利用し、あるコマンドの結果を加工・抽出して次のコマンドの引数とすることで、複数のコマンドをつなげて複雑な処理を実現することができます。
たとえば、以下はある組織に含まれる検知事項の一覧を取得したあと、それぞれの検知事項が対象とするリソースの情報を取得し、それらをまとめて表示する Python スクリプトの例です。
実行の際は、環境変数 SHISHOCTL_ORG_ID (組織 ID) と SHISHOCTL_PROJECT_ID (プロジェクト ID) を事前に設定してください。
import subprocess
import yaml
import os
org_id = os.getenv("SHISHOCTL_ORG_ID")
project_id = os.getenv("SHISHOCTL_PROJECT_ID")
result = subprocess.run(
["shishoctl", "project", "finding", "list", "--org", org_id, "--project", project_id, "--format", "yaml"],
capture_output=True,
text=True,
)
parsed = yaml.safe_load(result.stdout)
summary = {"entries": []}
for i, finding in enumerate(parsed["entries"]):
api_version = finding["id"]["apiVersion"]
kind = finding["id"]["kind"]
result = subprocess.run(
["shishoctl", "finding", "describe", "--org", org_id, api_version, kind],
capture_output=True,
text=True,
)
parsed = yaml.safe_load(result.stdout)
summary["entries"].append({
"id": {
"apiVersion": api_version,
"kind": kind,
},
"subjects": [],
})
for entry in parsed["decisions"]["entries"]:
summary["entries"][i]["subjects"].append(entry['header']['subject'])
print(yaml.dump(summary))
その他のコマンドの使い方を確認する
shishoctl コマンドのさらなる用法については、本 Web サイトの他のページや、以下のコマンドを通して確認してください:
shishoctl --help