Microsoft Entra PowerShell 最佳做法

本文介绍如何实现 Microsoft Entra PowerShell 最佳做法,包括应用注册、安全增强、性能优化和维护策略。

了解这些做法对于最大程度地降低安全风险、优化性能以及使系统保持最新状态至关重要。 保护敏感数据并确保任何组织中的顺利运营至关重要。

注册应用而不是使用企业应用

可以使用特定权限(例如营销或技术支持团队)注册针对不同用例定制的应用程序。 此方法允许更精细的权限管理,并在应用遭到入侵时最大程度地减少安全影响。 若要创建已注册的应用,请参阅 “创建自定义应用程序”。

使用你注册的应用程序登录,运行以下命令:

Connect-Entra -ClientId <your-custom-app-id> -TenantId <your-tenant-id>

还可以使用别名 AppIdApplicationId 代替 ClientId

安全性

在应用中应用以下同意和授权最佳做法,以提高安全性:

  • 应用最低权限:仅向用户和应用授予调用Microsoft Entra资源所需的最低特权权限。 选择最低特权权限。 例如,如果应用仅读取当前登录用户的个人资料,请授予 User.Read,而不是 User.ReadBasic.All。 有关权限的完整列表,请参阅 权限参考

  • 使用 Disconnect-Entra:始终运行 Disconnect-Entra 以删除与帐户关联的所有凭据和上下文。 该 cmdlet 会在不再需要这些连接时,正确地清理并关闭它们。 如果会话处于打开状态或其他人访问 PowerShell 环境,则会降低未经授权的访问风险。

  • 根据方案使用正确的权限类型:避免在同一应用中同时使用应用程序和委托的权限。 如果要生成存在已登录用户的交互式应用程序,则应用程序应使用 委派的权限。 但是,如果应用程序在没有登录用户(例如后台服务或守护程序)的情况下运行,则应用程序应使用 应用程序权限

  • 仔细考虑应用程序权限:避免对交互式方案使用应用程序权限来防止安全性和符合性风险,因为它无意中提升用户的权限并绕过管理员策略。

  • 配置应用时要深思熟虑:配置会影响最终用户和管理员体验,以及应用程序采用和安全性。 例如:

    • 应用程序的名称、徽标、域、发布者验证状态、隐私声明和使用条款显示在同意和其他体验中。 请仔细配置这些设置,以便最终用户了解这些设置。
    • 请考虑谁同意应用程序(最终用户或管理员)并配置应用程序以 适当请求权限
    • 确保了解 静态、动态和增量同意之间的差异。
  • 警惕权限不断扩张 - 密切关注注册应用随着时间推移而累积的权限。

  • 利用安全默认值和条件访问 - 使用条件访问(适用于许可组织)和安全默认值(对于未经许可的组织)保护具有Microsoft Entra多重身份验证的用户。

  • 利用 Microsoft Entra 建议 - Microsoft Entra 建议功能会密切监视你的租户状态,确保其保持安全和正常运行。 你可以了解已使用的应用、过期凭据、特权过大的应用程序等。

  • 将应用登录限制为仅分配的标识 - 该 Assignment Required 属性通过确保只有分配的用户才能登录来帮助管理对应用程序的访问。

Connect-Entra -Scopes 'Application.ReadWrite.All'
Get-EntraServicePrincipal -Filter "DisplayName eq 'Contoso Demo App'" | Set-EntraServicePrincipal -AppRoleAssignmentRequired $true

性能优化

使用 Microsoft Entra PowerShell 时,以下做法可帮助你优化性能:

使用筛选器

筛选通过在服务器端限制选择来检索集合的子集来完成,这有助于减少不必要的网络流量和数据处理。

Get-EntraUser -Filter "startsWith(DisplayName,'Ada')"

仅选择所需的属性

通过使用 -Property 参数仅获取所需属性来选择所需属性。

定义页面大小

对于返回许多对象的请求,请使用参数将页面大小增加到其最大值 -top

Get-EntraUser -All -Top 999

Maintenance

应用以下维护最佳做法,确保Microsoft Entra PowerShell 模块和脚本最新且正常运行:

使 Microsoft Entra PowerShell 模块保持最新

使模块保持最新状态至关重要,原因有多种。 首先,它允许你受益于最新的功能和增强功能,确保你有权访问最新的 cmdlet 和功能。 更重要的是,定期更新可改善安全状况。 我们的团队持续实施安全修复和补丁,帮助保护您的系统免受漏洞侵害。

Tip

如果将 Microsoft Entra PowerShell 与Azure 自动化配合使用,请更新Azure 自动化帐户中的 PowerShell 模块。

Update-Module -Name Microsoft.Entra

更新模块后,删除旧版本。

使用 Get-Help

Get-Help 直接在命令行中提供全面的文档。 它提供有关 Microsoft Entra PowerShell cmdlet、函数、脚本和概念的详细信息,包括用法示例、接受的参数和输出。 Get-Help 提升高效的脚本编写,并帮助避免常见错误。

Get-Help Get-EntraUser -Detailed

使用调试选项

-Debug会在你与 Microsoft Entra PowerShell 交互时提供详细的诊断信息,帮助你排查故障。 它可以帮助你确切地了解脚本的工作原理,以及开发和测试阶段可能出现任何问题的位置。

Get-EntraUser -Top 1 -Debug

若要将调试输出流发送到日志文件,请使用:

Get-EntraUser -Top 1 -Debug 5>> <your-log-filepath>
  • 5- 表示流号。 Debug Stream 有关流的详细信息,请参阅 输出流
  • >> - 表示重定向运算符。 有关重定向运算符的详细信息,请参阅 重定向运算符