Skip to content

[QUESTION] Is "could not restrict the ACL"-error expected after a --configure-network? #2093

Closed

Description

@ghauan

Which component is your question about?

Darling

Performance Monitor Version

3.3.0

Is your question about how it works, or the results?

Setup / installation

What's your question?

I am trying to open up for using the viewer from another VM, and used the --configure-network to do this. That process made a backup of the darling.json-file before writing changes. When the services was restarted, I got the following error:

2026-08-07 10:13:39.302 [ERROR] [DarlingWorker] Could not restrict the ACL on config backup C:\PerformanceMonitorDarling\darling.json.bak-20260807-094518 (Attempted to perform an unauthorized operation.). It carries the same DPAPI-protected credentials as the live config. From an ELEVATED prompt: icacls "C:\PerformanceMonitorDarling\darling.json.bak-20260807-094518" /inheritance:d then icacls "C:\PerformanceMonitorDarling\darling.json.bak-20260807-094518" /remove:g "BUILTIN\Users" then icacls "C:\PerformanceMonitorDarling\darling.json.bak-20260807-094518" /grant "NT SERVICE\PerformanceMonitor Darling:(F)"

I then followed the suggestions in the error message to run the different icacls-commands, and they ran with success. But when restarting the service, this same error message still comes up.

Does it have any impact of running the application?

Another question you might know in the same go: When the store is set up this way to listen over the LAN (local firewall has been set and our network team has opened in the network firewall), should I then be able to get a positive feedback in a Test-netconnection-call? (Will the service answer?)

Additional Context

I have not yet run the --print-viewer-connection

Activity

  1. erikdarlingdata commented on Aug 7, 2026

    @erikdarlingdata
    Owner

    Both good questions:

    1. The recurring ACL error — no impact, and your file is actually already secure. Here's the mechanics: on every service start, a hardening sweep (#1816) re-attempts an ACL rewrite on every darling.json.bak-* it finds. Your icacls commands worked — the proof is in your own log: the sweep is followed by an independent check that logs a CRITICAL "backup is READABLE by Users" line when a backup is actually exposed, and you're not seeing that line. What keeps failing is the rewrite attempt itself: rewriting an ACL requires ownership (or more than the service has), and your manual fix granted the service rights on a file that's still owned by the admin account that ran the wizard — so the sweep throws "unauthorized" before it can notice there's nothing left to fix. It's log noise about an already-closed exposure, not a security problem and not an operational one.

    Two clean ways to silence it today:

    • Simplest: delete the backup once you've confirmed the new config works — it's purely a rollback artifact: del "C:\PerformanceMonitorDarling\darling.json.bak-20260807-094518" (elevated).
    • Or transfer ownership so the sweep's rewrite succeeds: icacls "C:\PerformanceMonitorDarling\darling.json.bak-20260807-094518" /setowner "NT SERVICE\PerformanceMonitor Darling" (elevated).

    And I'm fixing the underlying annoyance — the sweep should check whether the exposure is already closed before attempting the rewrite, so an already-hardened backup never errors again. That'll be in the next release.

    2. Test-NetConnection to the exposed store — yes, with one catch. PostgreSQL accepts the TCP connection first and enforces authentication afterwards, so a plain Test-NetConnection <host> -Port 5641 returns TcpTestSucceeded: True when the path is open. The catch: the firewall rule --configure-network creates is scoped to the allowFrom CIDR you entered — a TNC from any machine outside that CIDR fails at the TCP level by design. So run the test from the actual viewer VM (inside the allowed range). If it fails from there: check the Windows rule's scope matches the VM's IP, and that your network team's rule covers the same source range.

  2. added a commit that references this issue on Aug 7, 2026
  3. erikdarlingdata commented on Aug 7, 2026

    @erikdarlingdata
    Owner

    The underlying fix is merged for the next release: the startup sweep now checks whether the exposure is already closed and skips the file entirely — so a hand-hardened backup (your exact situation) never errors again. The two silencing options above work today on 3.3.0.

  4. erikdarlingdata commented on Aug 7, 2026

    @erikdarlingdata
    Owner

    Closing: the fix (skip already-hardened backups in the startup sweep) is merged and ships in 3.4.0; the workarounds above cover 3.3.0 meanwhile. The Test-NetConnection question was answered above — reopen if the scoped-firewall explanation doesn't match what you see from the viewer VM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions