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.13.1-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.13.1-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.13.1-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.13.1-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.13.1-x86_64-pc-windows-gnu.exe からダウンロードし、shishoctl.exe
として利用してください。
サインイン
shishoctl
コマンドが実行できる環境で以下のコマンドを実行することで、shishoctl
から Shisho Cloud にサインインすることができます:
shishoctl auth signin
shishoctl auth signin
コマンドで Shisho Cloud から取得された認証情報は、一定時間経過後に無効になります。
認証状態に関するエラーが発生した場合には、再度 shishoctl auth signin
コマンドを実行してください。
例: ワークフローの一覧を取得する
shishoctl
CLI からのサインインに成功すると、Shisho Cloud に関する操作の一部が shishoctl
から行えるようになります。
例えば以下は、組織 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