如何通过API将Microsoft Defender安全分数连接到Power BI?
解决方案建议
1. 通过Microsoft Graph API获取安全分数数据
你需要调用Graph API的secureScores及关联端点来获取所需数据,步骤如下:
- 先在Azure AD注册应用,申请
SecurityScore.Read.All和SecurityEvents.Read.All权限(需管理员同意) - 在Power BI中通过自定义Power Query调用API:
- 打开Power BI,选择获取数据>空查询
- 进入高级编辑器,替换为以下代码(自行替换租户ID、客户端ID、客户端密钥):
let TenantID = "你的租户ID", ClientID = "你的客户端ID", ClientSecret = "你的客户端密钥", TokenUrl = "https://login.microsoftonline.com/" & TenantID & "/oauth2/v2.0/token", TokenBody = "grant_type=client_credentials&client_id=" & ClientID & "&client_secret=" & ClientSecret & "&scope=https://graph.microsoft.com/.default", TokenResponse = Json.Document(Web.Contents(TokenUrl, [Content=Text.ToBinary(TokenBody), Headers=[#"Content-Type"="application/x-www-form-urlencoded"]])), AccessToken = TokenResponse[access_token], GraphUrl = "https://graph.microsoft.com/v1.0/security/secureScores", GraphResponse = Json.Document(Web.Contents(GraphUrl, [Headers=[#"Authorization"="Bearer " & AccessToken]])), Results = GraphResponse[value] in Results - 加载数据后,可从返回结果中提取整体安全分数,以及Identity、Data、Device、Application四类细分分数
- 若需更详细的分类分数,可调用
https://graph.microsoft.com/v1.0/security/secureScores/{id}/controlProfiles端点
2. 简化Power Query与Graph的连接
如果不想手动编写代码,可尝试两种简化方式:
- 使用Power Query的从Web功能,直接输入Graph API端点,在身份验证环节选择
OAuth2,按提示完成授权(需拥有对应权限) - 部分区域可直接使用Power BI的Microsoft Graph内容包,快速获取安全相关数据
3. 验证API有效性
先在Graph Explorer中测试secureScores端点,确认能返回所需数据后再移植到Power BI;确保使用v1.0版本的API(beta版本稳定性不足),且应用权限已完成管理员同意
内容的提问来源于stack exchange,提问作者yefsor
相关产品推荐
相关产品推荐

