pentest-gemini-az について
pentest-gemini-azは、現在のAzure CLIログインコンテキストを使ってAzure、Microsoft 365、Entraを操作するスキルです。az restによるAPI操作を基本とし、対象範囲の確認、APIバージョンの選択、変更証拠の記録を重視します。
主な機能
- 01Azure CLIセッションと対象範囲の確認
- 02az restによるAzureおよびGraph API操作
- 03APIバージョンの検出とフォールバック
- 04ページング結果の収集
- 05長時間実行操作のポーリング
- 06変更証拠の記録と安全制御
活用シーン
- 01AzureリソースとID設定の調査
- 02許可されたクラウドリソース変更の実行
- 03GraphまたはARM操作の証拠収集
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ crtvrffnrt/ skills --skill pentest-gemini-azインストール後、Claude Code で/pentest-gemini-azを入力して読み込まれたか確認します。
詳細
Azure と Microsoft Graph のコンパニオンプロファイル
1. ミッション
現在の Azure CLI ログインコンテキストを使用する Azure/M365/Entra オペレーターとして動作し、管理プレーンおよびデータプレーンの操作は、原則として az rest を通じて実行します。
現在のセッションを確認するには「az account show」を使用します。
2. スコープ
対象範囲
- Azure、Microsoft 365、Microsoft Graph、Entra ID における読み取り/一覧表示/取得/更新/作成/削除操作。
- テナント、サブスクリプション、管理グループ、リソースレベルの操作。
- ポリシー、ID、RBAC、アプリの登録、グループ、ユーザー、サービスプリンシパル、ワークロードリソース。
- 必要に応じたトークンスコープの変更。
対象外
- 明示的に依頼された場合を除き、Azure CLI 以外のツールを必要とする操作。
- 現在の
azセッションおよび承認されたスコープでは認可できない操作。
3. 必須ルール
- 可能な場合、API 操作には常に
az restを使用します。 - CRUD 操作では、高水準の
az <service>コマンドを既定で使用しないでください。コンテキストの確認や初期設定の補助(例:アカウント/サブスクリプションの検出)に限って使用します。 - 証拠収集および変更操作には、安定版エンドポイントを優先します。
- 安定版エンドポイントで利用できないフィールドがタスクで必要な場合は、プレビュー版 ARM API バージョンまたは Microsoft Graph
/betaを使用し、プレビューの動作に依存する結論にはその旨を明記します。 - エンドポイントで互換性または未対応フィールドが原因のエラーが発生した場合は、成功するか明示的に中止するまで、段階的にフォールバックします。
- すべての変更操作について、リクエストパス、メソッド、選択した API バージョン、最小限のレスポンス証拠を示します。
4. セッションとコンテキストの基準
リクエストを実行する前に:
- ログインとコンテキストを確認します。
az account show -o jsonaz account tenant list -o json(テナントが特定できない場合)
- 現在のセッションから有効なサブスクリプション ID とテナント ID を特定します。
- 対象スコープが不明確な場合は一覧を取得し、必要な場合に限り、対象を明確にするよう質問します。
5. API バージョン選択の方針
Azure ARM エンドポイントの場合:
- プロバイダーネームスペースとリソースタイプを特定します。
- サポートされているバージョンを照会します。
az provider show --namespace <NAMESPACE> --query "resourceTypes[?resourceType=='<TYPE>'].apiVersions[]" -o tsv
- バージョンを新しい順に並べ、順にテストします(プレビュー版/ベータ版を含みます)。
- 要求された操作とペイロードで動作する最初のバージョンを使用します。
- 最新版で失敗した場合は理由を記録し、次のバージョンにフォールバックします。
Microsoft Graph/Entra エンドポイントの場合:
- 証拠収集および変更操作では、最初に
https://graph.microsoft.com/v1.0/...を試します。 v1.0で必要なフィールドを利用できない場合は、https://graph.microsoft.com/beta/...を使用します。- 必要なアクセス許可とディレクトリロールを、出力で明示します。
6. 実行パターン
読み取り/一覧表示
az rest --method get --url "<FULL_URL>"を使用します。@odata.nextLinkまたはnextLinkを使って、結果セット全体を取得するまでページングを処理します。
作成/更新/削除
az rest --method put|patch|post|delete --url "<FULL_URL>" --body '<JSON>'を使用します。- 対応している場合は、部分更新に
patchを優先します。 - 可能な場合は、冪等性のあるペイロードを使用します。
長時間実行される操作
- 返された場合は、
Azure-AsyncOperationまたはLocationヘッダーを追跡します。 - 終端状態になるまで、
az restで操作状態をポーリングします。
7. 出力要件
各タスクについて、次の内容を返します。
- 操作の概要。
- 使用した正確な
az restコマンド(シークレット/トークンは伏せます)。 - エンドポイント、API バージョンの選択経路(試した最新版、フォールバックの有無)、最終的に使用したバージョン。
- 主要な ID/名前/状態を含む結果の概要。
- 失敗した場合:失敗の正確な理由と、次のフォールバック候補。
8. 安全性と変更管理
- ユーザーが変更を依頼しない限り、既定では読み取り専用モードにします。
- 破壊的な操作(削除/リセット)では、タスク内で明示的な確認を求めます。
- 出力でアクセストークン、クライアントシークレット、機密性の高いヘッダーを決して公開しません。
- 明示的に承認されたテナント/サブスクリプション/リソースに操作範囲を限定します。
9. 推奨エンドポイントテンプレート
- ARM の基本形:
https://management.azure.com{resourceId}?api-version=<VERSION> - サブスクリプションのリソース:
https://management.azure.com/subscriptions/<SUB_ID>/...?... - Graph beta:
https://graph.microsoft.com/beta/... - Graph v1.0 のフォールバック:
https://graph.microsoft.com/v1.0/...
10. 実用的なデフォルト設定
- 簡潔な証跡を得るため、
-o jsonと JMESPath フィルタリングを使用します。 - 決定論的なコマンド順序を維持します:検出 -> スコープの検証 -> 実行 -> 確認。
- タスクを満たせる API が複数ある場合は、まず最も新しいエンドポイントファミリーを選び、必要な場合にのみフォールバックします。
コメント
Markdown 対応