如何在Azure中跟踪应用程序通过访问密钥的登录记录?
没问题,我来给你一步步说清楚怎么操作:
查看应用注册访问密钥登录记录的方法
在Azure门户中的查看路径
首先确认你已经拥有Azure Active Directory Premium 2订阅(这是查看详细登录日志的必要前提),然后按照以下步骤操作:
- 登录Azure门户,进入Active Directory服务
- 在左侧导航栏找到应用注册,点击进入后选择你要排查的指定应用
- 在该应用的左侧菜单中,找到监控分类下的登录日志选项
- 进入登录日志页面后,使用顶部的筛选器缩小范围:
- 在「应用」筛选器中选中你的目标应用
- 在「登录类型」筛选器中选择服务主体(因为使用访问密钥登录的是应用本身的服务主体身份,而非用户身份)
- 点击列表中的任意一条登录记录,就能查看详细信息,其中会包含登录是否使用客户端密钥、对应的密钥ID等关键内容
通过SDK/API获取登录记录
要通过代码获取这些登录记录,推荐使用Microsoft Graph API,这是Azure AD数据交互的官方标准接口:
核心API端点
使用GET请求访问:
GET https://graph.microsoft.com/v1.0/auditLogs/signIns
筛选条件
通过$filter参数精准定位目标应用的服务主体登录记录:
GET https://graph.microsoft.com/v1.0/auditLogs/signIns?$filter=appId eq '你的应用ID' and signInEventTypes/any(t:t eq 'servicePrincipal')
所需权限
调用此API需要申请以下权限之一(需管理员同意):
AuditLog.Read.All(推荐,细粒度权限)Directory.Read.All
SDK示例(以.NET SDK为例)
如果你使用Microsoft Graph .NET SDK,可以这样实现:
using Microsoft.Graph; using Azure.Identity; var graphClient = new GraphServiceClient(new ClientSecretCredential( "你的租户ID", "你的应用ID", "你的应用密钥")); var signInRecords = await graphClient.AuditLogs.SignIns .Request() .Filter("appId eq 'YOUR_TARGET_APP_ID' and signInEventTypes/any(t:t eq 'servicePrincipal')") .GetAsync(); // 遍历处理登录记录 foreach (var signIn in signInRecords) { Console.WriteLine($"登录时间: {signIn.CreatedDateTime}, 状态: {signIn.Status}"); }
注意:使用SDK时,需要先安装Microsoft.Graph和Azure.Identity NuGet包。
内容的提问来源于stack exchange,提问作者lorg
相关产品推荐
相关产品推荐

