一个 Azure CLI 扩展,用于被动收集 Azure 资源数据到与 Cirro (https://github.com/bishopfox/cirro) 架构兼容的 SQLite 数据库中。它还会将所有 CLI 调用记录到一个 JSON-lines 文件中。
挂接到 knack 事件:
EVENT_INVOKER_POST_PARSE_ARGS — 记录命令参数EVENT_INVOKER_FILTER_RESULT — 将资源数据写入 SQLiteaz extension add --source dist/cirro_azcli_ext-*.whl
az config set core.use_command_index=false
Azure CLI 会按命令索引延迟加载扩展。禁用它可确保此 扩展会为所有命令加载,从而可以观察每次调用。
当任何 az 命令从远程 Azure 端点(ARM、Graph、Key Vault 等)返回数据时,该扩展会对每个结果项进行分类,并将其写入相应的 SQLite 表:
仅限本地的命令(version、extension、config 等)会被跳过。
CREATE TABLE resources (
id TEXT PRIMARY KEY, sub_id TEXT, rg_id TEXT, resource_type TEXT, data TEXT
);
CREATE TABLE keyVaultItems (
id TEXT PRIMARY KEY, item_type TEXT, data TEXT
);
id TEXT PRIMARY KEY, data TEXT)applications · administrativeUnits · conditionalAccessPolicies · devices · directoryRoles · eligibleArmRBAC · eligibleRoleAssignments · groups · managementGroupEntities · namedLocations · organization · oauth2PermissionGrants · policies · roleAssignments · servicePrincipals · subscriptions · tenants · users
| 配置键 | 默认值 | 说明 |
|---|---|---|
cirro.log_path | ~/.azure/cli_args.log | 参数日志文件路径 |
cirro.db_path | ~/.azure/cirro_collect.db | SQLite 数据库路径 |
az config set cirro.db_path=/var/data/cirro_collect.db
az cirro status # show log stats and per-table row counts
az cirro status --tail 5 # show last 5 argument log entries
| 分类信号 | 示例 | 目标表 |
|---|
结果项上的 @odata.type | #microsoft.graph.user | users |
| ARM 资源 ID 模式 | /subscriptions/x/providers/… | resources |
| CLI 命令前缀 | ad user list | users |