你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 Python 的 Azure EASM 数据平面客户端库 - 版本 1.0.0b1

Microsoft Defender 外部攻击面管理 (Defender EASM) 不断发现和映射数字攻击面,以提供在线基础结构的外部视图。 这种可见性使安全和 IT 团队能够识别未知项、确定风险优先级、消除威胁,并将漏洞和公开控制扩展到防火墙之外。 Defender EASM 利用 Microsoft 的抓取技术发现与已知联机基础结构相关的资产,并主动扫描这些资产以不断发现新的连接。 攻击面见解是利用漏洞和基础结构数据生成的,以展示组织关注的关键领域。

源代码 | 包 (pypi) | Api 参考文档 | 产品文档

入门

安装包

pip

python -m pip install azure-defender-easm

从源

python setup.py intall

先决条件

  • 使用此包需要 Python 3.7 或更高版本。
  • 需要一个 Azure 订阅才能使用此包。
  • 现有的 EASM 数据平面客户端实例。

使用 Azure Active Directory 凭据创建

若要使用 Azure Active Directory (AAD) 令牌凭据,请提供从 azure 标识 库获取的所需凭据类型的实例。

若要使用 AAD 进行身份验证,必须先安装 pipazure-identity

设置后,可以从 azure.identity 中选择要使用的 凭据 类型。 例如, DefaultAzureCredential 可用于对客户端进行身份验证:

将 AAD 应用程序的客户端 ID、租户 ID 和客户端密码的值设置为环境变量: AZURE_CLIENT_IDAZURE_TENANT_IDAZURE_CLIENT_SECRET

使用返回的令牌凭据对客户端进行身份验证:

from azure.defender.easm import EasmClient
from azure.identity import DefaultAzureCredential

sub_id = '<your subscription ID here>'
workspace_name = '<your workspace name here>'
resource_group = '<your resource group here>'
region = '<your region here>'

endpoint = f'{region}.easm.defender.microsoft.com'

client = EasmClient(endpoint, resource_group, sub_id, workspace_name, credential=DefaultAzureCredential())

关键概念

基本了解这些术语将有助于开始使用 EASM 客户端库。

资产

Defender EASM 包括以下类型资产的发现:

  • 主机
  • IP 块
  • IP 地址
  • 自治系统编号 (ASN)
  • SSL 证书
  • WHOIS 联系人

这些资产类型包括 Defender EASM 中的攻击面清单。 此解决方案发现公开到传统防火墙保护外部开放 Internet 的资产;这些资产需要受到监视和维护,以最大程度地降低风险并改善组织的安全状况。 Microsoft Defender 外部攻击面管理 (Defender EASM) 主动发现和监视这些资产,然后提供关键见解,帮助客户有效地解决其组织中的任何漏洞。

发现

Microsoft Defender 外部攻击面管理 (Defender EASM) 依靠我们的专有发现技术,不断定义组织独特的 Internet 暴露攻击面。 发现技术会扫描组织拥有的已知资产,以发现以前未知和未监视的属性。 发现的资产在客户的清单中编制索引,通过单一虚拟管理平台提供组织所管理的 Web 应用程序、第三方依赖项和 Web 基础结构的动态记录系统。

发现组

自定义发现会整理到发现组中。 它们是独立的种子群集,由单个发现运行组成并按自己的定期计划运行。 用户可以选择整理其发现组,以对公司和工作流最有利的方式来划分资产。 常见选项包括按负责的团队/业务部门、品牌或子公司进行整理。

示例

按照“使用 Azure Active Directory 凭据创建”部分所示进行身份验证后,可以开始生成清单,如下所示:

创建发现组

from azure.defender.easm import EasmClient
from azure.identity import DefaultAzureCredential

sub_id = '<your subscription ID here>'
workspace_name = '<your workspace name here>'
resource_group = '<your resource group here>'
region = '<your region here>'

endpoint = f'{region}.easm.defender.microsoft.com'

client = EasmClient(endpoint, resource_group, sub_id, workspace_name, credential=DefaultAzureCredential())

client.discovery_groups.put("example group", {
	'seeds': [
	    {'kind': 'host', 'name': 'example.org'}
	]
})
client.discovery_groups.run("example group")

查看资产

from azure.defender.easm import EasmClient
from azure.identity import DefaultAzureCredential

sub_id = '<your subscription ID here>'
workspace_name = '<your workspace name here>'
resource_group = '<your resource group here>'
region = '<your region here>'

endpoint = f'{region}.easm.defender.microsoft.com'

client = EasmClient(endpoint, resource_group, sub_id, workspace_name, credential=DefaultAzureCredential())

for asset in client.assets.list():
	print(f'{asset.kind}: {asset.name}')

更多示例

可以在此存储库 的示例目录中 查看更多示例

故障排除

后续步骤

贡献

本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 https://cla.microsoft.com

提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。

本项目采用 Microsoft 开源行为准则。 有关详细信息,请参阅“行为准则常见问题解答”,如有其他任何问题或意见,请联系 opencode@microsoft.com。