共用方式為


將稽核記錄轉換為白名單

使用元資料安全性通訊協定 (MSP),您可以定義自定義角色型訪問控制 (RBAC) 允許清單,以協助保護元數據服務端點的安全。 允許清單的內容來自稽核記錄。 Azure 計算資源庫中的InVMAccessControlProfile新資源類型啟用了允許清單。

若要深入瞭解 RBAC 和資源 InVMAccessControlProfile 類型,請參閱 MSP 的進階設定

允許名單的結構

允許清單包含:

  • 身分識別:計算機上的進程。
  • 許可權:身分識別所存取的端點。
  • 角色:許可權群組。
  • 角色指派:角色和獲授與這些角色存取權的身分識別清單。

收集稽核記錄

如果您在AuditEnforce模式中啟用 MSP,客體代理程式(GPA)會在虛擬機(VM)內的下列資料夾中建立稽核日誌:

操作系統 稽核記錄位置
Linux /var/lib/azure-proxy-agent/ProxyAgent.Connection.log
窗戶 C:\WindowsAzure\ProxyAgent\Logs\ProxyAgent.Connection.log

將記錄轉換成規則

若要建立允許清單,您可以使用自動化方法或手動方法。

自動產生允許清單

您可以使用allowlist產生器工具來產生存取控制規則。 此工具可協助剖析稽核記錄,並提供UI來產生規則。

  1. 下載並執行allowlist產生器工具。 在 最新版本頁面上,於 [ 資產] 底下,選取 allowListTool.exe

    此工具會剖析 ProxyAgentConnection 記錄,並在 VM 上顯示目前的許可權和身分識別。

  2. 建立角色和角色指派:

    • 若要建立角色,請選取許可權群組,並將角色命名為描述性名稱。
    • 若要建立角色指派,請選取角色和身分識別群組。 這些身分識別可以存取與該角色相關的許可權。 為角色指派提供描述性名稱。

手動建立允許清單

啟用具有 MSP 的 VM,並設置在 AuditEnforce 模式中之後,代理程式會擷取對主機端點發出的所有要求。

在連線記錄中,您可以分析向 Azure 實例元數據服務或 WireServer 端點提出要求的應用程式。

線上記錄的螢幕快照。

下列範例顯示所擷取 JSON 的格式。

已擷取 JSON 的稽核記錄螢幕快照。

在記錄檔中,您可以識別您想要保護的端點。 這些端點會出現 privileges 在最終 InVMAccessControlProfile 實例中。 您也可以識別應該具有存取權的身分(identities)。

簡單的規則架構看起來可能類似下列範例。

簡單規則架構的螢幕快照。

使用 ARM 範本建立 InVMAccessControlProfile 實例

  1. 在 Azure 計算資源庫中建立新的私人資源庫

  2. 使用下列參數建立 InVMAccessControlProfile 定義:

    • 要儲存的圖庫名稱(來自步驟 1)
    • 設定檔名稱
    • OS 類型
    • 主機端點類型 (WireServer 或實例元數據服務)
  3. 建立特定版本。

以下是範例 InVMAccessControlProfile 實例:

"properties": {
    "mode": "Enforce",
    "defaultAccess": "Allow",
    "rules": {
      "privileges": [
        {
          "name": "GoalState",
          "path": "/machine",
          "queryParameters": {
            "comp": "goalstate"
          }
        }
      ],
      "roles": [
        {
          "name": "Provisioning",
          "privileges": [
            "GoalState"
          ]
        },
        {
          "name": "ManageGuestExtensions",
          "privileges": [
            "GoalState"
          ]
        },
        {
          "name": "MonitoringAndSecret",
          "privileges": [
            "GoalState"
          ]
        }
      ],
      "identities": [
        {
          "name": "WinPA",
          "userName": "SYSTEM",
          "exePath": "C:\\Windows\\System32\\cscript.exe"
        },
        {
          "name": "GuestAgent",
          "userName": "SYSTEM",
          "processName": "WindowsAzureGuestAgent.exe"
        },
        {
          "name": "WaAppAgent",
          "userName": "SYSTEM",
          "processName": "WaAppAgent.exe"
        },
        {
          "name": "CollectGuestLogs",
          "userName": "SYSTEM",
          "processName": "CollectGuestLogs.exe"
        },
        {
          "name": "AzureProfileExtension",
          "userName": "SYSTEM",
          "processName": "AzureProfileExtension.exe"
        },
        {
          "name": "AzurePerfCollectorExtension",
          "userName": "SYSTEM",
          "processName": "AzurePerfCollectorExtension.exe"
        },
        {
          "name": "WaSecAgentProv",
          "userName": "SYSTEM",
          "processName": "WaSecAgentProv.exe"
        }
      ],
      "roleAssignments": [
        {
          "role": "Provisioning",
          "identities": [
            "WinPA"
          ]
        },
        {
          "role": "ManageGuestExtensions",
          "identities": [
            "GuestAgent",
            "WaAppAgent",
            "CollectGuestLogs"
          ]
        },
        {
          "role": "MonitoringAndSecret",
          "identities": [
            "AzureProfileExtension",
            "AzurePerfCollectorExtension",
            "WaSecAgentProv"
          ]
        }
      ]
    },