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.15.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.15.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.15.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.15.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.15.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 にアクセスする場合は、個人アカウントの代わりにボットを使ってサインインしてください。API キー、GitHub Actions OIDC、GitLab CI OIDC、カスタム OIDC IdP といった認証方法の詳細と、それぞれで shishoctl auth signin:bot を実行する方法については、ボット / 認証 を参照してください。
例: ワークフローの一覧を取得する
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