本教程介绍如何在 Microsoft Entra ID 中使用应用程序管理策略强制实施机密和证书标准。
确保组织中的应用程序使用安全身份验证对于保护敏感数据和维护系统的完整性至关重要。 Microsoft Entra ID 提供了一种通过应用程序管理策略强制实施机密和证书限制的方法。 此功能可帮助你管理可以使用哪些类型的机密和密钥,并确保定期轮换机密和密钥。 只能使用 Microsoft Graph PowerShell 或Microsoft图形 API 更新应用程序管理策略。 若要详细了解此功能,请参阅 Microsoft Entra 应用程序管理策略 API 概述。
策略可以应用于组织中的所有应用程序或特定应用程序。 在本教程中,学习以下内容:
- 了解机密和证书的建议限制。
- 查看当前租户的应用程序管理策略。
- 更新应用程序策略以强制实施限制。
- 确认策略已应用。
重要
对应用程序管理策略进行更改可能会对应用程序及其身份验证能力产生重大影响。 在进行任何更改之前,请务必了解这些更改的含义以及它们如何影响应用程序。 在将更改应用到生产环境之前,应先测试非生产环境中的任何更改,并在更新之前复制当前策略设置。
先决条件
- 用户帐户。 如果还没有帐户,可创建一个帐户。
- 至少具有云应用程序管理员或应用程序管理员角色。
- 已安装 Microsoft Graph PowerShell 模块。 请参阅 安装 Microsoft Graph PowerShell 模块。
机密和证书的建议做法
对应用程序的攻击通常以密码、密钥和证书等机密为目标,以获取对敏感数据的未经授权的访问。 通过强制实施限制,可以缓解这些风险,并确保应用程序保持安全。 下面是对机密和证书的建议限制:
禁用应用程序密码/客户端密码:使用客户端机密的应用程序可能会将它们存储在配置文件中,在脚本中对其进行硬编码,或者以其他方式风险暴露它们。 机密管理的复杂性使客户端机密容易受到泄漏和对攻击者的吸引力。
在应用程序中禁用对称密钥用法:对称密钥类似于客户端机密,因为它们在应用程序与其访问的资源之间共享。 这意味着,如果攻击者获得对对称密钥的访问权限,他们可以模拟应用程序并访问资源。 对称密钥也比非对称密钥更难管理,因为它们要求双方共享同一密钥。
将非对称密钥(证书)生存期限制为 180 天:证书提供比客户端机密更安全的方式来对应用程序进行身份验证。 但是,如果无法正确管理,它们仍可能会受到损害。 通过限制证书的生存期,可以降低攻击者利用长期证书的风险。 证书应定期轮换,以确保证书不会泄露。 建议的证书最长生存期为 180 天。 这意味着至少每 180 天轮换一次证书。 为高度敏感的应用程序设置较短的生存期可以进一步降低泄露的风险。 我们还建议使用 Azure Key Vault 配置证书的自动轮换。 要了解更多信息,请参阅 使使用单套身份验证凭据的资源机密自动轮换
若要详细了解Microsoft Entra 租户的建议安全做法,请参阅 配置 Microsoft Entra 以提高安全性。
阅读您的租户申请管理政策
在创建新的应用程序管理策略之前,可以读取现有策略以查看它是否符合你的需求。 以下示例演示如何读取租户的默认应用程序管理策略。 还可以重复使用此 API 请求来确认此策略已在本教程后面应用。
示例:
以下示例读取租户的默认应用程序管理策略。 响应显示当前策略设置。
请使用 Connect-MgGraph
cmdlet 和 Policy.Read.All
权限来连接到 Microsoft Graph。 至少使用 云应用程序管理员 角色登录。 然后运行以下命令,读取租户的默认应用程序管理策略。
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes 'Policy.Read.All'
# Get the default application management policy
Get-MgPolicyDefaultAppManagementPolicy | format-list
有关此 cmdlet 的详细信息,请参阅 Get-MgPolicyDefaultAppManagementPolicy。
输出
以下示例显示了默认租户应用管理策略的输出。 策略可能与示例不同。 如果在您的组织中未应用任何策略,则 id
字段设置为 00000000-0000-0000-0000-000000000000
,isEnabled
字段设置为 false
。
ApplicationRestrictions : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppManagementApplicationConfiguration
DeletedDateTime :
Description : Default tenant policy that enforces app management restrictions on applications and service principals. To apply policy to targeted resources, create a new policy under appManagementPolicies collection.
DisplayName : Default app management tenant policy
Id : 00000000-0000-0000-0000-000000000000
IsEnabled : false
ServicePrincipalRestrictions : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppManagementServicePrincipalConfiguration
AdditionalProperties : {[@odata.context, https://microsoftgraph.chinacloudapi.cn/v1.0/$metadata#policies/defaultAppManagementPolicy/$entity]}
重要
在更新当前策略设置之前,请复制这些设置。 这样,可以根据需要还原到原始设置。 可以通过将当前策略设置复制到文件或通过获取设置的屏幕截图来执行此作。 如果尚未保存原始设置,则更新它们后将无法找到原始设置。
更新应用程序管理策略
若要实现机密和证书限制,需要更新默认的应用程序管理策略。 此示例提供了建议的设置,但你可以根据你的需求进行调整,或者如果你不想应用某些元素,甚至省略这些元素。 以下示例演示如何使用建议的设置更新默认应用程序管理策略:
passwordCredentials
:允许设置策略以限制客户端机密和对称密钥的属性。 如果不想设置策略来限制这些类型的凭据,则可以省略此策略。该
restrictionType
参数允许设置要应用的限制类型。 在本例中,你正在限制passwordAddition
,customPasswordAddition
以及symmetricKeyAddition
。 这些设置将限制创建客户端机密、自定义密码和对称密钥。该
state
参数允许启用或禁用限制。 如果设置为enabled
,将应用限制。 如果设置为disabled
,则不会应用限制。该
maxLifetime
参数允许设置机密的最大生存期。 已将passwordCredentials
的值设置为null
。 将值设置为null
表示最长生存期不受限制。 这是因为完全禁用客户端机密和对称密钥的创建。 如果要为客户端机密设置最长生存期,可以将此值设置为 ISO 8601 格式的持续时间。 在下一部分中,你将找到一个示例。 有关持续时间格式的详细信息,请参阅 ISO 8601。该
restrictForAppsCreatedAfterDateTime
参数允许设置策略对新应用程序生效的日期。 在此日期之前创建的任何应用程序都将不受策略影响。 在这种情况下,你将对 2025 年 2 月 20 日之后创建的应用程序应用限制。 请确保更新此日期以满足你的需求。 如果要为在特定日期之前或之后创建的应用程序设置不同的限制,可以使用不同的restrictForAppsCreatedAfterDateTime
值设置多个策略。
keyCredentials
:允许为证书设置参数。 在这种情况下,将应用程序证书的生存期限制为 180 天。该
restrictionType
参数允许设置要应用的限制类型。 在本例中,你将限制asymmetricKeyLifetime
。 这将将应用程序证书的生存期限制为用户定义的值。该
state
参数允许启用或禁用限制。 如果设置为enabled
,将应用限制。 如果设置为disabled
,则不会应用限制。该
maxLifetime
参数允许设置证书的最大生存期。 在这种情况下,将证书的生存期限制为 180 天。 这是使用 ISO 8601 持续时间格式完成的。 前缀P
指示该值在一段时间内,并180D
指示该时间段为 180 天。 可以将数字从180
更改为其他值,以满足您的特定需求。 有关持续时间格式的详细信息,请参阅 ISO 8601。该
restrictForAppsCreatedAfterDateTime
参数允许设置策略对新应用程序生效的日期。 在此日期之前创建的任何应用程序都将不受策略影响。 在这种情况下,你将对 2025 年 2 月 20 日之后创建的应用程序应用限制。 请确保更新此日期以满足你的需求。 如果要为在特定日期之前或之后创建的应用程序设置不同的限制,可以使用不同的restrictForAppsCreatedAfterDateTime
值设置多个策略。
示例:
以下示例使用上一部分中讨论的设置更新默认应用程序管理策略。
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes 'Policy.ReadWrite.All'
Import-Module Microsoft.Graph.Identity.SignIns
# Define the parameters for the application management policy
$params = @{
isEnabled = $true
applicationRestrictions = @{
passwordCredentials = @(
@{
restrictionType = "passwordAddition"
state = "enabled"
maxLifetime = $null
restrictForAppsCreatedAfterDateTime = [System.DateTime]::Parse("2025-02-20T10:37:00Z")
}
@{
restrictionType = "customPasswordAddition"
state = "enabled"
maxLifetime = $null
restrictForAppsCreatedAfterDateTime = [System.DateTime]::Parse("2025-05-20T10:37:00Z")
}
@{
restrictionType = "symmetricKeyAddition"
state = "enabled"
maxLifetime = $null
restrictForAppsCreatedAfterDateTime = [System.DateTime]::Parse("2025-02-20T10:37:00Z")
}
)
keyCredentials = @(
@{
restrictionType = "asymmetricKeyLifetime"
maxLifetime = "P180D"
restrictForAppsCreatedAfterDateTime = [System.DateTime]::Parse("2025-02-20T10:37:00Z")
}
)
}
}
# Update the default application management policy
Update-MgPolicyDefaultAppManagementPolicy -BodyParameter $params
有关此 cmdlet 的详细信息,请参阅 Update-MgPolicyDefaultAppManagementPolicy。
确认策略已应用
更新应用程序管理策略后,可以通过再次读取默认应用程序管理策略来确认它已应用, 如前所示。 响应应显示已更新的策略,其中包含所应用的限制。
如果是第一次应用应用程序管理策略,那么 id
字段应已从 00000000-0000-0000-0000-000000000000
更改为新的 GUID。 此更改说明策略已创建。
还可以通过创建新应用程序并检查是否强制实施限制来确认策略已应用。 例如,如果尝试使用客户端机密或对称密钥创建新应用程序,则应收到一个错误,指示不允许此作,如以下屏幕截图所示。
相关内容
- 若要了解如何自动执行机密轮换,请参阅 自动轮换使用一组身份验证凭据的资源的机密。
- 若要详细了解可用的限制和策略设置,请参阅 Microsoft Entra 应用程序管理策略 API 概述
- 若要详细了解组织的安全最佳做法,请参阅配置 Microsoft Entra 以提高安全性。
- 若要了解有关使用机密进行身份验证的替代方法的详细信息,请参阅 从基于机密的身份验证迁移应用程序