Azure 攻防安全工具包
一套用于 Azure 安全评估的 Bash 和 PowerShell 脚本合集,涵盖 IAM 权限提升、容器安全、Key Vault 暴露面、Entra ID 配置等。设计用于在 Azure Cloud Shell 或任何已认证的终端中运行。
脚本
IAM / 身份
| 脚本 | Shell | 描述 |
|---|
IAMPrivz.sh | Bash | 审计整个租户中所有 RBAC 角色定义和分配,查找危险的权限提升权限:roleAssignments/write、roleDefinitions/write 和 federatedIdentityCredentials/write。解析每个被标记分配的主体身份(用户、服务主体、组)。输出 JSON 和文本报告。 |
EntraUserSettings.sh | Bash | 通过 Microsoft Graph 报告 Entra ID 租户级用户设置 — 应用注册权限、租户创建、安全组创建、来宾访问限制级别和管理中心限制。 |
EntraUserSettings.ps1 | PowerShell | EntraUserSettings.sh 的 PowerShell 等效版本。 |
GlobalAdmins.sh | Bash | 提取全局管理员目录角色的所有成员。收集显示名称、UPN、对象类型、账户状态和对象 ID。如果该角色尚未在目录中激活,则将其激活。输出格式化表格 + 带时间戳的 CSV。 |
GlobalAdmin.ps1 | PowerShell | GlobalAdmins.sh 的 PowerShell 等效版本。 |
GuestInvite.sh | Bash | 审计来宾邀请策略和外部协作设置 — 谁可以邀请来宾、来宾访问限制级别、基于电子邮件的注册权限。标记高风险配置(例如“所有人都可以邀请”)。输出带时间戳的报告。 |
GuestInvite.ps1 | PowerShell | GuestInvite.sh 的 PowerShell 等效版本。 |
JoinableGroups.sh | Bash | 发现可公开加入的 Entra ID 组(公共可见性、非动态成员资格)。收集元数据、成员数量和已分配目录角色。提供交互式菜单以选择和加入组。输出 CSV。 |
JoinableGroups.ps1 | PowerShell | JoinableGroups.sh 的 PowerShell 等效版本。 |
容器安全
Key Vault
自动化
| 脚本 | Shell | 描述 |
|---|
RunbookGrabz.sh | Bash | 对所有订阅中的所有 Azure 自动化账户进行全面审计。提取 runbook 源代码、webhook 配置、计划、作业历史(过去 30 天)和混合辅助角色详细信息。输出分层目录结构,包含每个账户的详细信息文件和专用 runbook 内容文件夹。 |
RunbookGrabz.ps1 | PowerShell | RunbookGrabz.sh 的 PowerShell 等效版本。 |
SQL
| 脚本 | Shell | 描述 |
|---|
SQLAuditing.sh | Bash | 检查所有订阅中所有 Azure SQL 服务器和数据库的审计状态。检查 blob、Log Analytics 和事件中心目标。智能逻辑:当服务器级审计已启用时,跳过数据库级检查。标记未覆盖的数据库。输出 CSV。 |
SQLAuditing.ps1 | PowerShell | SQLAuditing.sh 的 PowerShell 等效版本。 |
先决条件
- Azure CLI(
az login)或 Azure Cloud Shell 会话
jq — 所有 Bash 脚本的必需依赖
- Az PowerShell 模块 —
.ps1 脚本的必需依赖(Az.Accounts、Az.KeyVault、Az.Sql 等)
- 对所审计资源具有适当的读取权限(至少为 Reader;某些脚本如
Conreg.sh 会测试写入操作)
用法
# 从 Azure Cloud Shell 或任何已认证的终端运行
az login
# IAM 权限提升审计
bash Cloudshell/IAMPrivz.sh
# 容器注册表权限检查(含实时测试)
bash Cloudshell/Conreg.sh
# Key Vault 访问测试(所有订阅)
bash Cloudshell/KV-Access.sh -a
# Key Vault 公网暴露面审计
bash Cloudshell/KV-PublicAccess.sh
# PowerShell 等效版本
pwsh Cloudshell/KV-Access.ps1 -All
pwsh Cloudshell/ContainerPermz.ps1
文件结构
Azure/
├── README.md
└── Cloudshell/
├── IAMPrivz.sh
├── Conreg.sh
├── ContainerPermz.sh
├── ContainerPermz.ps1
├── EntraUserSettings.sh
├── EntraUserSettings.ps1
├── GlobalAdmins.sh
├── GlobalAdmin.ps1
├── GuestInvite.sh
├── GuestInvite.ps1
├── JoinableGroups.sh
├── JoinableGroups.ps1
├── KV-Access.sh
├── KV-Access.ps1
├── KV-PublicAccess.sh
├── KV-PublicAccess.ps1
├── RunbookGrabz.sh
├── RunbookGrabz.ps1
├── SQLAuditing.sh
└── SQLAuditing.ps1
免责声明
这些工具仅用于经授权的安全评估和教育目的。在对任何 Azure 环境运行这些脚本之前,请务必获得适当的授权。