使用元資料安全性通訊協定 (MSP),您可以定義自定義角色型訪問控制 (RBAC) 允許清單,以協助保護元數據服務端點的安全。 允許清單的內容來自稽核記錄。 Azure 計算資源庫中的InVMAccessControlProfile
新資源類型啟用了允許清單。
若要深入瞭解 RBAC 和資源 InVMAccessControlProfile
類型,請參閱 MSP 的進階設定。
允許名單的結構
允許清單包含:
- 身分識別:計算機上的進程。
- 許可權:身分識別所存取的端點。
- 角色:許可權群組。
- 角色指派:角色和獲授與這些角色存取權的身分識別清單。
收集稽核記錄
如果您在Audit
或Enforce
模式中啟用 MSP,客體代理程式(GPA)會在虛擬機(VM)內的下列資料夾中建立稽核日誌:
操作系統 | 稽核記錄位置 |
---|---|
Linux | /var/lib/azure-proxy-agent/ProxyAgent.Connection.log |
窗戶 | C:\WindowsAzure\ProxyAgent\Logs\ProxyAgent.Connection.log |
將記錄轉換成規則
若要建立允許清單,您可以使用自動化方法或手動方法。
自動產生允許清單
您可以使用allowlist產生器工具來產生存取控制規則。 此工具可協助剖析稽核記錄,並提供UI來產生規則。
下載並執行allowlist產生器工具。 在 最新版本頁面上,於 [ 資產] 底下,選取
allowListTool.exe
。此工具會剖析
ProxyAgentConnection
記錄,並在 VM 上顯示目前的許可權和身分識別。建立角色和角色指派:
- 若要建立角色,請選取許可權群組,並將角色命名為描述性名稱。
- 若要建立角色指派,請選取角色和身分識別群組。 這些身分識別可以存取與該角色相關的許可權。 為角色指派提供描述性名稱。
手動建立允許清單
啟用具有 MSP 的 VM,並設置在 Audit
或 Enforce
模式中之後,代理程式會擷取對主機端點發出的所有要求。
在連線記錄中,您可以分析向 Azure 實例元數據服務或 WireServer 端點提出要求的應用程式。
下列範例顯示所擷取 JSON 的格式。
在記錄檔中,您可以識別您想要保護的端點。 這些端點會出現 privileges
在最終 InVMAccessControlProfile
實例中。 您也可以識別應該具有存取權的身分(identities
)。
簡單的規則架構看起來可能類似下列範例。
使用 ARM 範本建立 InVMAccessControlProfile 實例
在 Azure 計算資源庫中建立新的私人資源庫。
使用下列參數建立
InVMAccessControlProfile
定義:- 要儲存的圖庫名稱(來自步驟 1)
- 設定檔名稱
- OS 類型
- 主機端點類型 (WireServer 或實例元數據服務)
建立特定版本。
以下是範例 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"
]
}
]
},