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

[玩转系统] 阻止用户访问 Microsoft 365 帐户

作者:精品下载站 日期:2024-12-14 04:02:31 浏览:15 分类:玩电脑

阻止用户访问 Microsoft 365 帐户


有多种技术可以阻止人们相互联系

更新于 2024 年 2 月 20 日

最近一篇关于使用 PowerShell 控制 Entra ID 条件访问策略的文章让我开始思考用于阻止用户访问 Office 365 的技术。四年前,我在 Petri.com 的一篇文章中考虑了受法国法律启发的问题允许人们在周末断开连接。在法国以外的地方,随着 Covid-19 大流行迫使许多人在家工作,在个人时间和工作时间之间保留空间的必要性变得更加明显。有些人工作得更多,有些人工作得更少,个人时间和工作时间之间的界限变得模糊。现在,时代的进步和技术的发展相结合,使重新审视这个问题变得合理。

更新:Microsoft 已针对所有租户中的密码更改或帐户冻结等关键事件实施了持续访问评估 (CAE)。 CAE 的最终效果是剥夺用户对帐户的访问权限的速度更快(几乎立即)。

暂时或永久停止电子邮件连接

禁用用户服务的问题不仅仅是阻止人们在周末或度假时工作。当人们离开公司时它也适用。多年来,不同的技术不断发展,最初是用于电子邮件连接,因为这是问题首先出现的地方。

由于 Exchange Online 支持一组丰富的邮箱连接协议,因此您可以通过运行 Set-CASMailbox cmdlet 禁用各个协议。在此示例中,我们为 Exchange ActiveSync (EAS) 和 Outlook Mobile 使用的 Microsoft 同步技术禁用邮箱的移动连接:

Set-CASMailbox -Identity [email protected] -ActiveSyncEnabled:$False
Set-CASMailbox -Identity [email protected] -OutlookMobileEnabled:$False

为什么要禁用这两个协议? Outlook Mobile 使用 Microsoft 同步技术来启用许多高级功能,例如委托对邮箱的访问,但其他客户端(例如 iOS 和 Android 操作系统中包含的邮件应用程序)使用 EAS 与 Exchange Online 进行基本电子邮件连接。如果您不禁用两者,则会造成用户仍然可以使用不同的应用程序连接到其邮箱的情况。事实上,为了完整起见,您还应该禁用 IMAP4 和 POP3 协议,以阻止移动设备连接到邮箱的任何机会。

专注于禁用协议的缺点是仍然可能发生一些信息泄漏。以 Outlook 移动版为例。您可以禁用 Microsoft 同步技术来停止客户端发送消息和将消息下载到设备,但 iOS 和 Android 都使用服务来通知用户新消息的到达。通知包含有关新消息的片段,以便用户决定是否需要阅读完整消息。禁用同步协议后,这些通知会继续到达。

实际上,如果您真的想控制移动设备,则需要部署 Intune 等移动设备管理 (MDM) 解决方案,该解决方案允许您在必要时远程擦除设备上的公司数据。

停止访问 Office 365

电子邮件并不是唯一占用周末时间的应用程序。如果人们允许,Teams、Planner、Yammer、SharePoint Online 和 OneDrive for Business 都会消耗大量时间。阻止访问的经典方法是阻止某人的帐户。这可以通过 Microsoft 365 管理中心选择帐户并选择阻止登录来完成(图 1)。

[玩转系统] 阻止用户访问 Microsoft 365 帐户

阻止帐户会将 AccountEnabled 属性设置为 False。当帐户被禁用时,用户无法登录其帐户:

[玩转系统] 阻止用户访问 Microsoft 365 帐户

强制从应用程序注销

阻止帐户登录还会将该帐户的 RefreshTokensValidFromDateTime 属性设置为操作发生的日期和时间。其效果是使颁发给用户应用程序的刷新令牌和颁发给浏览器中会话 cookie 的令牌无效,并强制用户重新进行身份验证才能继续使用应用程序。 Microsoft 365 管理中心包含一个用于将用户从所有会话中注销的选项,因此您可以在不阻止帐户的情况下执行此操作。

您还可以通过运行 Revoke-MgUserSignInSession cmdlet 强制使用 PowerShell 注销帐户:

$RevokeStatus = Revoke-MgUserSignInSession -UserId $User.Id

重置帐户登录将 RefreshTokensValidFromDateTime 设置为当前日期和时间,并将 AccountEnabled 设置为 True。用户现在可以登录。发生这种情况时,浏览器和应用程序会收到新的有效令牌。用户最多可能需要 15 分钟才能登录所有应用程序。

使用 PowerShell 阻止帐户

Update-MgUser cmdlet 会阻止对用户帐户的访问:

Update-MgUser -UserId '[email protected]' -AccountEnabled:$False

建议的方法是运行 Update-MgUser 来阻止帐户,然后运行 Revoke-MgUserSignInSession 以确保通过强制注销所有应用程序来阻止帐户。

实施周末区块

回到最初的问题,即如何出于某种原因断开人们与 Microsoft 365 的连接。假设我们只希望特定类别的用户发生这种情况,例如在特定国家/地区工作的用户。如果这些人是某个组的成员,我们可以使用该组来驱动断开连接过程。在此示例中,通讯组列表定义了要断开连接的帐户:

[Array]$Accounts = Get-DistributionGroupMember -Identity "BlockWeekend" | Select WindowsLiveID, ExternalDirectoryObjectId

ForEach ($Account in $Accounts) {
   Write-Host "Turning Off Office 365 Access for" $Account.WindowsLiveID
   Update-MgUser -UserId $Account.ExternalDirectoryObjectId -AccountEnabled:$False
   $RevokeStatus = Revoke-MgUserSignInSession -UserId $Account.ExternalDirectoryObjectId  }

动态通讯组列表可能是更好的选择,因为成员资格由国家或城市等属性驱动。要获取动态通讯组列表的用户集,我们使用列表的收件人过滤器来查找成员:

$AccountFilter = (Get-DynamicDistributionGroup -Identity "French Country Users").RecipientFilter
[Array]$Accounts = Get-Recipient -RecipientPreviewFilter $AccountFilter | Select-Object WindowsLiveID, ExternalDirectoryObjectId

当然,如果您愿意,可以使用 Get-MgGroupMember cmdlet 来获取组成员的详细信息。例如:

[array]$GroupId = (Get-MgGroup Filter "DisplayName eq 'BlockWeekend'").Id
[array]$GroupMembers = Get-MgGroupMember -GroupId $GroupId | Select-Object additionalProperties
$GroupMembers.displayName

此语法适用于通讯组列表、安全组、Microsoft 365 组和动态 Microsoft 365 组。它不适用于动态通讯组列表,因为 Entra ID 中不存在这些对象

断开用户连接的任务很简单。每个周五晚上,我们都会运行 PowerShell 脚本来禁用访问,并在周一早上运行另一个脚本来反转该过程。最大的缺点是 Teams 处理被阻止的帐户以将其从团队名册中删除的方式(不影响组成员身份)。如果您可以忍受这个问题,而 Microsoft 正在考虑如何改善这种情况,那么短期阻止帐户可能对您的组织有用。

使用条件访问策略

条件访问策略在用户成功进行身份验证后运行,以确定他们是否可以连接到所请求的资源。组成员身份是受支持的条件之一,这意味着可以轻松创建策略来阻止组访问应用程序。因为我们要阻止周末访问,所以我们可以添加另一个条件,表示如果用户在公司位置,则可以进行访问,但如果他们在家里或其他任何地方则不行。

图 3 显示了此类政策的概要。如果在“阻止的周末通讯组”列表中指定的任何人(您还可以使用安全组或 Microsoft 365 组)尝试访问 Office 365 应用程序,他们将被阻止:

[玩转系统] 阻止用户访问 Microsoft 365 帐户

当用户尝试访问应用程序被条件访问策略阻止时,他们会被告知登录已成功(身份验证已成功),但他们无权访问该资源:

[玩转系统] 阻止用户访问 Microsoft 365 帐户

如果它们已连接到应用程序并且该应用程序尝试更新其访问令牌,则条件访问策略将阻止令牌的颁发。图 5 显示了在 Teams 中发生这种情况时用户看到的内容(该应用程序非常有礼貌!):

[玩转系统] 阻止用户访问 Microsoft 365 帐户

使用 PowerShell 控制条件访问策略

条件访问策略允许组织对用户对应用程序的访问权限进行精细控制。在我们的场景中,我们希望允许在一周内免费访问。我们可以在工作周期间禁用条件访问策略,并仅在周末启用它。通过在 Entra 管理中心或使用 PowerShell 编辑策略即可轻松完成此操作。例如,启用该策略的方法如下:

$Policy = Get-MgIdentityConditionalAccessPolicy -Filter "displayName eq 'Block Weekend Access'"

Update-MgIdentityConditionalAccessPolicy -ConditionalAccessPolicyId $Policy.Id -State 'Enabled'

要在周末后禁用该策略,请运行:

Update-MgIdentityConditionalAccessPolicy -ConditionalAccessPolicyId $Policy.Id -State 'Disabled'

更改条件访问策略条件

但因为我们想要说明通过 PowerShell 使用条件访问策略的可能性,所以我们假设该策略始终处于活动状态,因为它在一周内用于限制某些用户(由组标识)对某些位置的访问。周末,我们需要与另一个小组更新策略。

被条件访问策略阻止的用户被定义为策略条件。要了解哪些用户受到策略的影响,我们可以检查其条件。在这里我们看到策略中包含一个组:

((Get-MgIdentityConditionalAccessPolicy -ConditionalAccessPolicyId $PolicyId).Conditions).Users | Format-List

IncludeUsers  : {}
ExcludeUsers  : {}
IncludeGroups : {468a9356-cf88-4189-bf85-40b096e3c37f}
ExcludeGroups : {}
IncludeRoles  : {}
ExcludeRoles  : {}

我们知道这是一个组而不是单个用户,因为它列在 IncludeGroups 条件中。该组由其唯一标识符(GUID)引用。要找出列出的组,请运行 Get-MgGroup cmdlet:

Get-MgGroup -GroupId 468a9356-cf88-4189-bf85-40b096e3c37f

DisplayName                      Id                                   MailNickname Description GroupTypes
-----------                      --                                   ------------ ----------- ----------
Users Blocked for Weekend Access 468a9356-cf88-4189-bf85-40b096e3c37f BlockWeekend             {}

要在策略中将一个组切换为另一个组,我们需要创建一个哈希表,指定要包含在策略中的组的组标识符,然后调用 Update-MgConditionalAccessPolicy cmdlet 进行更改。

以下是更新条件访问策略的代码示例。您可以看到不同组的 GUID 已写入条件集中:

# Update the policy with a new group
$UpdateSettings = @{
    Conditions = @{
        users = @{  
            includeGroups = @(
                "5c011293-7cc7-41c4-a0fc-3e3bb98db834"
            )
        }
    }
}
Update-MgIdentityConditionalAccessPolicy -BodyParameter $UpdateSettings -ConditionalAccessPolicyId $Policy.Id

几分钟之内,更新的条件访问策略就生效了,并且阻止就位。

要在周末结束后反转该过程,请使用原始组的 GUID 更新策略。有关使用 PowerShell 管理条件访问策略的更多信息,请参阅本文。

选项和选择

条件访问策略需要 Entra ID P1 许可证。如果您已经获得这些许可证,并因此投资了条件访问,那么添加新策略来控制周末访问并不困难。能够使用 PowerShell 控制策略可以更轻松地自动打开或关闭访问权限。

另一方面,如果您没有 Entra ID P1 许可证,您仍然可以通过几行 PowerShell 来阻止用户帐户。如果您不想阻止访问并只是提醒人们应该在周末少做一些工作,也许使用传输规则在内部邮件上标记“断开连接权”免责声明的技术是一个好方法。

选择是不错的…

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

取消回复欢迎 发表评论:

关灯