Sicherheit von Erweiterungen
Dieser Artikel beschreibt die Grundlagen der VM-Erweiterungen für Server mit Azure Arc-Unterstützung und erläutert, wie die Erweiterungseinstellungen angepasst werden können.
Grundlagen der Erweiterungen
VM-Erweiterungen für Server mit Azure Arc-Unterstützung sind optionale Add-ons, die weitere Funktionen wie Überwachung, Patchverwaltung und Skriptausführung ermöglichen. Erweiterungen werden von Microsoft und ausgewählten Drittanbietern auf dem Azure Marketplace veröffentlicht und in von Microsoft verwalteten Speicherkonten gespeichert. Alle Erweiterungen werden im Rahmen des Veröffentlichungsprozesses auf Schadsoftware gescannt. Die Erweiterungen für Server mit Azure Arc-Unterstützung sind identisch mit denen, die für Azure VMs verfügbar sind, um die Konsistenz in Ihren Betriebsumgebungen zu gewährleisten.
Erweiterungen werden direkt von Azure Storage (*.blob.core.windows.net
) heruntergeladen, wenn sie installiert oder aktualisiert werden, es sei denn, Sie haben private Endpunkte konfiguriert. Die Speicherkonten ändern sich regelmäßig und können nicht im Voraus bestimmt werden. Wenn private Endpunkte verwendet werden, werden Erweiterungen stattdessen über die regionale URL für den Azure Arc-Dienst vermittelt.
Eine digital signierte Katalogdatei wird separat vom Erweiterungspaket heruntergeladen und verwendet, um die Integrität jeder Erweiterung zu überprüfen, bevor der Erweiterungsmanager das Erweiterungspaket öffnet oder ausführt. Wenn die heruntergeladene ZIP-Datei für die Erweiterung nicht mit dem Inhalt der Katalogdatei übereinstimmt, wird der Erweiterungsvorgang abgebrochen.
Erweiterungen können Einstellungen zur Anpassung oder Konfiguration der Installation enthalten, z. B. Proxy-URLs oder API-Schlüssel zur Verbindung eines Überwachungsagenten mit seinem Clouddienst. Es gibt zwei Arten von Erweiterungseinstellungen: normale Einstellungen und geschützte Einstellungen. Geschützte Einstellungen werden nicht in Azure persistiert und im Ruhezustand auf Ihrem lokalen Computer verschlüsselt.
Alle Erweiterungsvorgänge werden von Azure durch einen API-Aufruf, eine CLI-, PowerShell- oder Portalaktion ausgelöst. Dieses Design stellt sicher, dass jede Aktion zur Installation, Aktualisierung oder zum Upgrade einer Erweiterung auf einem Server im Azure-Aktivitätsprotokoll protokolliert wird. Der Azure Connected Machine-Agent ermöglicht das lokale Entfernen von Erweiterungen zur Fehlerbehebung und Bereinigung. Wenn die Erweiterung jedoch lokal entfernt wird und der Dienst weiterhin erwartet, dass die Erweiterung auf dem Computer installiert ist, wird sie bei der nächsten Synchronisierung des Erweiterungsmanagers mit Azure erneut installiert.
Skriptausführung
Der Erweiterungsmanager kann verwendet werden, um Skripte auf Computern auszuführen, die die benutzerdefinierte Skripterweiterung oder den Ausführungsbefehl verwenden. Standardmäßig werden diese Skripte im Benutzerkontext des Erweiterungsmanagers – „Local System“ unter Windows oder „Root§ unter Linux – ausgeführt, d. h. diese Skripte haben uneingeschränkten Zugriff auf den Computer. Wenn Sie diese Funktionen nicht nutzen wollen, können Sie sie mit einer Positiv- oder Sperrliste blockieren. Ein Beispiel wird im nächsten Abschnitt bereitgestellt.
Sicherheitskontrollen für lokale Agents
Ab Agent-Version 1.16 können Sie optional die Erweiterungen einschränken, die auf Ihrem Server installiert werden können, und die Gastkonfiguration deaktivieren. Diese Steuerelemente können nützlich sein, wenn Server zu einem einzigen Zweck mit Azure verbunden werden, z. B. zum Sammeln von Ereignisprotokollen, ohne dass andere Verwaltungsfunktionen auf dem Server genutzt werden können.
Diese Sicherheitskontrollen können nur durch Ausführen eines Befehls auf dem Server selbst konfiguriert werden und können nicht über Azure geändert werden. Dieser Ansatz behält die Absicht des Serveradministrators bei, wenn Remoteverwaltungsszenarien mit Azure Arc aktiviert werden, bedeutet aber auch, dass das Ändern der Einstellung schwieriger ist, wenn Sie sie später ändern möchten. Dieses Feature ist für Server mit vertraulichen Daten vorgesehen (z. B. Active Directory-Domänencontroller, Server, die Zahlungsdaten verarbeiten, oder Server, die strengen Maßnahmen zur Änderungssteuerung unterliegen). In den meisten anderen Fällen ist es nicht erforderlich, diese Einstellungen zu ändern.
Positivlisten und Sperrlisten
Der Azure Connected Machine-Agent unterstützt eine Positiv- und eine Sperrliste, um einzuschränken, welche Erweiterungen auf Ihrer Maschine installiert werden können. Positivlisten sind exklusiv, was bedeutet, dass nur die spezifischen Erweiterungen, die Sie in die Liste aufnehmen, installiert werden können. Sperrlisten sind exklusiv, d. h. alles außer diesen Erweiterungen kann installiert werden. Positivlisten sind Sperrlisten vorzuziehen, da sie von vornherein alle neuen Erweiterungen blockieren, die in Zukunft verfügbar werden. Positivlisten und Sperrlisten werden lokal pro Server konfiguriert. Dadurch wird sichergestellt, dass keine benutzende Person, nicht einmal eine Person mit Eigentümer- oder globalen Administratorrechten in Azure, Ihre Sicherheitsregeln außer Kraft setzen kann, indem sie versucht, eine nicht genehmigte Erweiterung zu installieren. Wenn jemand versucht, eine nicht genehmigte Erweiterung zu installieren, verweigert der Erweiterungsmanager die Installation und kennzeichnet den Bericht über die Installation der Erweiterung als Fehlschlag für Azure. Positivlisten und Sperrlisten können jederzeit nach der Installation des Agenten konfiguriert werden, auch bevor der Agent mit Azure verbunden wird.
Wenn keine Positivliste oder Sperrliste auf dem Agenten konfiguriert ist, sind alle Erweiterungen erlaubt.
Die sicherste Option besteht darin, die Erweiterungen, die Sie voraussichtlich installieren, ausdrücklich zuzulassen. Alle Erweiterungen, die nicht in der Positivliste enthalten sind, werden automatisch blockiert. Führen Sie den folgenden Befehl auf jedem Server aus, um den Azure Connected Machine-Agent so zu konfigurieren, dass nur der Azure Monitor-Agent für Linux zugelassen werden:
azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"
Hier ist eine beispielhafte Sperrliste, die alle Erweiterungen blockiert, die in der Lage sind, beliebige Skripte auszuführen:
azcmagent config set extensions.blocklist “Microsoft.Cplat.Core/RunCommandHandlerWindows, Microsoft.Cplat.Core/RunCommandHandlerLinux,Microsoft.Compute/CustomScriptExtension,Microsoft.Azure.Extensions/CustomScript,Microsoft.Azure.Automation.HybridWorker/HybridWorkerForWindows,Microsoft.Azure.Automation.HybridWorkerForLinux,Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent, Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux”
Geben Sie Erweiterungen mit Herausgeber und Typ an, getrennt durch einen Schrägstrich /
. Sehen Sie sich die Liste der am häufigsten verwendeten Erweiterungen in der Dokumentation an, oder listen Sie im Portal, in Azure PowerShell oder Azure CLI die VM-Erweiterungen auf, die bereits auf Ihrem Server installiert sind.
In der Tabelle wird das Verhalten beim Ausführen eines Erweiterungsvorgangs für einen Agent beschrieben, für den eine Positiv- oder Sperrliste konfiguriert ist.
Vorgang | In der Positivliste | In der Sperrliste | Sowohl in der Positivliste als auch der Sperrliste | In keiner der Liste, Positivliste ist jedoch konfiguriert |
---|---|---|---|---|
Installieren der Erweiterung | Zulässig | Blockiert | Blockiert | Blockiert |
Aktualisieren (Neukonfigurieren) der Erweiterung | Zulässig | Blockiert | Blockiert | Blockiert |
Upgrade der Erweiterung | Zulässig | Blockiert | Blockiert | Blockiert |
Löscht der Erweiterung | Zulässig | Zulässig | Zulässig | Zulässig |
Wichtig
Wenn eine Erweiterung bereits auf Ihrem Server installiert ist, bevor Sie eine Positivliste oder Sperrliste konfigurieren, wird sie nicht automatisch entfernt. Es liegt in Ihrer Verantwortung, die Erweiterung aus Azure zu löschen, um sie vollständig vom Computer zu entfernen. Löschanforderungen werden für dieses Szenario immer akzeptiert. Nach dem Löschen wird über die Positiv- oder Sperrliste festgelegt, ob zukünftige Installationsversuche zugelassen werden.
Seit der Version 1.35 des Agenten gibt es einen speziellen Wert für die Positivliste Allow/None
, der den Erweiterungsmanager anweist, die Installation von Erweiterungen nicht zuzulassen. Dies ist die empfohlene Konfiguration, wenn Azure Arc zur Bereitstellung von Windows Server 2012 Extended Security Updates (ESU) verwendet wird und keine anderen Erweiterungen verwendet werden sollen.
azcmagent config set extensions.allowlist "Allow/None"
Azure-Richtlinien können auch verwendet werden, um einzuschränken, welche Erweiterungen installiert werden können. Azure-Richtlinien haben den Vorteil, dass sie in der Cloud konfigurierbar sind und nicht auf jedem einzelnen Server geändert werden müssen, wenn Sie die Liste der zugelassenen Erweiterungen ändern möchten. Jede Person, die berechtigt ist, Richtlinienzuweisungen zu ändern, kann diesen Schutz jedoch außer Kraft setzen oder aufheben. Wenn Sie sich für die Verwendung von Azure-Richtlinien zur Einschränkung von Erweiterungen entscheiden, stellen Sie sicher, dass Sie überprüfen, welche Konten in Ihrer Organisation die Berechtigung haben, Richtlinienzuweisungen zu bearbeiten, und dass geeignete Maßnahmen zur Änderungskontrolle vorhanden sind.
Bewährte Methoden für gesperrte Computer
Beim Konfigurieren des Azure Connected Machine-Agents mit einem reduzierten Satz von Funktionen ist es wichtig, die Mechanismen zu berücksichtigen, die jemand verwenden könnte, um diese Einschränkungen zu entfernen, und entsprechende Kontrollen zu implementieren. Alle, die Befehle als Administrator oder Root-Benutzer auf dem Server ausführen können, können die Konfiguration des Azure Connected Machine-Agents ändern. Erweiterungen und Gastkonfigurationsrichtlinien werden in privilegierten Kontexten auf Ihrem Server ausgeführt und könnten daher möglicherweise die Agent-Konfiguration ändern. Wenn Sie die Sicherheitskontrollen des lokalen Agents anwenden, um den Agent zu sperren, empfiehlt Microsoft die folgenden bewährten Methoden, um sicherzustellen, dass ausschließlich lokale Serveradministratoren Änderungen an der Agentkonfiguration vornehmen können:
- Verwenden Sie nach Möglichkeit für Erweiterungen Positivlisten anstelle von Sperrlisten.
- Nehmen Sie die benutzerdefinierte Skripterweiterung nicht in die Positivliste für Erweiterungen auf, um die Ausführung beliebiger Skripts zu verhindern, die die Agentkonfiguration ändern könnten.
- Deaktivieren Sie die Gastkonfiguration, um die Verwendung von benutzerdefinierten Gastkonfigurationsrichtlinien zu verhindern, die die Agentkonfiguration ändern könnten.
Beispielkonfiguration für Überwachungs- und Sicherheitsszenarien
Es ist üblich, Azure Arc zu verwenden, um Ihre Server mit Azure Monitor und Microsoft Sentinel zu überwachen und sie mit Microsoft Defender für Cloud zu schützen. Dieser Abschnitt enthält Beispiele dafür, wie Sie den Agenten so sperren können, dass er nur Überwachungs- und Sicherheitsszenarien unterstützt.
Nur Azure Monitor Agent
Führen Sie auf Ihren Windows-Servern die folgenden Befehle in einer Befehlskonsole mit erhöhten Rechten aus:
azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorWindowsAgent"
azcmagent config set guestconfiguration.enabled false
Führen Sie auf Ihren Linux-Servern die folgenden Befehle aus:
sudo azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"
sudo azcmagent config set guestconfiguration.enabled false
Nur Log Analytics und Abhängigkeit (Azure Monitor VM Insights)
Diese Konfiguration gilt für die älteren Log Analytics-Agents und den Abhängigkeits-Agent.
Führen Sie auf Ihren Windows-Servern die folgenden Befehle in einer Konsole mit erhöhten Rechten aus:
azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Microsoft.Azure.Monitoring.DependencyAgent/DependencyAgentWindows"
azcmagent config set guestconfiguration.enabled false
Führen Sie auf Ihren Linux-Servern die folgenden Befehle aus:
sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Microsoft.Azure.Monitoring.DependencyAgent/DependencyAgentLinux"
sudo azcmagent config set guestconfiguration.enabled false
Überwachung und Sicherheit
Microsoft Defender für Cloud stellt Erweiterungen auf Ihrem Server bereit, um anfällige Software auf Ihrem Server zu identifizieren und Microsoft Defender für Endpoint zu aktivieren (sofern konfiguriert). Microsoft Defender für Cloud verwendet im Rahmen seiner Funktion zur Einhaltung gesetzlicher Bestimmungen ebenfalls die Gastkonfiguration. Da eine benutzerdefinierte Gastkonfigurationszuweisung verwendet werden könnte, um die Einschränkungen für den Agent rückgängig zu machen, sollten Sie sorgfältig prüfen, ob Sie die Funktion zur Einhaltung gesetzlicher Bestimmungen benötigen und daher die Gastkonfiguration auf dem Computer aktiviert werden muss.
Führen Sie auf Ihren Windows-Servern die folgenden Befehle in einer Befehlskonsole mit erhöhten Rechten aus:
azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Qualys/WindowsAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Windows,Microsoft.Azure.AzureDefenderForSQL/AdvancedThreatProtection.Windows"
azcmagent config set guestconfiguration.enabled true
Führen Sie auf Ihren Linux-Servern die folgenden Befehle aus:
sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Qualys/LinuxAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Linux"
sudo azcmagent config set guestconfiguration.enabled true
Agent-Modi
Eine einfachere Möglichkeit zum Konfigurieren lokaler Sicherheitssteuerungen für Überwachungs- und Sicherheitsszenarien ist die Verwendung des Überwachungsmodus, der mit Agent-Version 1.18 und neuer verfügbar ist. Modi sind von Microsoft verwaltete vordefinierte Konfigurationen der Erweiterungspositivliste und des Gastkonfigurations-Agent. Wenn neue Erweiterungen verfügbar werden, die Überwachungsszenarien aktivieren, aktualisiert Microsoft die Positivlisten- und Agent-Konfiguration, um die neue Funktionalität entsprechend einzuschließen oder auszuschließen.
Sie können zwischen zwei Modi wählen:
- vollständig: der Standardmodus. Damit können alle Agent-Funktionen aktiviert werden.
- Überwachung: ein eingeschränkter Modus, der den Gastkonfigurationsrichtlinien-Agent deaktiviert und nur die Verwendung von Erweiterungen im Zusammenhang mit Überwachung und Sicherheit ermöglicht.
Führen Sie den folgenden Befehl aus, um den Überwachungsmodus zu aktivieren:
azcmagent config set config.mode monitor
Sie können den aktuellen Modus des Agent und zulässige Erweiterungen mit dem folgenden Befehl überprüfen:
azcmagent config list
Im Überwachungsmodus können Sie die Erweiterungspositivliste oder die Sperrliste nicht ändern. Wenn Sie eine Liste ändern müssen, ändern Sie den Agent wieder in den vollständigen Modus, und geben Sie Ihre eigene Positivliste und Sperrliste an.
Führen Sie den folgenden Befehl aus, um den Agent wieder in den vollständigen Modus zu ändern:
azcmagent config set config.mode full
Deaktivieren des Erweiterungsmanagers
Wenn Sie keine Erweiterungen mit Azure Arc verwenden müssen, können Sie den Erweiterungsmanager auch ganz deaktivieren. Sie können den Erweiterungsmanager mit dem folgenden Befehl deaktivieren (lokal auf jedem Computer ausführen):
azcmagent config set extensions.enabled false
Das Deaktivieren des Erweiterungs-Managers entfernt keine bereits auf Ihrem Server installierten Erweiterungen. Erweiterungen, die in eigenen Windows- oder Linux-Diensten gehostet werden, z. B. der Log Analytics-Agent, werden möglicherweise weiterhin ausgeführt, auch wenn der Erweiterungs-Manager deaktiviert ist. Andere Erweiterungen, die vom Erweiterungs-Manager selbst gehostet werden, wie der Azure Monitor-Agent, werden nicht ausgeführt, wenn der Erweiterungs-Manger deaktiviert ist. Sie sollten alle Erweiterungen entfernen, bevor Sie den Erweiterungs-Manager deaktivieren, um sicherzustellen, dass keine Erweiterungen weiterhin auf dem Server ausgeführt werden.