mcpField
A
alibabacloud-sas-multiaccount-manage

alibabacloud-sas-multiaccount-manage

github.com/aliyunセキュリティ281112 回インストール1 日前に更新
リポジトリ

alibabacloud-sas-multiaccount-manage について

aliyun CLI と Python スクリプトで Alibaba Cloud のリソースディレクトリ内のアカウントを管理し、Security Center のレポートを一括出力するスキルです。有効なアカウントのベースラインと脆弱性の結果を Excel にまとめます。

主な機能

  1. 01アカウント一覧の更新と検索
  2. 02出力対象アカウントの有効化・無効化
  3. 03ベースラインレポートの一括出力
  4. 044 種類の脆弱性レポートの出力
  5. 05複数アカウントの結果を Excel に統合

活用シーン

  1. 01複数アカウントの CSPM 結果を集約
  2. 02複数アカウントのシステムベースラインリスクを確認
  3. 03複数アカウントの脆弱性レポートを統合

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-sas-multiaccount-manage

インストール後、Claude Code で/alibabacloud-sas-multiaccount-manageを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
ram-policies.md
scripts/
accounts.py
baseline.py
merge.py
pyproject.toml
requirements.txt
vuln.py

詳細

Alibaba Cloud Security Center のマルチアカウント管理とベースラインレポートのエクスポート

aliyun CLI と Python スクリプトを使用して、リソースディレクトリ内の複数の Alibaba Cloud アカウントを管理し、各アカウントの Security Center ベースラインレポートを一括エクスポートします。

前提条件と環境設定

1. Alibaba Cloud CLI のインストール
# macOS
brew install aliyun-cli

# Or download from GitHub: https://github.com/aliyun/aliyun-cli/releases

認証情報を確認します。

aliyun sts get-caller-identity

呼び出しに失敗した場合は、aliyun configure を実行して認証情報を設定するようユーザーに案内してください(ユーザーが完了する必要のある対話型の手順です)。

1.1 AI モードとプラグインモードの設定(必須)

このスキルでは、aliyun CLI のプラグインモードコマンド(kebab-case)と固定の User-Agent 宣言が必要です。

# Keep plugins up to date
aliyun plugin update

# Install required product plugins if missing
aliyun plugin install --names aliyun-cli-sts,aliyun-cli-sas

# Enable AI mode and set required UA segment
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent AlibabaCloud-Agent-Skills

# Optional checks / rollback
aliyun configure ai-mode show
aliyun configure ai-mode disable
2. Python ≥ 3.6 のインストール
# Check version
python3 --version  # Requires 3.6+, 3.9+ recommended
3. 仮想環境の作成と依存関係のインストール

pyproject.toml で宣言されている依存関係をインストールするため、<skill-path>/scripts/ に仮想環境を作成します。

cd scripts/

# Option A: use venv
python3 -m venv .venv
.venv/bin/pip install -e .

# Option B: use uv (optional)
uv sync

# Option C: if current Python version is unsupported, install as system dependencies
pip install -r requirements.txt
4. コマンドの実行

すべてのスクリプトは、仮想環境(venv、uv、conda などで作成したもの)に含まれる Python で実行する必要があります。このドキュメントでは例として .venv/bin/python を使用しています。実際の仮想環境のパスに置き換えてください。


作業ディレクトリ

accounts.json とエクスポートした Excel ファイルは、エージェントの現在の作業ディレクトリ(コマンドを実行するディレクトリ)に保存されます。スクリプトファイル自体は <skill-path>/scripts/ にあります。コマンドの実行時に scripts ディレクトリへ移動しないでください。移動すると、accounts.json の保存場所が予期せず変わることがあります。

# Example: run from any directory
.venv/bin/python /path/to/scripts/accounts.py refresh

機能 1:アカウント管理(accounts.py)

ワークフロー
  1. 初回使用時:refresh を実行して、リソースディレクトリからアカウント一覧を取得します。
  2. 必要に応じて絞り込み:search を使用して対象アカウントを検索し、AccountId を取得します。
  3. 有効化/無効化の設定:enable/disable を使用して、一括エクスポートの対象にするアカウントを選択します。
クイックスタート
アカウント一覧の更新

Alibaba Cloud のリソースディレクトリから最新のアカウント一覧を取得し、accounts.json に書き込みます。既存の enable 状態は保持され、新しいアカウントはデフォルトで有効になります。

.venv/bin/python accounts.py refresh
すべてのアカウントを一覧表示
.venv/bin/python accounts.py list

出力例:

1225574417218097    cwx                     [enabled]
1234567890123456    prod-account            [disabled]
アカウントを検索

DisplayName であいまい検索し、AccountId と有効状態を返します。

.venv/bin/python accounts.py search cwx
.venv/bin/python accounts.py search prod
アカウントの有効化/無効化

後続の一括エクスポートにアカウントを含めるかどうかを設定します。

.venv/bin/python accounts.py enable 1225574417218097
.venv/bin/python accounts.py disable 1234567890123456
accounts.json の構造
[
  {
    "AccountId": "1225574417218097",
    "DisplayName": "cwx",
    "FolderId": "r-1Q4pqB",
    "IsMaAccount": "NO",
    "SasVersion": "0",
    "enable": true
  }
]

機能 2:ベースラインの一括エクスポート(baseline.py)

enable=true のすべてのアカウントに対して、エクスポートタスクを同時に開始します。完了をポーリングで確認した後、ファイルをダウンロードして展開し、1 つの Excel ファイルに統合します。

ワークフロー
  1. 同時送信:有効なすべてのアカウントに export-record リクエストを送信します(QPS ≤ 5)。
  2. 同時ポーリング:エクスポートが完了するまで、各アカウントの describe-export-info をポーリングします。
  3. ダウンロードと展開:zip をダウンロードして xlsx を展開します。
  4. 出力の統合:merge.py を使用してすべてのアカウントの xlsx ファイルを 1 つのファイルに統合し、「Resource Directory Account」列を追加します。
  5. 一時ファイルの削除:統合後、アカウントごとの一時 xlsx ファイルを削除します。
前提条件
  • accounts.py refresh を実行し、アカウントの有効化/無効化の設定が完了していること。
  • aliyun CLI に有効な認証情報が設定され、SAS の export-record および describe-export-info の権限があること。
  • アカウントで Security Center を購入していること(無料版のアカウントは自動的にスキップされます)。
クラウドプラットフォーム設定チェック結果(CSPM)のエクスポート

有効なすべてのアカウントの baselineCspm の結果をエクスポートし、baseline-cspm-merged-{date}.xlsx に統合します。

# Export for all enabled accounts
.venv/bin/python baseline.py export-cspm

# Export for one specific account
.venv/bin/python baseline.py export-cspm --account-id 1225574417218097
システムベースラインのリスク一覧のエクスポート

有効なすべてのアカウントについて、exportHcWarning のリスク一覧(高/中/低、すべてのステータス)をエクスポートし、system-warning-merged-{date}.xlsx に統合します。

# Export for all enabled accounts
.venv/bin/python baseline.py export-system-warning

# Export for one specific account
.venv/bin/python baseline.py export-system-warning --account-id 1225574417218097
出力ファイル
ファイル説明
baseline-cspm-merged-{date}.xlsxクラウドプラットフォームの設定チェック結果を統合したものです。「リソースディレクトリアカウント」列を含みます
system-warning-merged-{date}.xlsxシステムベースラインのリスク一覧を統合したものです。「リソースディレクトリアカウント」列を含みます
エラー処理
シナリオ動作
FreeVersionNotPermitこのアカウントを通知なしでスキップし、ほかのアカウントの処理を続行します
NoPermission / Forbiddenこのアカウントを通知なしでスキップします
エクスポート失敗(サーバー側エラー)[failed] メッセージを出力し、ほかのアカウントの処理を続行します
すべてのアカウントをスキップメッセージを出力して、出力ファイルを作成せずに終了します

機能 3:脆弱性の一括エクスポート(vuln.py)

enable=true のすべてのアカウントに対して、脆弱性エクスポートタスクを並行して起動します。4 種類の脆弱性に対応しています。完了をポーリングした後、ファイルを自動でダウンロード、展開、統合します。

ワークフロー
  1. 並行送信:有効なすべてのアカウントに対して export-vul --force リクエストを送信します(QPS ≤ 5)。
  2. 並行ポーリング:エクスポートが完了するまで、各アカウントに対して describe-vul-export-info --force をポーリングします。
  3. ダウンロードと展開:zip をダウンロードして xlsx を展開します。
  4. 出力の統合:merge.py を使用して、すべてのアカウントの xlsx ファイルを 1 つのファイルに統合し、「リソースディレクトリアカウント」列を追加します。
  5. 一時ファイルのクリーンアップ:統合後、アカウントごとの一時 xlsx ファイルを削除します。

現在のアカウントが呼び出し元のプライマリアカウントと同じ場合、--ResourceDirectoryAccountId は自動的に省略されます。

前提条件
  • accounts.py refresh を実行し、アカウントの有効/無効設定が完了していること。
  • aliyun CLI に有効な認証情報が設定され、SAS の export-vul および describe-vul-export-info 権限があること。
  • アカウントで Security Center を購入していること(無料版のアカウントは自動的にスキップされます)。
Linux ソフトウェアの脆弱性(CVE)をエクスポート

有効なすべてのアカウントについて、未解決の Linux ソフトウェア脆弱性(優先度:高/中/低)をエクスポートし、vul-cve-merged-{date}.xlsx に統合します。

# Export for all enabled accounts
.venv/bin/python vuln.py export-cve

# Export for one specific account
.venv/bin/python vuln.py export-cve --account-id 1225574417218097
Windows システムの脆弱性をエクスポート

有効なすべてのアカウントについて、未解決の Windows システム脆弱性(優先度:高/中/低)をエクスポートし、vul-sys-merged-{date}.xlsx に統合します。

.venv/bin/python vuln.py export-sys
.venv/bin/python vuln.py export-sys --account-id 1225574417218097
アプリケーションの脆弱性(SCA を含む)をエクスポート

有効なすべてのアカウントについて、未解決のアプリケーション脆弱性(ECS + コンテナ、ソフトウェア構成分析を含む)をエクスポートし、vul-app-merged-{date}.xlsx に統合します。

.venv/bin/python vuln.py export-app
.venv/bin/python vuln.py export-app --account-id 1225574417218097
緊急の脆弱性をエクスポート

有効なすべてのアカウントについて、緊急の脆弱性(リスク状態)をエクスポートし、vul-emg-merged-{date}.xlsx に統合します。

.venv/bin/python vuln.py export-emg
.venv/bin/python vuln.py export-emg --account-id 1225574417218097
出力ファイル
ファイル説明
vul-cve-merged-{date}.xlsxLinux ソフトウェア脆弱性一覧を統合したものです。「リソースディレクトリアカウント」列を含みます
vul-sys-merged-{date}.xlsxWindows システム脆弱性一覧を統合したものです。「リソースディレクトリアカウント」列を含みます
vul-app-merged-{date}.xlsxアプリケーション脆弱性一覧(SCA を含む)を統合したものです。「リソースディレクトリアカウント」列を含みます
vul-emg-merged-{date}.xlsx緊急の脆弱性一覧を統合したものです。「リソースディレクトリアカウント」列を含みます
エクスポートパラメーターの詳細
種類export-vul パラメーター
export-cve--Type cve --Necessity asap,later,nntf --Dealed n
export-sys--Type sys --Necessity asap,later,nntf --Dealed n
export-app--Type app --Necessity asap,later,nntf --AttachTypes sca --AssetType ECS,CONTAINER --Dealed n
export-emg--Type emg --RiskStatus y --Dealed n
エラー処理
シナリオ動作
FreeVersionNotPermitこのアカウントを通知なくスキップし、ほかのアカウントの処理を続けます
NoPermission / Forbiddenこのアカウントを通知なくスキップします
エクスポート失敗(サーバー側エラー)[failed] メッセージを出力し、ほかのアカウントの処理を続けます
すべてのアカウントをスキップメッセージを出力し、出力ファイルを作成せずに終了します

注意事項

  • スクリプトは仮想環境で実行する必要があります。例では .venv/bin/python を使用しています。実際の仮想環境のパスに置き換えてください。
  • aliyun configure で aliyun CLI の認証情報を管理してください。AK/SK をハードコードしないでください。
  • SAS API がサポートするエンドポイントは 2 つのみです。cn-shanghai(中国本土)と ap-southeast-1(中国本土以外)です。

コメント