From 113d530a21b7f21147fa10482859baf27c672838 Mon Sep 17 00:00:00 2001 From: Julia Longtin Date: Fri, 4 Sep 2026 22:52:30 +0100 Subject: [PATCH] add suspend users section to documentation. --- .../img/backoffice-suspend-user.png | Bin 0 -> 54979 bytes src/how-to/administrate/suspend-users.md | 277 ++++++++++++++++++ 2 files changed, 277 insertions(+) create mode 100644 src/how-to/administrate/img/backoffice-suspend-user.png create mode 100644 src/how-to/administrate/suspend-users.md diff --git a/src/how-to/administrate/img/backoffice-suspend-user.png b/src/how-to/administrate/img/backoffice-suspend-user.png new file mode 100644 index 0000000000000000000000000000000000000000..5dcddc241f5792eb86b119d4b0984f306a764aba GIT binary patch literal 54979 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

C_bV?K$e` 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 + +# Suspending and unsuspending users + +Suspending a user ends every session that user currently has, on every device, and blocks any further logins — without deleting the account. It is fully reversible: the account, its handle, its conversations and its assets all stay in place, and unsuspending restores access. + +This is normally what you want when access has to be cut off quickly and you are not (yet) ready to [permanently delete the user](users.md#user-deletion): a lost or stolen device, a departure that is still being disputed, or an account under investigation. + +This page requires that you have root access to the machines where kubernetes runs on, or have kubernetes permissions allowing you to port-forward arbitrary pods and services. + +## Suspend or delete? + +| | Suspend | Delete | +|-------------------------------|------------------------------------|-------------------------------------| +| Existing sessions | Revoked immediately | Revoked | +| Further logins | Blocked | Impossible | +| Profile, name, email | Retained | Purged | +| Handle (unique username) | Stays reserved by the account | Released | +| Conversations and assets | Retained | Deleted | +| Appears in search | No | No | +| Reversible | Yes | No | + +If you need the account gone for good, use [Deleting a user which is not a team user](users.md#user-deletion) instead. + + + +## What happens when a user is suspended + +Suspension is a change to the account's `status` field, from `active` to `suspended`. When brig applies that change it: + +- revokes all of the user's cookies, which ends the session on every client the user is logged in on; +- rejects any subsequent login attempt for that account; +- emits a `user.suspended` event; +- updates the search index, so the user stops appearing in search results. + +Unsuspending sets `status` back to `active` and emits a `user.resumed` event. Cookies are *not* restored — the user has to log in again, which they are now able to do. + +#### WARNING +Suspension takes effect immediately and will interrupt ongoing calls and message delivery for that user. If you are suspending a large number of accounts, time it accordingly. + +#### NOTE +Only `active` and `suspended` can be set this way. The remaining account statuses (`deleted`, `ephemeral`, `pending-invitation`) are rejected by the endpoint, because they are set by other parts of the system as part of deletion, guest accounts and team invitations. + + + +## Finding the user ID + +Every command below needs the user's ID (a UUID). If you only have an email address or a handle, look the user up first, as described in [Manually searching for users in cassandra](users.md#manually-searching-for-users-in-cassandra). + +The same output also carries the current `status`, so it doubles as a check of where the account stands before you change anything: + +```json +[ + { + "status" : "active", + "name" : "somename", + "email" : "user@example.com", + "id" : "9122e5de-b4fb-40fa-99ad-1b5d7d07bae5", + "handle" : "user123" + } +] +``` + +Double-check that the `id` you are about to act on really is the user you mean. + +#### NOTE +Do not use `UID` as your shell variable name for this. `UID` is read-only in bash and the assignment will fail. The examples below use `USER_ID`. + + + +## Suspending a user + +Suspension is applied through brig's internal `status` endpoint. + +Terminal one: + +```sh +kubectl port-forward svc/brig 9999:8080 +``` + +Terminal two: set the status to `suspended`. + +```sh +# replace the id with the id of the user you want to suspend +USER_ID=9122e5de-b4fb-40fa-99ad-1b5d7d07bae5 +curl -v -XPUT localhost:9999/i/users/$USER_ID/status \ + -H 'Content-Type: application/json' \ + -d '{"status":"suspended"}' +``` + +A successful call returns `200` with an empty body. The user is signed out of all clients straight away. + + +#### NOTE +We use two terminals in this step, one for openining your connection to brig, and the other for talking to brig. Opening the connection to brig is required for suspending, unsuspending, and verifying suspension, but is not repeated in the next two sections. Please ensure you close your kubectl command when you are done accessing the Wire cluster. + + + +## Unsuspending a user + +To restore access, set the status back to `active`, using the same port-forward: + +```sh +USER_ID=9122e5de-b4fb-40fa-99ad-1b5d7d07bae5 +curl -v -XPUT localhost:9999/i/users/$USER_ID/status \ + -H 'Content-Type: application/json' \ + -d '{"status":"active"}' +``` + +The user can log in again immediately, but will have to sign in again from scratch: suspension has revoked their cookies and unsuspending does not bring them back. + + + +## Verifying the result + +Brig reports the current status of a single account: + +```sh +curl -s localhost:9999/i/users/$USER_ID/status | json_pp +``` + +Which returns: + +```json +{ + "status" : "suspended" +} +``` + +You can also confirm from the user's side: a suspended user is signed out of all clients, and an attempt to log in fails rather than returning an access token. + + + +## Doing it with a script + +For repeated use, the following script wraps the endpoint above. It resolves an email address to a user ID, shows the current status, asks for confirmation, and prints the status afterwards. + +Save it as `suspend_user.sh` and make it executable with `chmod +x suspend_user.sh`. It needs `curl` and [jq](https://jqlang.github.io/jq/). + +```sh +#!/usr/bin/env bash +# Suspend or unsuspend a Wire user via brig's internal API. +# Requires a port-forward to brig, e.g.: +# kubectl port-forward svc/brig 9999:8080 + +set -euo pipefail + +BRIG_HOST="http://localhost:9999" +ACTION="" +USER_ID="" +EMAIL="" + +usage() { + cat < [-u ] [-e ] [-b ] + + -a Action to perform: suspend, unsuspend, or status (read-only). + -u User ID (UUID) to act on. + -e Email address to look up, instead of passing -u. + -b Base URI of brig's internal endpoint. Default: ${BRIG_HOST} +EOF + exit 1 +} + +while getopts "a:u:e:b:" opt; do + case "$opt" in + a) ACTION="$OPTARG" ;; + u) USER_ID="$OPTARG" ;; + e) EMAIL="$OPTARG" ;; + b) BRIG_HOST="$OPTARG" ;; + *) usage ;; + esac +done + +[ -n "$ACTION" ] || usage +[ -n "$USER_ID" ] || [ -n "$EMAIL" ] || usage + +case "$ACTION" in + suspend) NEW_STATUS="suspended" ;; + unsuspend) NEW_STATUS="active" ;; + status) NEW_STATUS="" ;; + *) usage ;; +esac + +# Resolve the email address to a user ID, if one was given. +if [ -z "$USER_ID" ]; then + USER_ID=$(curl -sS -G "${BRIG_HOST}/i/users" \ + --data-urlencode "email=${EMAIL}" | jq -r '.[0].id // empty') + if [ -z "$USER_ID" ]; then + echo "No user found for ${EMAIL}" >&2 + exit 1 + fi + echo "Resolved ${EMAIL} to ${USER_ID}" +fi + +CURRENT=$(curl -sS "${BRIG_HOST}/i/users/${USER_ID}/status" | jq -r .status) +echo "Current status of ${USER_ID}: ${CURRENT}" + +[ -n "$NEW_STATUS" ] || exit 0 + +if [ "$CURRENT" = "$NEW_STATUS" ]; then + echo "Already ${NEW_STATUS}, nothing to do." + exit 0 +fi + +read -r -p "Set ${USER_ID} to ${NEW_STATUS}? [y/N] " CONFIRM +case "$CONFIRM" in + y|Y) ;; + *) echo "Aborted." >&2; exit 1 ;; +esac + +BODY=$(mktemp) +trap 'rm -f "$BODY"' EXIT + +HTTP_CODE=$(curl -sS -o "$BODY" -w '%{http_code}' \ + -XPUT "${BRIG_HOST}/i/users/${USER_ID}/status" \ + -H 'Content-Type: application/json' \ + -d "{\"status\":\"${NEW_STATUS}\"}") + +case "$HTTP_CODE" in + 2*) ;; + *) echo "Request failed (HTTP ${HTTP_CODE}):" >&2 + cat "$BODY" >&2 + exit 1 ;; +esac + +echo "New status: $(curl -sS "${BRIG_HOST}/i/users/${USER_ID}/status" | jq -r .status)" +``` + +Typical usage, with the port-forward from the previous section running in another terminal: + +```sh +# check where an account stands +./suspend_user.sh -a status -e user@example.com + +# suspend, by email +./suspend_user.sh -a suspend -e user@example.com + +# unsuspend, by user ID +./suspend_user.sh -a unsuspend -u 9122e5de-b4fb-40fa-99ad-1b5d7d07bae5 +``` + + + +## Alternative: the backoffice pod + +Most installations do not have `backoffice` deployed, so the steps above are the general route. If you do happen to have it installed, it wraps the same operation behind a pair of dedicated endpoints, `POST /users/{uid}/suspend` and `POST /users/{uid}/unsuspend`, which you can call from its Swagger UI or with `curl` after a port-forward to `svc/backoffice`: + +![Suspending a user from the backoffice Swagger UI](img/backoffice-suspend-user.png) + +These call brig's `PUT /i/users/{uid}/status` internally, so the effect is exactly the same as the commands above. See the [backoffice README](https://github.com/wireapp/wire-server/tree/develop/charts/backoffice) for details. + + + +## Things to be aware of + +### SCIM-provisioned users + +For teams provisioned over SCIM, the account status is derived from the SCIM `active` attribute, and the SCIM client is the source of truth. Suspending such a user directly on the backend works, but the next SCIM update from the identity provider can set the account back to `active`. For SCIM-managed teams, deactivate the user in the identity provider instead. See [Single Sign-On and User Provisioning](../../understand/single-sign-on/README.md). + +### Suspending a whole team + +The endpoints on this page act on a single user. Suspending an entire team is a separate operation on brig, which suspends the team and all of its members. It uses the same port-forward: + +```sh +TEAM_ID=123e4567-e89b-12d3-a456-426614174000 +curl -v -XPOST localhost:9999/i/teams/$TEAM_ID/suspend +curl -v -XPOST localhost:9999/i/teams/$TEAM_ID/unsuspend +``` + +### Access to these endpoints + +Brig's internal API is an administrative interface with no authentication of its own. It must not be exposed publicly; reaching it through `kubectl port-forward`, as above, keeps it inside the cluster. Restrict who holds the kubernetes permissions that make these steps possible. + +### Cookies and suspension are separate mechanisms + +Suspension revokes the affected user's cookies as a side effect. If your goal is only to force users to sign in again — for example after a security event — and not to block them, see [Reset session cookies](users.md#reset-session-cookies) instead.