Artica Wiki

IT charter in the RDS Proxy session

Show an IT charter that users must accept in the RDS Proxy session before reaching a server

The RDS Proxy can show an IT charter to every user before they reach a server.
The user reads the text and clicks I accept or I decline.
Declining closes the session.
Each answer is written to the access events.

Benefits

How it works

  1. The user opens a Remote Desktop connection to the Artica appliance.
  2. The gateway checks the account, the source network, the schedule and, when the policy asks for it, the second factor.
  3. The charter appears in a dialog box.
    A long text scrolls inside the box.
  4. The user clicks I accept.
    The list of targets opens.
  5. Or the user clicks I decline.
    The session closes.

The IT charter in the Remote Desktop session

The charter appears after authentication.
The line breaks of the text are kept.

The charter is shown at every connection.
It also applies to a direct connection with the user/computer syntax.
When mstsc sends saved credentials, the login screen is skipped but the charter is still shown.

Requirements

Set up the charter

  1. Open RDS Proxy » Status and click the Template tab.
  2. Scroll down to the Usage charter section.
  3. Click the pencil of Ask users to accept the charter or Charter text.

The Usage charter section of the Template tab

The section shows the state of the charter, the start of the text, its length and its fingerprint.

  1. Turn on Ask users to accept the charter.
  2. Type or paste the text in Charter text.
  3. Click Apply.

The Usage charter dialog

The text is saved as typed.
It applies from the next connection.

Rules for the text

Rule Detail
Length 8000 characters at most.
Format Plain text.
Line breaks are kept.
A tab becomes four spaces.
Refused characters Control characters and invisible formatting characters, such as right-to-left marks and zero-width spaces.
They could hide or reverse part of the text on screen.
Empty text An enabled charter needs a text.
The console refuses to save it otherwise.
Disabled charter The text is kept as a draft.
Turning the charter on again shows the same text.

The same text applies to the whole gateway.
It does not change with the policy or the target.

What the user sees

After I accept, the list of targets opens as usual.

The list of targets after accepting the charter

The charter is accepted.
The user picks a target.

After I decline, the gateway shows why the connection ends, then closes it.

The connection closed after declining the charter

The message is in English or in French, following the language of the session.

Track the answers

Open RDS Proxy » Events, first tab Access events.
Two reasons concern the charter:

Reason Event text Meaning
Charter accepted Usage charter accepted \| e7c55f3a0972 The user clicked I accept.
Charter declined Usage charter declined \| e7c55f3a0972 The user clicked I decline, closed the window or did not answer.
The session was closed.

Charter answers in the access events

Filter on the reason or on the user name to find an answer.

The 12 characters after the bar are the fingerprint of the text.
The Charter text line of the Template tab shows the fingerprint of the current text.
When you change the text, the fingerprint changes.
The events keep the fingerprint of the version the user actually saw.

Keep a copy of each version of the charter with its fingerprint.
It lets you match an old event to the exact text the user accepted.

A declined charter is also sent to the SIEM as a refused access, with the reason charter_refused.
Accepted charters stay in the local access events.

Good to know

REST API

The charter has two routes on the local API socket.
See the RDS Proxy REST API page for the access rules.

SOCKET=/usr/share/artica-postfix/bin/run/articarest.sock

# Read the charter
curl -s --unix-socket $SOCKET http://localhost/rdpproxy/charter

# Enable it with a new text
curl -s --unix-socket $SOCKET -X POST -H 'Content-Type: application/json' \
  -d '{"enabled":"1","text":"IT ACCEPTABLE USE CHARTER\n\nYour session is recorded."}' \
  http://localhost/rdpproxy/charter

# Disable it (the text is kept)
curl -s --unix-socket $SOCKET -X POST -H 'Content-Type: application/json' \
  -d '{"enabled":"0"}' http://localhost/rdpproxy/charter

The answer holds enabled, text, chars, fingerprint and supported.
supported is false when the running authhook is older than 1.6.2.
A refused text returns the HTTP code 400 with the reason, and nothing is saved.

Troubleshooting

Symptom Check
The charter never appears Check that Ask users to accept the charter is active.
Look for the warning about the authhook version in the Usage charter section.
The console refuses the text Read the reason in the error box.
Remove characters pasted from a word processor, or shorten the text.
Users are disconnected right after the login Open the access events and filter on Charter declined.
A client that cannot display the dialog never answers.