共用方式為


針對在 Key Vault 上實施 Azure 原則的問題進行疑難排解

本文將引導您針對設定 Key Vault 的 Azure 原則時可能發生的一般錯誤進行疑難排解,並建議解決這些錯誤的方法。

關於 Key Vault 的 Azure 原則

Azure 原則是一個治理工具,可讓使用者大規模地稽核和管理其 Azure 環境。 Azure 原則可讓您為 Azure 資源提供防護措施,確保其符合指派的原則規則。 可讓使用者對其 Azure 環境執行稽核、即時強制作業及補救。 使用者可以在合規性儀表板中取得由原則執行的稽核結果,還可以讓他們深入查看符合及不符合規範的資源和元件。

記錄

為了監視原則評估的進行方式,您可以檢閱 Key Vault 記錄。 為 Azure Key Vault 啟用記錄功能,以將資訊儲存在您提供的 Azure 儲存體帳戶中。 如需逐步指引,請參閱如何啟用 Key Vault 記錄

當您啟用記錄功能時,系統會自動建立名為 AzurePolicyEvaluationDetails 的新容器,以在您指定的儲存體帳戶中收集原則相關的記錄資訊。

注意

您應該嚴格規範對監視資料的存取,特別是記錄檔,因為這些檔案可能包含敏感性資訊。 了解如何套用 Azure 內建監視角色並限制存取。

各個 blob 皆會儲存為文字,並格式化為 JSON blob。

讓我們看看金鑰原則的範例記錄項目:金鑰應設定到期日。 此原則會評估金鑰保存庫中的所有金鑰,以及將未設定到期日的金鑰標示為不符合規範。

{
  "ObjectName": "example",
  "ObjectType": "Key",
  "IsComplianceCheck": false,
  "EvaluationDetails": [
    {
      "AssignmentId": "<subscription ID>",
      "AssignmentDisplayName": "[Preview]: Key Vault keys should have an expiration date",
      "DefinitionId": "<definition ID>",
      "DefinitionDisplayName": "[Preview]: Key Vault keys should have an expiration date",
      "Outcome": "NonCompliant",
      "ExpressionEvaluationDetails": [
        {
          "Result": "True",
          "Expression": "type",
          "ExpressionKind": "Field",
          "ExpressionValue": "Microsoft.KeyVault.Data/vaults/keys",
          "TargetValue": "Microsoft.KeyVault.Data/vaults/keys",
          "Operator": "Equals"
        },
        {
          "Result": "True",
          "Expression": "Microsoft.KeyVault.Data/vaults/keys/attributes.expiresOn",
          "ExpressionKind": "Field",
          "ExpressionValue": "******",
          "TargetValue": "False",
          "Operator": "Exists"
        }
      ]
    }
  ]
}

下表列出各個欄位的名稱和其描述:

欄位名稱 描述
ObjectName 物件的名稱
ObjectType 金鑰保存庫物件的類型,憑證、祕密或金鑰
IsComplianceCheck 如果在夜間稽核期間進行評估,則為 True;如果在建立或更新資源期間進行評估,則為 False
AssignmentId 原則指派的識別碼
AssignmentDisplayName 原則指派的易記名稱
DefinitionId 指派的原則定義識別碼
DefinitionDisplayName 指派的原則定義易記名稱
結果 原則評估的結果
ExpressionEvaluationDetails 原則評估期間所執行評估的詳細資料
ExpressionValue 原則評估期間指定欄位的實際值
TargetValue 指定欄位的預期值

常見問題集

金鑰保存庫復原遭到 Azure 原則封鎖

其中一個原因可能是您的訂閱 (或管理群組) 具有封鎖復原的原則。 修正方式是調整原則,使其不會在復原保存庫時套用。

如果您在復原時因為內建原則而看到錯誤類型 RequestDisallowedByPolicy,請確定您使用的是最新版本

如果您使用自己的邏輯來建立自訂原則,以下是可用於要求虛刪除的原則部分範例。 復原已虛刪除的保存庫時,會使用與建立或更新保存庫相同的 API。 不過,其具有值為 "recover" 的單一 "createMode" 屬性,而不會指定保存庫的屬性。 保存庫會以其刪除時的任何屬性還原。 除非已設定特定屬性,否則會封鎖要求的原則也會封鎖已虛刪除保存庫的復原。 修正方法是包含一個子句,使原則忽略 "createMode" 為 "recover" 的要求:

您會看到其包含一個子句,使原則只在 "createMode" 不等於 "recover" 時套用:


    "policyRule": { 
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.KeyVault/vaults"
          }, 
          {
            "not": {
              "field": "Microsoft.Keyvault/vaults/createMode",
              "equals": "recover"
            }
          },
          {
            "anyOf": [
              {
                "field": "Microsoft.KeyVault/vaults/enableSoftDelete",
                "exists": "false"
              },
              {
                "field": "Microsoft.KeyVault/vaults/enableSoftDelete",
                "equals": "false"
              }
            ]
          }
        ]
      },
      "then": {
        "effect": "[parameters('effect')]"
      }
    }

在 Key Vault 上刪除 Azure 原則指派時發生延遲

Microsoft.KeyVault.Datat:已刪除的原則指派最多可能需要 24 小時的時間才會停止實施。

降低:將原則指派的功效更新為「已停用」。

透過 ARM 範本建立祕密時遺漏原則評估

評估祕密建立的資料平面原則,不適用於秘密建立時透過 ARM 範本建立的祕密。 過了 24 小時之後,就會自動進行合規性檢查,屆時即可檢閱合規性結果。

下一步