BizTalk Checkmk Pulse - ACC Berechtigungsfreigabe
Stand: 29.07.2026

BEFUND
======

Host: AV23AGPWBIO1
Lokale Identitaet: NT AUTHORITY\SYSTEM (LocalSystem)
Netzwerkidentitaet: BEW\AV23AGPWBIO1$
Fehler: COMException HRESULT=0x80131904
Innerer Fehler: Login failed for user 'BEW\AV23AGPWBIO1$'

Der lokale BizTalk-WMI-Namespace ist erreichbar. Der BizTalk-WMI-Provider wird
aber bei seinem SQL-Zugriff als Maschinenkonto abgewiesen. Deshalb sind
Platform, Host Instances, Runtime Artifacts und Suspended Instances UNKNOWN.
BizTalk SQL Access kann ohne MSBTS_GroupSetting keine Ziele ermitteln.

Keine DCOM-, Firewall- oder WMI-Namespace-Rechte erweitern. Keinen direkten
SQL-Login, keine manuellen BizTalk-Datenbankrollen und kein sysadmin fuer das
Maschinenkonto anlegen.

WICHTIG ZUR NEUEN VERSION
=========================

Die neue EXE repariert keine Berechtigungen. Sie erkennt den eingebetteten
SQL-Loginfehler korrekt, zeigt BEW\AV23AGPWBIO1$ und klassifiziert die
Folgediagnose als Berechtigungsproblem. Ohne die nachfolgende Freigabe bleiben
die betroffenen Checks auch mit der neuen Version UNKNOWN.

Die alte Version kann nach korrekter Freigabe grundsaetzlich funktionieren.
Empfohlen ist die neue Version zusammen mit der Gruppenfreigabe, weil sie
Fehlerursache, Konto und Massnahme eindeutig anzeigt.

FREIGABE
========

1. Exakte Operator-Gruppe ermitteln

In der BizTalk Administration Console:

  BizTalk Group > Properties > General > BizTalk Operators Group

Nicht ungeprueft den Standardnamen verwenden. Mit einem bereits berechtigten
Konto ist alternativ folgende Abfrage moeglich:

  Get-CimInstance -Namespace root/MicrosoftBizTalkServer `
      -ClassName MSBTS_GroupSetting |
      Select-Object Name, BizTalkOperatorGroup, MgmtDbServerName, MgmtDbName

2. Computerobjekt durch einen AD-Administrator aufnehmen

  Import-Module ActiveDirectory
  $computer = Get-ADComputer -Identity 'AV23AGPWBIO1'
  Add-ADGroupMember `
      -Identity '<EXAKTE_BIZTALK_OPERATOR_GRUPPE>' `
      -Members $computer `
      -WhatIf

Ziele kontrollieren und danach denselben Add-ADGroupMember-Befehl ohne
-WhatIf ausfuehren.

Mitgliedschaft pruefen:

  Get-ADPrincipalGroupMembership -Identity 'AV23AGPWBIO1' |
      Select-Object Name, SamAccountName

3. Neue Gruppenzugehoerigkeit aktivieren

AD-Replikation abwarten. Bevorzugt den BizTalk-Server in einem Wartungsfenster
neu starten. Alternativ in einer administrativen Shell:

  klist purge -li 0x3e7

Danach den zuvor eindeutig ermittelten Checkmk-Agent-Dienst neu starten. Falls
die neue Mitgliedschaft nicht wirksam wird, den Server neu starten.

4. Im echten Checkmk-Kontext verifizieren

  & "C:\Program Files (x86)\checkmk\service\cmk-agent-ctl.exe" dump |
      Select-String `
          -Pattern "BizTalk|Login failed|Wmi/Permission|Sql/Permission|UNKNOWN" `
          -Context 0,1

Erwartetes Ergebnis:

- BizTalk Platform ist OK und zeigt operator_group=<exakte Gruppe>.
- BizTalk SQL Access zeigt targets=2, available=2,
  discovery_complete=True.
- Host Instances, Runtime Artifacts und Suspended Instances sind nicht mehr
  wegen WMI-/SQL-Berechtigungen UNKNOWN.
- Kein Login failed fuer BEW\AV23AGPWBIO1$.

Der separate Event-Log-Service zeigte im Screenshot zwei Fehler und sechs
Warnungen. Diese Ereignisse bleiben nach der Berechtigungsfreigabe fachlich zu
pruefen.

WENN ES DANACH WEITERHIN SCHEITERT
==================================

Normalerweise wurde die konfigurierte BizTalk-Operator-Gruppe bereits durch die
BizTalk-Konfiguration am SQL Server eingerichtet. Das Maschinenkonto erbt ueber
seine AD-Gruppenmitgliedschaft die Rolle BTS_OPERATORS und benoetigt keinen
eigenen SQL-Login.

Bleibt "Login failed" trotz bestaetigter Mitgliedschaft, AD-Replikation und
Token-Erneuerung bestehen, prueft die SQL-Administration read-only:

  SELECT name, type_desc
  FROM sys.server_principals
  WHERE name = N'BEW\<EXAKTE_BIZTALK_OPERATOR_GRUPPE>';

Danach jeweils in BizTalkMgmtDb und BizTalkMsgBoxDb:

  SELECT
      member_principal.name AS member_name,
      role_principal.name AS role_name
  FROM sys.database_role_members AS drm
  JOIN sys.database_principals AS role_principal
      ON role_principal.principal_id = drm.role_principal_id
  JOIN sys.database_principals AS member_principal
      ON member_principal.principal_id = drm.member_principal_id
  WHERE member_principal.name =
      N'BEW\<EXAKTE_BIZTALK_OPERATOR_GRUPPE>'
    AND role_principal.name = N'BTS_OPERATORS';

Fehlt die Abbildung, gleichen BizTalk- und SQL-Administration sie mit der
BizTalk-Konfiguration ab und reparieren sie fuer die konfigurierte Gruppe.
Keinen Einzel-Login oder Sonderrollen fuer BEW\AV23AGPWBIO1$ als Umgehung
anlegen.

SICHERHEIT
==========

Die Gruppenmitgliedschaft des Computerobjekts steht allen Diensten zur
Verfuegung, die auf AV23AGPWBIO1 als LocalSystem laufen und auf
Netzwerkressourcen zugreifen. Mit Security und BizTalk-Betrieb abstimmen.

Ist dies nicht akzeptabel, ist ein separater Collector unter einem dedizierten
gMSA-/Dienstkonto mit BizTalk-Operator-Rechten die sauberere Architektur. Nicht
allein fuer dieses Plugin die Identitaet des gesamten Checkmk-Agent-Dienstes
aendern.

QUELLEN
=======

https://learn.microsoft.com/en-us/windows/win32/services/localsystem-account
https://learn.microsoft.com/en-us/entra/architecture/service-accounts-computer
https://learn.microsoft.com/en-us/biztalk/core/windows-groups-and-user-accounts-in-biztalk-server
https://learn.microsoft.com/en-us/biztalk/core/access-control-for-administrative-roles
https://learn.microsoft.com/en-us/biztalk/core/how-to-modify-group-properties
https://learn.microsoft.com/en-us/powershell/module/activedirectory/add-adgroupmember
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/klist
