プロジェクトの管理
shishoctl project コマンドは、Shisho Cloudの包括的なプロジェクト管理機能を提供します。このガイドでは、プロジェクトのライフサイクル、メンバー管理、スコープ設定、通知設定など、プロジェクト関連のすべての操作について説明します。
前提条件
プロジェクトコマンドを使用する前に、以下を準備してください:
shishoctlのインストール(インストールを参照)- Shisho Cloud へのサインイン:
shishoctl auth signin - 組織 ID(Shisho Cloud ダッシュボードの URL から確認可能)
プロジェクトのライフサイクル管理
プロジェクトの作成
以下のコマンドにより、組織内に新しいプロジェクトを作成できます:
shishoctl project create --org <ORGANIZATION_ID> --name <PROJECT_NAME> [--description <DESCRIPTION>]
例:
shishoctl project create --org org-a --name "Web Application Security" --description "ウェブアプリケーションのセキュリティ分析"
--quiet オプショ ンを使用することで、プロジェクト ID のみを取得できます:
PROJECT_ID=$(shishoctl project create --org org-a --name "My Project" --quiet)
echo "作成されたプロジェクト: $PROJECT_ID"
プロジェクトの一覧表示
以下のコマンドにより、組織内のすべてのプロジェクトを一覧表示できます:
shishoctl project list --org <ORGANIZATION_ID>
ページネーション付き:
# 最初の25プロジェクトを表示
shishoctl project list --org org-a --per-page 25 --page 0
# 1ページあたり50プロジェクトで2ページ目を表示
shishoctl project list --org org-a --per-page 50 --page 1
出力形式:
# JSON出力(デフォルト)
shishoctl project list --org org-a --format json
# YAML出力
shishoctl project list --org org-a --format yaml
プロジェクトの削除
以下のコマンドにより、プロジェクトを削除できます(慎重に利用してください):
shishoctl project delete --org <ORGANIZATION_ID> --project <PROJECT_ID>
# 確認プロンプトをスキップ
shishoctl project delete --org <ORGANIZATION_ID> --project <PROJECT_ID> --force
例:
shishoctl project delete --org org-a --project proj-123 --force
:::
プロジェクトの削除は元に戻せません。必ず慎重に利用してください。
--force オプションを使用することで、確認プロンプトをスキップできます。
:::
メンバー管理
メンバーの追加
既存の組織ユーザーを追加する場合:
# まず、ユーザーIDを取得
USER_ID=$(shishoctl organization users describe --org <ORGANIZATION_ID> --email <USER_EMAIL> --id)
# ロールを指定してユーザーをプロジェクトに追加
shishoctl project member add --org <ORGANIZATION_ID> --project <PROJECT_ID> --user <USER_ID> --role <ROLE>
新しいユーザーを招待する場合:
shishoctl project member invite --org <ORGANIZATION_ID> --project <PROJECT_ID> --email <USER_EMAIL> --role <ROLE>
利用可能なロール:
owner- プロジェクトのフルアクセス権限triager- 検知事項のトリアージが可能viewer- 読み取り専用
ワークフローの例:
# 既存ユーザーを検索
USER_EMAIL="alice@company.com"
USER_ID=$(shishoctl organization users describe --org org-a --email $USER_EMAIL --id)
if [ -z "$USER_ID" ]; then
echo "ユーザーが見つかりません。招待を送信します"
shishoctl project member invite --org org-a --project proj-123 --email $USER_EMAIL --role viewer
else
echo "既存ユーザーを追加します"
shishoctl project member add --org org-a --project proj-123 --user $USER_ID --role owner
fi
メンバーの一覧表示
以下のコマンドにより、すべてのプロジェクトメンバーを表示できます:
shishoctl project member list --org <ORGANIZATION_ID> --project <PROJECT_ID>
メンバーの削除
以下のコマンドにより、プロジェクトからユーザーを削除できます:
shishoctl project member remove --org <ORGANIZATION_ID> --project <PROJECT_ID> --user <USER_ID>
スコープ管理
以下のコマンドにより、プロジェクトスコープにリソースの一覧表示、追加、削除ができます:
スコープの一覧表示
shishoctl project scope list --org <ORGANIZATION_ID> --project <PROJECT_ID>
クラウドアカウントをスコープに追加
方法1: Shisho Cloud のリソース ID を指定する
# 利用可能なクラウドアカウントのリソース IDを取得
RESOURCE_ID=$(shishoctl cloud-account describe --org <ORGANIZATION_ID> --googlecloud-project-number <GOOGLECLOUD_PROJECT_NUMBER> --id)
# プロジェクトスコープに追加
shishoctl project scope add --org <ORGANIZATION_ID> --project <PROJECT_ID> --scope <RESOURCE_ID>
方法2: Google Cloud プロジェクト番号を指定する
shishoctl project scope add --org <ORGANIZATION_ID> --project <PROJECT_ID> --googlecloud-project-number <GOOGLECLOUD_PROJECT_NUMBER>
例:
# Google Cloud プロジェクト番号でスコープに追加
GOOGLECLOUD_PROJECT_NUMBER="514893259785"
shishoctl project scope add --org org-a --project proj-123 --googlecloud-project-number $GOOGLECLOUD_PROJECT_NUMBER
スコープから削除
shishoctl project scope remove --org <ORGANIZATION_ID> --project <PROJECT_ID> --scope <RESOURCE_ID>
通知管理
プロジェクトの通知は、メール、通知グループ、Slack、三つの方法で設定できます:
通知の一覧表示
shishoctl project notification list --org <ORGANIZATION_ID> --project <PROJECT_ID>
メール通知の設定
# メール通知を設定
shishoctl project notification set --org <ORGANIZATION_ID> --project <PROJECT_ID> --email <USER_EMAIL>
::: 通知設定に使用するメールアドレスは、組織の許可リストに登録されていることが必要です。 :::
通知グループの設定
# 利用可能な通知グループを一覧表示
shishoctl organization notification group list --org <ORGANIZATION_ID>
# 通知グループを設定
shishoctl project notification set --org <ORGANIZATION_ID> --project <PROJECT_ID> --notification-group <GROUP_ID>
Slack通知の設定
shishoctl project notification set --org <ORGANIZATION_ID> --project <PROJECT_ID> --slack-workspace-id <WORKSPACE_ID> --slack-channel-id <CHANNEL_ID>
利用したい Slack チャンネルは組織に統合されていることが必要です。
通知の削除
# プロジェクトの通知チャンネルIDを一覧表示
shishoctl project notification list --org <ORGANIZATION_ID> --project <PROJECT_ID>
# IDを確認した後、削除したい通知チャンネルを削除
shishoctl project notification delete --org <ORGANIZATION_ID> --project <PROJECT_ID> <CHANNEL_ID>
例:プロジェクト全体の設定
たとえば、以下は組織に新しいプロジェクトを作成したあと、メンバー、スコープ、通知をそれぞれ設定し、それらをまとめて表示する Shell スクリプトの例です。
#!/bin/bash
# 設定
ORGANIZATION_ID="org-a"
PROJECT_NAME="Production Security"
USER_EMAIL="security@company.com"
GOOGLECLOUD_PROJECT_NUMBER="514893259785"
# 認証
shishoctl auth signin
# プロジェクト作成
echo "プロジェクトを作成中: $PROJECT_NAME"
PROJECT_ID=$(shishoctl project create --org $ORGANIZATION_ID --name "$PROJECT_NAME" --quiet)
echo "作成されたプロジェクト: $PROJECT_ID"
# ユーザーをオーナーとして追加
echo "ユーザーをプロジェクトオーナーとして追加中"
USER_ID=$(shishoctl organization users describe --org $ORGANIZATION_ID --email $USER_EMAIL --id)
if [ -n "$USER_ID" ]; then
shishoctl project member add --org $ORGANIZATION_ID --project $PROJECT_ID --user $USER_ID --role owner
echo "ユーザー $USER_EMAIL をオーナーとして追加しました"
else
shishoctl project member invite --org $ORGANIZATION_ID --project $PROJECT_ID --email $USER_EMAIL --role owner
echo "ユーザー $USER_EMAIL をオーナーとして招待しました"
fi
# Google Cloud プロジェクトをスコープに追加
echo "Google Cloud プロジェクトをスコープに追加中"
shishoctl project scope add --org $ORGANIZATION_ID --project $PROJECT_ID --googlecloud-project-number $GOOGLECLOUD_PROJECT_NUMBER
# メール通知を設定
echo "メール通知を設定中"
shishoctl project notification set --org $ORGANIZATION_ID --project $PROJECT_ID --email $USER_EMAIL
# 設定を確認
echo "=== プロジェクト設定完了 ==="
echo "メンバー:"
shishoctl project member list --org $ORGANIZATION_ID --project $PROJECT_ID
echo "スコープ:"
shishoctl project scope list --org $ORGANIZATION_ID --project $PROJECT_ID
echo "通知:"
shishoctl project notification list --org $ORGANIZATION_ID --project $PROJECT_ID
よく使うコマンドオプション
ページネーションの使用
組織のプロジェクトは一覧コマンドで全部を見れない場合は、ページネーションを使用してください:
# すべてのプロジェクトを取得
PAGE=0
PER_PAGE=50
while true; do
PROJECTS=$(shishoctl project list --org $ORGANIZATION_ID --page $PAGE --per-page $PER_PAGE)
PROJECT_COUNT=$(echo "$PROJECTS" | jq 'length')
if [ "$PROJECT_COUNT" -eq 0 ]; then
break
fi
echo "ページ $PAGE の $PROJECT_COUNT プロジェクトを処理中"
# プロジェクトを処 理...
PAGE=$((PAGE + 1))
done
条件分岐での操作
変更を行う前に、プロジェクトの状態を確認してください:
# まだ存在しない場合のみスコープを追加
CURRENT_SCOPE=$(shishoctl project scope list --org $ORGANIZATION_ID --project $PROJECT_ID)
SCOPE_COUNT=$(echo "$CURRENT_SCOPE" | jq 'length')
if [ "$SCOPE_COUNT" -eq 0 ]; then
echo "空のスコープにクラウドアカウントを追加中"
shishoctl project scope add --org $ORGANIZATION_ID --project $PROJECT_ID --googlecloud-project-number $GOOGLECLOUD_PROJECT_NUMBER
else
echo "プロジェクトスコープは既に設定されています"
fi
コマンドヘルプ
プロジェクトコマンドのさらなる用法については 、--help オプションを通して確認してください:
shishoctl project --help
shishoctl project create --help
shishoctl project member --help
組織レベルの操作(ユーザー、チーム、通知グループ)については、以下のコマンドを通して確認してください:
shishoctl organization --help