首页 > 系统相关 >【Powershell】超越限制:获取Azure AD登录日志

【Powershell】超越限制:获取Azure AD登录日志

时间:2024-07-17 17:26:08浏览次数:15  
标签:AD 登录 Powershell API Azure 日志 Microsoft

你是否正在寻找一种方法来追踪 Azure Active Directory(Azure AD)中用户的登录活动?
如果是的话,查看Azure AD用户登录日志最简单的方法是使用Microsoft Entra管理中心。打开 https://entra.microsoft.com/,然后进入 监视和健康状况 -> 登录日志 这里查看到的是全部用户的登录日志
在这里插入图片描述
或者选择一个用户 -> 登录日志。这里查看到的是单个用户的登录日志
在这里插入图片描述尽管通过Microsoft Entra管理中心查询登录日志通常受限于最近30天的数据访问,但我们可以通过定期执行 PowerShell 脚本来导出 Azure AD 的登录日志。这样,我们可以将这些日志数据保存到其他存储解决方案中,确保这些信息能够被长期保留并用于未来的分析和审查。

通过 Microsoft Graph API 和 PowerShell 获取 Azure AD 登录日志

一、注册 Microsoft Graph 应用程序

首先,你需要在 Azure AD 中注册一个应用程序,以便它能够访问 Azure 租户中的资源。

  1. 登录到Microsoft Entra管理中心:https://entra.microsoft.com/

  2. 转到 “应用程序” -> “应用注册” -> “新注册”。
    在这里插入图片描述

  3. 输入应用程序名称,选择 “仅此组织目录(仅 ********公司 - 单一租户)中的帐户” 并注册。
    在这里插入图片描述

  4. 进入到上一步新注册的应用中选择"API权限"
    在这里插入图片描述

  5. 在"API权限"部分,添加所需的权限,如下图 “AuditLog.Read.All” 和 “Directory.Read.All”。
    在这里插入图片描述

  6. 点击 “代表 ********公司 授子管理员同意” 以授予管理员同意。
    在这里插入图片描述

  7. 在"证书和密码"下面添加"客户端密码"*只有添加是可以看到值,务必记录,否则重新添加
    在这里插入图片描述

  8. 同时在"概述"中可以找到应用ID和租户ID
    在这里插入图片描述

二、获取认证令牌

使用以下 PowerShell 脚本来获取 Microsoft Graph API 的访问令牌:

$ApplicationID = "你的应用ID"
$TenatDomainName = "你的租户ID"
$AccessSecret = "应用密钥"

$Body = @{
    Grant_Type = "client_credentials"
    Scope = "https://graph.microsoft.com/.default"
    client_Id = $ApplicationID
    Client_Secret = $AccessSecret
}

$ConnectGraph = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenatDomainName/oauth2/v2.0/token" -Method POST -Body $Body
$token = $ConnectGraph.access_token

三、使用 Microsoft Graph API 获取登录日志

使用获取到的令牌,你可以查询 Azure AD 中的登录日志。

$GraphSignInLogs = "https://graph.microsoft.com/v1.0/auditLogs/signIns"
$result = (Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GraphSignInLogs -Method Get).value

处理分页

由于 Microsoft Graph API 每次最多返回 1000 个对象,你可能需要处理分页。检查响应中的 @odata.nextLink 属性,并使用它来获取后续的数据页。

筛选特定用户过去一周的登录日志

如果你只对特定的用户过去一周的登录感兴趣,比如 [email protected],你可以添加一个筛选条件:

$SetDate = (Get-Date).AddDays(-7)
$SetDate = Get-Date($SetDate) -format yyyy-MM-dd
$FilteredResults = $result | Where-Object {
    $_.userPrincipalName.EndsWith('[email protected]') -and $_.createdDateTime -gt $SetDate
}

导出登录日志

最后,你可以将查询结果导出到 CSV 文件:

$FilteredResults | Export-Csv "C:\PS\azure_ad_signin_logs.csv" -NoTypeInformation

智慧的数据管理,安全的业务保障

现在已经基本掌握了如何利用 Microsoft Graph API 和 PowerShell 高效地获取 Azure AD 登录日志的技能。在信息安全日益成为企业核心关切的今天,能够准确掌握用户登录活动,不仅有助于维护系统安全,更是对企业数据资产负责的体现。通过定期审查和分析登录日志,您将能够及时发现潜在的安全威胁,采取预防措施,从而保护组织免受未授权访问的风险。

标签:AD,登录,Powershell,API,Azure,日志,Microsoft
From: https://blog.csdn.net/u012153104/article/details/140496414

相关文章

  • Javascript: Blob, File/FileReader, ArrayBuffer, ReadableStream, Response 转换方
    目录先上图各个ObjectArrayBuffer:Blob:File:FileReader:ReadableStream:Response用法举例ArrayBufferBlob,File,FileReaderReadableStream关于ReadableStream的一点总结Response构造函数Parametersblob()先上图各个ObjectArrayBuffer:1.ArrayBuffer是JavaScript......
  • datax rdbmsreader
    See:DataX/rdbmsreader/doc/rdbmsreader.mdatmaster·alibaba/DataXSeealso:ConfiguringImpalatoWorkwithJDBC1快速介绍RDBMSReader插件实现了从RDBMS读取数据。在底层实现上,RDBMSReader通过JDBC连接远程RDBMS数据库,并执行相应的sql语句将数据从RDBMS库中SEL......
  • python gradio 页面控件
    1、textbox的使用importgradioasgrimportrequestsdefmobile(mobilephone):url='https://api.oioweb.cn/api/common/teladress?mobile='+str(mobilephone)headers={}payload={}response=requests.request("GET",url,......
  • Java开发手册中-避免Random实例被多线程使用、多线程下Random与ThreadLoacalRandom性
    场景Java中使用JMH(JavaMicrobenchmarkHarness微基准测试框架)进行性能测试和优化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131723751参考以上性能测试工具的使用。Java开发手册中有这样一条:【推荐】避免Random实例被多线程使用,虽然共享该实例是线程......
  • 亚马逊、Shopee、Lazada等跨境电商平台怎么测评?
    在跨境电商的激烈竞争中,产品的评价是连接潜在买家与卖家的桥梁,其重要性不言而喻,它不仅直接影响平台对卖家店铺的评估,还深刻影响着产品页面的曝光率、流量以及最终的销量,所以如何高效、安全地获取高质量的评价,成为了每位跨境电商卖家必须面对的问题测评市场的现状与挑战当前,......
  • F. Vitaly and Advanced Useless Algorithms
    原题链接题解,没有思路的时候先想想暴力1.观察观察再观察,对于每个计划而言,所完成的任务是唯一的,所以要完成任务\(c\),相当于在能完成\(c\)的计划集合里,选择若干个计划,使得其总耗时最小,且完成的超过1002.这种包含两种属性限制的集合选择,不难想到背包,即相同耗时,记录完成度高的,......
  • SD画全身图总是人脸扭曲?ADetailer实现一键解决!
    目录一、ADetailer的安装二、脸部修复方法1、局部重绘(inpaint)2、ADetailer三、ADetailer和facerestoration(脸部修复)的区别四、何时使用ADetailer?你是否遇到过SD生成的人物脸部扭曲、甚至令人恶心的情况?也曾感到束手无策?别担心,这份教程专为你而来。在使用SD生成人......
  • Gradle更换阿里云镜像源
    1、下载Gradle官网:https://gradle.org/releases/2、配置Gradle环境变量3、更换镜像源gradle安装目录下找到init.d文件夹 再该文件夹中创建init.gradle文件,编写一下脚本替换阿里云镜像//阿里云仓库和源仓库地址对比:https://developer.aliyun.com/mvn/guidegradle.proje......
  • C# 使用 DbDataReader 来访问数据库
    C#使用SqlDataAdapter和DataSet来访问数据库实体namespaceVipSoft.Entity{[Table(Name="PH_Prescription")]publicclassPrescription:Web.Core.Orm.Entity{[Column(Name="ID")]publicStringId{get;set;}......
  • make sadservers happy again
    背景从阮一峰老师的博客了解到sadserver这样一个可以提供linux服务器,并尝试解决系统和服务相关问题的在线测试平台。非常难得的是它可以直接提供一个公网的linux服务器(一般40-60分钟后会自动销毁),你可以在上面做任何探索。对于想要学习常用linux指令的同学,是一个非常不......