在本教學課程中,您將瞭解如何在 Microsoft entra ID 中使用應用程式管理原則來強制執行秘密和憑證標準。
確保組織中的應用程式使用安全驗證對於保護敏感數據和維護系統完整性至關重要。 Microsoft Entra ID 可讓您透過應用程式管理原則強制執行秘密和憑證限制。 這項功能可協助您管理可以使用哪種類型的秘密和密鑰,並確保其會定期輪替。 應用程式管理原則只能使用 Microsoft Graph PowerShell 或 Microsoft Graph API 來更新。 若要深入瞭解這項功能,請參閱 Microsoft Entra 應用程式管理原則 API 概觀。
原則可以套用至組織中的所有應用程式或特定應用程式。 在本教學課程中,您將瞭解:
- 瞭解秘密和憑證的建議限制。
- 閱讀您租使用者目前的應用程式管理原則。
- 更新應用程式原則以強制執行限制。
- 確認已套用原則。
這很重要
對應用程式管理原則進行變更可能會對您的應用程式及其驗證能力產生重大影響。 進行任何變更之前,請務必瞭解這些變更的影響,以及這些變更如何影響您的應用程式。 在將變更套用至生產環境之前,您應該先在非生產環境中測試任何變更,並在更新原則設定之前,先備份目前的設定。
先決條件
- 使用者帳戶。 如果您還沒有帳戶,您可以 免費建立帳戶。
- 至少 雲端應用程式管理員 或 應用程式管理員 角色。
- API 用戶端,例如 Graph 總管或
- 已安裝 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 -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://graph.microsoft.com/v1.0/$metadata#policies/defaultAppManagementPolicy/$entity]}
使用至少具有 雲端應用程式管理員 角色登入 Microsoft Graph Explorer。 然後,執行下列要求,以讀取租用戶的默認應用程式管理原則。 請確定您已同意 Policy.Read.All
權限。
GET https://graph.microsoft.com/v1.0/policies/defaultAppManagementPolicy
如需此要求的詳細資訊,請參閱 取得 tenantAppManagementPolicy。
回應
下列範例顯示預設租使用者應用程式管理原則的回應。 您的原則可能與範例不同。 如果組織中尚未套用任何原則,則 id
欄位會設定為 00000000-0000-0000-0000-000000000000
,且 isEnabled
欄位設定為 false
。
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#policies/defaultAppManagementPolicy/$entity",
"@odata.id": "https://graph.microsoft.com/v2/927c6607-8060-4f4a-a5f8-34964ac78d70/defaultAppManagementPolicy/00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"displayName": "Default app management tenant policy",
"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.",
"isEnabled": false,
"applicationRestrictions": {
"passwordCredentials": [],
"keyCredentials":[]
},
"servicePrincipalRestrictions": {
"passwordCredentials": [],
"keyCredentials":[]
}
}
這很重要
在您更新原則設定之前,請先製作目前原則設定的複本。 這可讓您視需要還原回原始設定。 您可以將目前的原則設定複製到檔案,或擷取設定的螢幕快照,即可執行此動作。 如果您尚未儲存原始設定,您就無法在更新它們之後找到它們。
更新應用程式管理原則
若要實作秘密和憑證限制,您必須更新預設的應用程式管理原則。 此範例提供我們建議的設定,但您可以調整它們以符合您的需求,或如果您不想套用這些設定,甚至省略某些元素。 下列範例示範如何使用建議的設定來更新預設應用程式管理原則:
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 -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。
請確定您已同意 Policy.ReadWrite.All
權限。 然後,執行下列要求來更新租用戶的默認應用程式管理原則。
PATCH https://graph.microsoft.com/v1.0/policies/defaultAppManagementPolicy
Content-Type: application/json
{
"isEnabled": true,
"applicationRestrictions": {
"passwordCredentials": [
{
"restrictionType": "passwordAddition",
"state": "enabled",
"maxLifetime": null,
"restrictForAppsCreatedAfterDateTime": "2025-02-20T10:37:00Z"
},
{
"restrictionType": "customPasswordAddition",
"state": "enabled",
"maxLifetime": null,
"restrictForAppsCreatedAfterDateTime": "2025-05-20T10:37:00Z"
},
{
"restrictionType": "symmetricKeyAddition",
"state": "enabled",
"maxLifetime": null,
"restrictForAppsCreatedAfterDateTime": "2025-02-20T10:37:00Z"
},
],
"keyCredentials": [
{
"restrictionType": "asymmetricKeyLifetime",
"state": "enabled",
"maxLifetime": "P180D",
"restrictForAppsCreatedAfterDateTime": "2025-02-20T10:37:00Z"
}
]
},
}
如需此要求的更多資訊,請參閱 更新的租戶應用程式管理政策。
回應
傳送要求之後,您應該會收到指出原則已成功更新的回應。 回應應該是 204 No Content
狀態代碼,表示要求成功且沒有傳回內容。
HTTP/1.1 204 No Content
確認已套用政策
更新應用程式管理原則之後,您可以再次讀取預設的應用程式管理原則,以確認它已套用,如 先前所示。 回應應該會顯示已更新的原則,其中包含您套用的限制。
如果您是第一次套用管理政策,則 id
欄位應已從 00000000-0000-0000-0000-000000000000
變更為新的 GUID。 這項變更表示政策已制定。
您也可以建立新的應用程式,並檢查是否強制執行限制,以確認原則已套用。 例如,如果您嘗試使用用戶端密碼或對稱密鑰建立新的應用程式,您應該會收到錯誤,指出不允許作業,如下列螢幕快照所示。
相關內容
- 若要瞭解如何自動化秘密輪替,請參閱 針對使用一組驗證認證的資源自動輪替秘密。
- 若要深入瞭解可用的限制和原則設定,請參閱 Microsoft Entra 應用程式管理原則 API 概觀
- 若要深入瞭解貴組織的安全性最佳做法,請參閱設定 Microsoft Entra 以提高安全性。
- 若要深入瞭解使用秘密進行驗證的替代方案,請參閱 將應用程式從秘密型驗證移出