当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何识别 Office 365 中的非活动用户:分步指南

作者:精品下载站 日期:2024-12-15 00:28:22 浏览:14 分类:玩电脑

如何识别 Office 365 中的非活动用户:分步指南


要求:获取 Office 365 中的非活动用户报告。

如何查找 Office 365 中的非活跃用户?

非活动用户是指在指定时间段内未登录 Microsoft 365 的用户。 Office 365 环境中的不活动用户帐户可能会带来安全风险并浪费宝贵的资源。幸运的是,有一些方法可以识别和管理这些用户,以确保您的数据保持安全。在本指南中,我们将向您展示如何查找 Office 365 中的非活动用户并采取必要的操作来保护您的组织。

了解不活跃用户的风险

首先,不活跃的用户可能会给您的组织带来安全风险。如果非活动用户的帐户遭到泄露,则该帐户可用于访问敏感数据、发送网络钓鱼电子邮件或发起其他类型的攻击。此外,不活跃的用户可能会浪费宝贵的资源,例如许可证和存储空间。识别和管理不活动帐户对于确保数据安全和资源有效利用非常重要。查找并禁用不活动用户可以释放许可证并为您的组织节省资金。那么,如何获取 Office 365 中的活跃用户列表?

方法 1:使用 Microsoft 365 管理中心

Microsoft 365 管理中心是管理 Microsoft 365 环境的中心枢纽。识别不活动用户的最简单方法之一是使用 Microsoft 365 管理中心。从管理中心,您可以查看组织中所有用户的列表,并了解他们上次登录的时间。如果用户在一段时间内未登录,您可以将其视为非活动状态。

要使用此工具查找不活跃的用户,请按照下列步骤操作:

  1. 使用您的管理员凭据登录 Office 365 管理中心。
  2. 单击左侧菜单中的“用户”选项卡。
  3. 单击页面顶部的“活跃用户”选项卡。
  4. 搜索并找到特定用户,然后单击用户名以打开用户属性。在用户属性中,查找“上次登录”。

    [玩转系统] 如何识别 Office 365 中的非活动用户:分步指南

  5. 识别出不活动用户后,您可以删除他们的帐户或重置其密码以强制他们登录并重新激活其帐户。

但该方法只能捕获过去30天的登录日志,不涵盖服务登录。此外,通过Web浏览器界面检查环境中每个用户的登录日志可能很麻烦。

方法 2:使用 Azure AD PowerShell 脚本

PowerShell 是一个功能强大的命令行工具,可用于自动执行 Microsoft 365 中的各种任务。您可以使用 PowerShell 脚本自动执行环境中识别和管理非活动用户的过程。运行以下脚本,该脚本将识别组织中的所有非活动用户,将其显示在列表中,然后导出到 CSV 文件。

在执行此脚本之前,请确保已安装 AzureAD 和 AzureADPreview 模块!使用:
安装模块 AzureAD
安装模块 AzureADPreview -AllowClobber -Force

要使用 PowerShell 查找不活动用户,请执行以下步骤:

  1. 在本地计算机上打开 PowerShell ISE。
  2. 通过运行以下命令连接到 Microsoft 365 Azure Active Directory 环境:Connect-AzureAD
  3. 使用 Get-AzureADUser cmdlet 获取环境中的所有用户,并循环访问每一个用户。
  4. 搜索登录日志以获取在一定时间内未使用 Get-AzureADAuditSignInLogs 登录的所有用户的列表。除了登录时间戳之外,它还提供许多其他信息,包括 IP 地址、设备、位置等。
  5. 收集详细信息并将其导出到 CSV 报告。

#Config Parameters
$InactiveDays = 30 # Past number of days user didn't login
$CSVPath = "C:\Temp\InactiveUsers.csv"
$InactiveUsers = @()
$ThresholdDate = (Get-Date).AddDays(-$InactiveDays)
$QueryStartDateTimeFilter = "{0:yyyy-MM-dd}T{0:HH:mm:sszzz}" -f $ThresholdDate

#Connect to Azure AD
Connect-AzureAD | Out-Null

#Get All users from Azure AD
$AllUsers = Get-AzureADUser -All $true
$TotalUsers = $AllUsers.Count

#Function to get the last login date time stamp of the user
Function Get-UserLastLogin([string] $UserObjectID)
{
    Try {
        Write-host -f Yellow "Collecting Last Login date of User Object:"$UserObjectID

        #Get Signin Logs of the user on specific time frame
        $SigninLog = Get-AzureADAuditSignInLogs -All:$true -Filter "userID eq '$UserObjectID' and status/errorCode eq 0 and createdDateTime ge $QueryStartDateTimeFilter" | Select -First 1

        #Return Last Login Date
        Return $SigninLog.CreatedDateTime
    }
    Catch {
        $message = $_
        If ($message -like "*Too Many Requests*")
        {
            Write-host "`tSleeping for 10 seconds due to throttling limitations..." -ForegroundColor Cyan 
            Sleep 10
            #Recursive function call to retry the entry that was throttled
            Get-UserLastLogin $UserObjectID
        }
        Else
        {
            Write-host $Message -ForegroundColor Red           
        }
    }
}

$Counter = 1
$AllUsers | ForEach-Object {
    Write-Progress -Activity "Checking Signin Logs:" -Status "Processing $($_.UserPrincipalName) ($Counter of $TotalUsers)" -PercentComplete (($Counter / $TotalUsers) * 100) 
    #Call the function to get sign-in log
    $LastLoginDate = Get-UserLastLogin $_.ObjectID
    
    #Collect data
    If(!$LastLoginDate -or ($LastLoginDate -and ((Get-Date $LastLoginDate) -lt $ThresholdDate)))
    {
        $InactiveUsers += [PSCustomObject][ordered]@{
            UserLoginName   = $_.UserPrincipalName
            UserDisplayName   = $_.DisplayName
        }
    }
    $Counter++
}

$InactiveUsers

#Export Data to CSV
$InactiveUsers | Export-Csv -Path $CSVPath -NoTypeInformation

您可以调整 $InactiveDays 变量来定义不活动阈值。但是,cmdlet Get-AzureADAuditSignInLogs 仅限于仅检查过去 30 天的登录日志!在一段时间内(例如 90 天)未登录的用户可能处于非活动状态,应接受审核。

要获取外部用户的最后登录日期,请使用:
$GuestUsers=Get-AzureADUser -All $true -Filter “usertype eq ‘guest’”

方法 3:使用 Microsoft Graph API 获取所有用户的审核日志报告

最后,我们有 Microsoft Graph API 来克服所有限制。以下是用于获取 Office 365 环境中所有用户的上次登录日期的 PowerShell 脚本。


#Parameters
$InactiveDays = 90 
$CSVPath = "C:\Temp\InactiveUsers.csv"
$InactiveUsers = @()
$ThresholdDate = (Get-Date).AddDays(-$InactiveDays)

#Connect to Microsoft Graph
Connect-MgGraph -Scopes "AuditLog.Read.All", "User.Read.All"

#Set the Graph Profile
Select-MgProfile beta

#Properties to Retrieve
$Properties = @(
    'Id','DisplayName','Mail','UserPrincipalName','UserType', 'AccountEnabled', 'SignInActivity'    
)

#Get All users along with the properties
$AllUsers = Get-MgUser -All -Property $Properties

ForEach ($User in $AllUsers)
{
    $LastLoginDate = $User.SignInActivity.LastSignInDateTime
    If($LastLoginDate -eq $null)
    {
        $LastSignInDate = "Never Signed-in!"
    }
    Else
    {
        $LastSignInDate = $LastLoginDate
    }

    #Collect data
    If(!$LastLoginDate -or ($LastLoginDate -and ((Get-Date $LastLoginDate) -lt $ThresholdDate)))
    {
        $InactiveUsers += [PSCustomObject][ordered]@{
            LoginName       = $User.UserPrincipalName
            Email           = $User.Mail
            DisplayName     = $User.DisplayName
            UserType        = $User.UserType
            AccountEnabled  = $User.AccountEnabled
            LastSignInDate  = $LastSignInDate
        }
    }
}

$InactiveUsers
#Export Data to CSV
$InactiveUsers | Export-Csv -Path $CSVPath -NoTypeInformation

此脚本使用 PowerShell 生成 Office 365 非活动用户报告。

确定每个不活跃用户的最佳行动方案

确定 Office 365 环境中的非活动用户后,确定每个用户的最佳操作方案非常重要。您可以删除/禁用他们的帐户或重置他们的密码,以强制他们登录并重新激活他们的帐户,并防止未经授权的用户(例如前雇员和承包商)访问任何敏感信息。有些用户可能只需要提醒登录并使用其帐户,而其他用户可能需要禁用或删除其帐户以确保其数据的安全。

在做出决定之前,请考虑用户在组织中的角色、他们对敏感数据的访问权限以及他们的活动历史记录等因素。向用户传达任何更改并向他们提供任何必要的资源或支持也很重要。

结论

不活动的用户或过时的帐户可能会给您的 Office 365 环境带来安全风险,因此定期检查和管理您的用户帐户非常重要。这包括识别和停用不再需要或不再使用的帐户,以及监控用户活动以确保帐户得到适当使用。通过使用 PowerShell,您可以自动执行识别非活动用户的过程,从而节省时间和精力。无论你选择使用 Microsoft 365 管理中心、PowerShell 还是第三方工具,从长远来看,正确管理你的用户帐户都会带来回报。定期监控和管理用户帐户可确保您的 Microsoft 365 环境安全高效。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯