Távoli asztal (RDP)

Egy RDP-alkalmazás egy Windows-szerver asztalát nyitja meg a felhasználó böngészőjében, Web Accessen át. Ugyanúgy fut, mint egy izolált böngésző: az RDP-kliens egy RBI-hoszton fut, a felhasználó böngészője csak a képet kapja. Hogy egy alkalmazás általában hogyan konfigurálható, az az alkalmazások konfigurálása lapon van.

Mi az RDP-alkalmazás

Az az alkalmazás RDP-cél, amelynek upstreamje rdp://host[:port] (port nélkül a 3389). Ezen felül kell neki:

Egy RDP-célnak nincs HTTP-je: az alkalmazás csak HTTP-re értelmes kulcsait elutasítja, és egy rá hivatkozó http_rules-bejegyzés miatt a policy nem töltődik be.

Hogyan fut egy munkamenet

Csatornák

Alapból minden csatorna ki van kapcsolva. Közülük négy a policy.yaml-ban kapcsolható be, alkalmazásonként és szerepenként, az rdp_channels kulccsal:

A meghajtók és a mikrofon nem érhetők el. Egy szabály megnevezi az alkalmazásait (apps, kötelező, csak RDP-alkalmazás), opcionálisan a szerepeket (roles; üresen minden szerep) és a megnyitott csatornákat (allow, kötelező). Az illeszkedő szabályok összeadódnak; ha egy sem illeszkedik, minden csatorna ki marad:

rdp_channels:
  - name: win-ops-clipboard
    apps: [APP-2026-000005]
    roles: [operator, sysadmin]
    allow: [clipboard_to_remote, clipboard_from_remote]
  - name: win-sysadmin-print
    apps: [APP-2026-000005]
    roles: [sysadmin]
    allow: [printer, audio_out]

Ha egy szabály nem RDP-célt nevez meg, a policy nem töltődik be, ahogy egy RDP-célt megnevező http_rules-bejegyzés miatt sem; egy, az apps.yaml-ban nem szereplő alkalmazás csak figyelmeztetés. A csatornák a munkamenet kapcsolódásakor rögzülnek: az újratöltött policy.yaml a futó RDP-munkamenetet nem változtatja, csak a következő kapcsolódást.

A csatornákat két helyen érvényesíti az ISG: a guacd csak a megnyitottakat kapja meg, és a bróker tunnelje eldobja egy kikapcsolt csatorna adatfolyamát. Az APP_RDP_UPSTREAM_CONNECTED felsorolja a munkamenet channels mezőjében a csatornákat (üres lista, ha mind ki van kapcsolva). Minden vágólap-átvitel és minden nyomtatás egy APP_RDP_CHANNEL_TRANSFER sor, a végén írva: user, app, app_id, rbi_id, session_id, channel, mimetype, bytes (az átvitt méret), filename (csak nyomtatásnál) és blocked — egy kikapcsolt csatornán tett próbálkozás is sor, blocked igaz értékkel. Maga a tartalom soha nem kerül a naplóba. A hangot nem naplózza adatfolyamonként; a channels mutatja, be volt-e kapcsolva.

Billentyűzet

A nézet a billentyűzetet a távoli asztalnak küldi. Két esetben kell segítség, mert ezeket a böngésző megtartja:

Nézői türelmi idő

Amikor a felhasználó nézete bezárul (bezárja a lapot, megszakad a hálózat), az RDP-munkamenet vár a visszatérésére, és ha a nézet időben újra megnyílik, ugyanaz a Windows-munkamenet folytatódik. RDP-alkalmazáson a várakozás alapból 60 másodperc, nem az izolált böngésző rbi.yaml-beli viewer_grace_seconds-a. Egy alkalmazás a sajátját az apps.yaml viewer_grace_seconds kulcsával adhatja meg (30–3600 másodperc), RDP-cél és izolált böngésző egyaránt.

Felvétel, élő nézet és megszakítás

Minden RDP-munkamenetről képfelvétel készül, Guacamole-formátumban, és a webUI-ban a munkamenet lapján játszható vissza, mint egy izolált böngésző felvétele (APP_RBI_RECORDING_STORED). A felvétel a munkamenet végén jut el a brókerhez; amíg meg nem érkezik, a munkamenet lapja azt mondja, hogy feldolgozás alatt van.

Egy adminisztrátor, aki munkamenetet zárhat, a /sessions/live címen nézheti a futó RDP-munkamenetet. A nézet csak olvasható: a néző egere és billentyűzete nem jut el a távoli asztalig (élő RDP-munkameneten ellenőrizve, 2026-11-01-én).

A munkamenet lezárása a munkamenet-táblából a távoli asztalt is befejezi, nagyjából 10 másodpercen belül: a nyitott nézet a szokásos ellenőrzésekor elolvassa a rekordot, és a felhasználó nézete APP_SESSION_CLOSED sorral, admin_close okkal ér véget.

Ha a kapcsolat a cél felől szűnik meg — a felhasználó kijelentkezik a Windowsból, megszakad a hálózat, vagy egy másik kapcsolat átveszi a Windows-munkamenetet —, az ISG-munkamenet is lezárul: a rekord target_closed okkal zárul, az APP_RDP_UPSTREAM_CLOSED megnevezi, ki bontott (ended_by: a cél, vagy maga az ISG minden olyan zárásnál, amelyet az ISG végzett), és utána APP_SESSION_CLOSED jön, target_closed okkal. A felhasználó nézete kiírja, hogy a távoli gép bontotta a kapcsolatot, és nem kínál újracsatlakozás-gombot: az alkalmazást újra meg kell nyitni. A nézet újratöltése vagy a lapja bezárása nem a cél bontása; a munkamenet megmarad.

Amikor az ISG zár le egy munkamenetet, a Windows-munkamenet szétkapcsolt állapotban megmarad a célgépen, hacsak a célgép nem korlátozza. A célgép előfeltétele a „Set time limit for disconnected sessions” (a szétkapcsolt munkamenet időkorlátja) csoportházirend.

Fiókonként egy élő munkamenet

A Windows egy második, ugyanazzal a fiókkal érkező kapcsolatnak az első asztalát adja, az elsőt pedig bontja. Ezért az ISG egy RDP-alkalmazás egy fiókjára egyszerre egy élő munkamenetet enged, az összes brókeren át:

Ha két felhasználó ugyanabban a pillanatban két brókeren nyitja meg ugyanazt a fiókot, a korábbi rekord marad, a későbbi account_busy okkal zárul, ugyanazzal a 409-es oldallal. A munkamenet-rekord megnevezi a fiókját (isg sessions show, Account:).

reserved_usernames RDP-n

RDP-alkalmazáson a reserved_usernames egyszerű lista azokról az ISG-felhasználónevekről, amelyek nem nyithatják meg. A Windows-fiókot nem védi: a fiók a tárolt credential, nem a felhasználó neve — ugyanúgy, mint egy identity: credential HTTP-alkalmazásnál.