Skip to main content

Access disclosure plugins

Bravura Privilege uses access disclosure plugins to permit secure access to a password for a privileged account. In addition to disclosing the password, some controls can automatically authenticate into systems, programs and websites.

You configure managed system policies to use access disclosure plugins to allow product administrators and end users to access the privileged accounts. By default, new managed system policies do not have any access disclosure plugins configured. Depending on the authentication types defined for the managed system policy, only applicable disclosure plugins can be added to the policy. You can configure any number of controls to allow users to access current privileged passwords, SSH keys, and group sets. You can configure only one control to disclose old passwords.

See also

Types of access disclosure plugins

There are several types of access disclosure plugins:

  • Native access disclosure plugins: These are Javascript controls that can be installed on users’ workstations prior to disclosing passwords. Alternatively, a one-time disclosure method can be used to access the plugins.

  • Guacamole access disclosure plugins: Unlike native access disclosure plugins, these are controls that are viewed directly from a web browser and do not require installation of plugins or client software. These controls work on any browser that supports HTML5. A Guacamole gateway is required in order to use it.

  • Website access disclosure plugins: These controls launches either a browser tab or a secure browser window and automatically logs into a website using a configuration defined in a JSON file. Installation of a browser extension or client software is required in order to use it.

Bravura Privilege ships with the following native access disclosure plugins:

  • Run command: pswcmdrun is used with account set access requests. It allows users to run commands or scripts on multiple managed systems using managed account credentials.

    When a user checks out an account set, Bravura Security Fabric displays a command execution window if any of the member systems support the run command operation.

  • Command prompt: pswxcmd provides users with access to managed systems by executing an external program and providing credentials.

    There are three types of command prompt controls; one is specifically for accessing managed accounts, and the other two are for temporary group membership, where the password can either be passed onto the command line, or specified upon connection to the remote server.

    This plugin is compatible with session recording.

  • PuTTY over SSH: pswxcmd

    This is a preconfigured pswxcmd access disclosure plugin used for accessing managed accounts with SSH keys instead of passwords.

    This plugin is compatible with session recording.

  • Copy: pswxcopy provides users with access to a password by copying it into the clipboard of the client workstation.

  • Remote desktop / Remote APP RDP: pswxtsvc provides users with access to Windows server or client managed systems and RemoteApp programs using Remote Desktop Connection (RDC). The plugin provides automatic connection to the managed system without the need to enter the administrative credentials for the managed account.

    This plugin is compatible with session recording.

  • Display: pswxview provides users with access to a password by displaying it within the browser.

    When the secure method is enabled, Bravura Security Fabric uses JavaScript to decrypt the privileged password embedded in the page.

    If the insecure method is enabled, the browser can store passwords in plain text in the page source, and users can access the accounts in browsers that do not have JavaScript enabled. Users access the managed system by hovering their cursor over the View button.

Bravura Privilege ships with the following Guacamole access disclosure plugins:

All Guacamole access disclosure plugins provide automatic connection to the managed system without the need to enter the administrative credentials for the managed account and are compatible with session recording.

A Guacamole gateway is required in order to use Guacamole access disclosure plugins. See Installing and configuring Guacamole on how to set up a Guacamole gateway and configure the controls to use it.

Bravura Privilege ships with the following website access disclosure plugins:

  • Secure browser: securebrowser launches a dedicated program that automatically logs into a website using a configuration defined in a JSON file. This is compatible with session recording.

    Requires installation of the Bravura Security Secure Browser program.

  • Web app privileged sign-on: pswxwebapp launches a separate browser tab that automatically logs into a website using a configuration defined in a JSON file. Requires installation of the Bravura Security browser extension.

Native access disclosure plugins

Run command: pswcmdrun

The pswcmdrun access disclosure plugin is used with account set access requests. It allows users to run commands or scripts on multiple managed systems using managed account credentials.

When a user checks out an account set, Bravura Privilege displays a command execution window if any of the member systems support the run command operation.

Currently the following target systems support the run command operation:

  • Windows NT Server

  • Secure Shell (SSHD Host)

  • Telnet target system

  • Python Script

  • Oracle Database

  • Microsoft SQL Server

  • Sybase AES Database

  • Console Script

Additional preparation is required before pswcmdrun can run PowerShell commands on a Windows Server / workstation target. See Windows Server in the Connector Pack documentation for details.

If the plugin is enabled but an account set contains no managed system that supports the run command operation, Bravura Privilege displays the following message upon check-out:

  • "None of the checked out systems support command execution operation. Command execution interface is not available."

You can modify the following default attributes to control the behavior of pswcmdrun :

command

The command to run.

deleteexpired

Delete command output after expiration.

retry

Retry failed commands run via Transaction Monitor Service.

savecmd

Allow users to save commands.

saveresult

Retrieve command output and save on server.

Command attribute

value

%command%

replacement

By default, the command or script that the user specifies in an account set request will be used to populate the command execution window upon check-out. If you customize this value, the customized value (command or script) will be used to populate the command execution window. It overrides any command or script specified in the request.

Command prompt: pswxcmd

The pswxcmd access disclosure plugin provides users with access to managed systems by executing an external program and providing credentials. The default program is PuTTY.exe, which opens an ssh/telnet terminal to a Windows machine. The external program must meet the following requirements:

  • User credentials must be accepted as part of the arguments

  • Connection details must be accepted as part of the arguments

  • The program must be installed on the user workstation

  • The program must either exist on the full path specified as part of the “program” attribute; or if no path has been specified, the external program must be specified on the workstation system path

  • SMON HTTP URL must resolve to the server from client workstations

There are three types of command prompt controls; one is specifically for managed accounts, and the other two are for temporary group membership, where the password can either be passed onto the command line, or specified upon connection to the remote server.

You can modify the following default attributes to control the behavior of pswxcmd :

arguments

Arguments to supply to the external program. See Arguments attribute for details.

checkout expiry

If set to true, the external program closes when the user’s access checkout expires.

credentialprompt

If set to true, a user is prompted for a user name and password. They are made available for arguments as %curruser% and %currpwd% . This is enabled for use with unmanaged passwords, where the user will be prompted for a password that wil be passed on the command line to the command.

escalation hotkey key

Set the letter key for the escalation hotkey. When used with the escalation hotkey modifier, the escalation sequence is inserted.See Inserting an escalation sequence for more details.

escalation hotkey modifier

Set the modifier for the escalation hotkey. There are three options: ’Ctrl’, ’Alt’, and ’Middle click’. When used with the escalation hotkey key, the escalation sequence is inserted. See Inserting an escalation sequence for more details.

escalation sequence

The text to automatically type into the application.

escalation window name

If this window name is detected, the escalation sequence is inserted into the program. See Inserting an escalation sequence for more details.

host

The IP or DNS of server. See Domain and host values for further information about using an alternative attribute value.

impersonate

Set the impersonation level of the process. This is set to ’none’ by default. See Impersonating the checked-out account for more details.

program

External program (including full path) to execute.

window

If true, the command is executed within a display window. If false, the command is executed without a display window.

Arguments attribute

The arguments provide substitution of the password, user name, host, and other custom plugin attributes. The substitutions are as follows:

value

%host%

replacement

The domain managed system member is on, without any optional parameters.

value

%username%

replacement

The account ID for the privileged password being disclosed.

value

%password%

replacement

The password being disclosed.

value

%<custom attribute>%

replacement

If there is a “custom attribute” defined for the plugin, the value of the attribute is used.

Using custom attributes provides control over the arguments attribute. You can enable the user to override the custom attribute only, while leaving the arguments locked or hidden.

The following are examples of customizations using the pswxcmd access disclosure plugin.

Allow optional arguments

The default settings for pswxcmd execute PuTTY and connect using the privileged password. This example shows how you can add a custom attribute to allow the user to specify the port:

  1. Create an attribute named port with the following settings:

    • Integer type

    • Allow the port attribute to be overridden by the users

    • Set the minimum value to 1

    • Set the default value to 22

    • Set the port attribute to be non-empty

  2. Set the arguments attribute value to: -ssh %host% -l %username% -pw %password% -P %port%

Insert an escalation sequence

You can allow users to insert an escalation sequence into a program (such as PuTTY.exe) using a hotkey or window name.

When a user presses the escalation hotkey, the escalation sequence is automatically typed into the program. By default, the escalation hotkey is Ctrl + K.

To configure the escalation hotkey:

  1. Set the escalation sequence attribute to the text to insert into the program.

  2. Set the escalation hotkey modifier attribute to:

    • Ctrl – Pressing the Ctrl key with the escalation hotkey key automatically types the sequence. This is the default setting.

    • Alt – Pressing the Alt key with the escalation hotkey key automatically types the sequence.

    • Middle click – Middle-clicking automatically types the sequence. The escalation hotkey key attribute is ignored for this option.

  3. If using the Ctrl key or Alt key for the modifier, set a letter key (A-Z) for the escalation hotkey key attribute.

When the window name is detected, the escalation sequence is automatically typed into the program.

To configure the escalation window name:

  1. Set the escalation sequence attribute to the text to insert into the program.

  2. Set the escalation window name attribute for the window where the escalation sequence will be inserted.

    Users will not be able to use the escalation hotkey when the escalation window name attribute is defined.

Impersonating the checked-out account

You can allow the requester to run a program (such as cmd.exe) with the permissions of the checked-out account. This will essentially simulate the runas command.

Set the impersonate attribute to:

  • none – No impersonation will be performed. This is the default setting.

  • withoutprofile – Attempt to impersonate without loading the user’s profile.

  • withprofile – Attempt to impersonate and load the user’s profile.

  • netonly – Do not impersonate locally, but present the managed credentials for network authentication only.

Executing a shell script

This example shows how you can configure pswxcmd to execute a shell script:

  • Set the program attribute to: C:\windows\system32\cmd.exe .

  • Set the arguments attribute to: /C X:\ITApps\runapp.cmd %host% %password% %username%

Executing SQL*Plus

This example shows how you can configure pswxcmd to execute SQL*Plus:

  • Set the program attribute to: C:\oracle\product\10.1.0\client _1\bin\sqlplus.exe

  • Set the arguments attribute to: %username%/%password%@%host%

Changing the message to users on failure

You can change the message displayed to users in the event that the external program fails to launch by modifying the RES CONNECTION TO SERVER FAILED MSG setting in the global or managed system policy Account access request options.

PuTTY over SSH: pswxcmd

This is a preconfigured pswxcmd access disclosure plugin specifically for managed accounts. By default, this plugin is configured to execute PuTTY and connect using the user’s SSH keys instead of the privileged password.

The following requirements must be met:

  • Connection details must be accepted as part of the arguments

  • The program must be installed on the user workstation

  • The user’s private key must already be configured on the workstation

  • The program must either exist on the full path specified as part of the “program” attribute; or if no path has been specified, the external program must be specified on the workstation system path

  • SMON HTTP URL must resolve to the server from client workstations

The following attributes are available:

arguments

Arguments to supply to the external program, the %password% argument is not used.

checkout expiry

This is set to true, the external program closes when the user’s access checkout expires.

credentialprompt

This is set to false, users are not prompted to enter their credentials.

host

The IP or DNS of server.

program

External program (including full path) to execute. This is set to putty.exe by default.

window

This is set to true, the command is executed within a display window.

See Command prompt: pswxcmd for more information on modifying these attributes.

Copy: pswxcopy

The pswxcopy access disclosure plugin provides users with access to a password by copying it into the clipboard of the client workstation. By default, it is configured to clear the clipboard if the browser is closed or if the default 30 seconds expiry time for the plugin has passed.

You can modify the following default attributes to control the behavior of pswxcopy :

erase

If false, the clipboard is not cleared. If true, the clipboard is cleared after the time expires or the browser is closed.

timeout

This controls how long before the clipboard is cleared.

Remote desktop / Remote APP RDP: pswxtsvc

The pswxtsvc access disclosure plugin provides users with access to Windows server or client managed systems and RemoteApp programs using Remote Desktop Connection (RDC). The plugin provides automatic connection to the managed system without requiring the entry of administrative credentials for the managed account. You can also connect to the remote server when accessing group sets. This access disclosure plugin supports Network Level Authentication (NLA) and session monitoring.

There are two versions of the pswxtsvc access disclosure plugin:

  • Remote desktop, for remote access to a managed system’s desktop environment.

  • Remote APP RDP, for remote access to one of the managed system’s programs that can be run directly on the client’s workstation. RemoteApp must already be configured on the managed system.

    Remote APP RDP type disclosures are used for launching applications such as ssms.exe on Server X and providing users with a SQL Server Management window on their desktop that "looks local", but in fact is running on Server X.

The plugin requires the following:

  • Microsoft terminal services client (mstsc.exe) installed on the user’s workstation.

  • Terminal service enabled on the client workstation or server.

  • Firewalls configured to allow RDC (default port 3389/tcp) from user’s workstation to managed system.

  • The managed account has remote terminal service access to log on under remote terminal services.

  • SMON HTTP URL must resolve to the server from client workstations

You can modify the following default attributes to control the behavior of pswxtsvc :

checkout expiry

If set to true, the remote desktop application closes when the user’s access checkout expires.

color depth

Preferred color depth (value must be 8, 15, 16 or 24 bits per pixel).

domain

Domain of the user account that the control will connect with. The default is %host% .

host

The IP or DNS of server.

host search

If set to true, will enable searching on attribute ”host” when override is allowed for ”host”.

keyboardhook

Apply Windows key combinations to the remote connection:

  • Value: 1 - applied on the remote computer

  • Value: 2 - applied in fullscreen mode only

login from list

Display login button in list of access disclosure plugins when editable attributes exist. If set to false, the login ability is moved to the override page.

multimon

If set to true, the screen mode will be full screen and extended to all monitors, provided there is more than one monitor.

rdp port

The port to use when connecting to the host.

redirect clipboard

If set to true, will enable redirecting of the clipboard.

redirect devices

If set to true, will enable redirecting of devices.

redirect drives

If set to true, will enable redirecting of local disk drives.

redirect ports

If set to true, will enable redirecting of local ports.

redirect pos devices

If set to true, will enable redirecting of Point of Service devices.

redirect printers

If set to true, will enable redirecting of printers.

redirect smart cards

If set to true, will enable redirecting of smart cards.

The following disclosure attributes are applicable to the Remote desktop access disclosure plugin only:

administer server

If set to true, will connect to the server for remote administration.

fullscreen

If set to true, the screen mode will be full screen. If set to false, the screen mode will be windowed.

height

The desktop height used when using windowed mode.

idle timeout

Idle time before auto logoff.

multimon

If set to true, the screen mode will be full screen and extended to all monitors, provided there is more than one monitor.

smartsizing

If set to true, will enable the client computer to scale content to fit the window size.

username

An overridable attribute with support for the special value %shortid% , which retrieves the managed account’s shortid. Add this attribute manually through UI.

width

The desktop width used when using windowed mode.

The following disclosure attributes are applicable to the Remote APP RDP disclosure plugin only. You can obtain these values by viewing the contents of the RemoteApp’s .rdp file.

expand remoteapplicationcmdlineenv vars

If set to true, the server should expand environment variables in the command line arguments. This is set to false by default.

expand working dir env vars

If set to true, the server should expand environment variables in the working directory path. This is set to false by default.

remoteapplicationcmdline

The command line arguments for the RemoteApp program, if applicable.

remoteapplicationname

The RemoteApp program name.

remoteapplicationprogram

The RemoteApp program alias. (ex. —— <program> )

working directory

The working directory on the server for the RemoteApp program.

Domain and host values

The domain and host values are used to connect to the remote system. Their values may depend on how the managed system is set up, and whether it is push or local service mode, manually or automatically discovered.

The domain must be the DNS Domain Name or NetBIOS name. It should not be an IP address. The reason is that the Windows logon requires the account ID and the context (domain/local machine) to identify the administrative user. If an IP address is used in place of a proper name, the connection will fail.

Bravura Privilege gets the replacement value for %host% from the managed system’s address, or the ’name’ attribute for discovered systems. You could choose to leave the value as an IP address. Windows Server 2008 and above supports an IP address for the host.

If the address does not contain the DNS name (for example, if it is an IP address) and you want it to, you have several options:

  • If the system is local service mode, use one of the substitution values %NETBIOS% , %DNSHostname% , or %NetbiosDomain% depending on the type of account. Default is %NETBIOS% .

  • If the system is push mode, and if using the Windows NT connector, enable WINNT_EMIT_INFO and use %DNSHostname% . This allows the Windows NT connector to return the IP and DNS hostname on the reset operation.

  • If the system is push mode, and if using a scripted connector (agtssh , agtdos , agttelnet), configure the PSLang script to return the IP address and DNS hostname on the reset operation.

  • Use a managed system attribute set by the API Service ManageSystemAttrAdd function. The key-values set for the managed system can then be used for the host/domain settings.

  • Use a hardcoded value.

  • Let the user override the value.

When an user checks out a domain account, the user has the option to select from a list of domain member computers to connect to. To enable this, the ”host” attribute must have the ability to be overridden by the user, and the ”host search” attribute is set to true. As well, discovered systems must be listed from the Active Directory target.

Local service managed system values

The terminal services plugin connects to the domain set in the managed system’s address field by default.

When you install the Bravura Privilege local service, it transmits the information about the workstation, including:

  • DNS Domain name

  • NetBIOS domain name

  • Fully qualified DNS name

  • NetBIOS name

  • Physical DNS domain name

  • Physical fully qualified DNS name

  • Physical DNS host name

  • Physical NetBIOS name

You can view the information for a workstation by clicking Manage the system > Privileged access > Managed systems > < Workstation ID > , then scrolling down to the information table below the account table.

The attribute names can be used to substitute values for the domain and host attributes for the pswxtsvc ; for example you can set the domain value to %NETBIOS%, %DNSHostname%, or %NetbiosDomain%.

Changing the failure message to users

You can change the message displayed to users in the event that the external program fails to launch by modifying the RES PROGRAM PATH INVALID MSG setting in the global or managed system policy Account access request options.

Authentication prompting

If the managed system you are connecting to is configured to include a prompt for password upon connection, you may notice that the password field is already filled in. You can proceed by clicking OK ; you do not need to specify any additional information.

The password is passed from the disclosure plugin to the RDP client via Windows UI Automation (MSAA).

3207.png

If you receive a similar error and the password is not populated at all, it's possible that Windows changed the RDP dialog. If you are using a supported version of Bravura Security Fabric

Bravura Security Fabric , contact support so they can look for a possible patch.

Single sign-on authentication

You can configure SSO (single sign-on) authentication so that domain users requesting access to group sets can bypass the authentication prompt when running the pswxtsvc access disclosure plugin. SSO is implemented by using the pre-established credentials used to log onto a client computer and sending it to the remote server directly. This allows the user to access the remote server without needing to enter the password multiple times.

In order for SSO to be in effect, the client computer must be on the same domain as the remote server, and the user must log onto the client computer with their domain account.

To order to accommodate single sign-on authentication, you must configure settings on both the remote server and the client. Remote Server

The remote server must be Windows 2008/Vista or above, and it must allow connections from computers running Network Level Authentication.

To allow connections from computers running Network Level Authentication:

  1. Go to Start menu and right click on Computer.

  2. Click Properties.

  3. Click Remote settings.

  4. Select Allow connections only from computers running Remote Desktop with Network Level Authentication.

  5. Click Select Users...

  6. Click Add... to include users that will be requesting group set access to ensure they can remotely log onto the server.

  7. Click OK.

  8. Click OK again to close the system properties.

Remote Client

The remote client must be Windows XP SP3 or above, and support Network Level Authentication.

For Windows 2008/Vista+ Clients:

  1. Go to Start menu, type gpedit.msc in the search box, and click on the program to access the Local Group Policy Editor.

  2. Expand Computer Configuration \ Administrative Templates \ System \ Credentials Delegation.

  3. Double click on Allow Delegating Default Credentials.

  4. Set this object to Enabled.

  5. Click the Show... button to add servers to the list.

  6. Configure a list of trusted remote servers for SSO.

    For each server, enter a new value of TERMSRV/ < hostname > where < hostname > is the address that the pswxtsvc access disclosure plugin will use to connect to the remote server. Typically, this will be the fully qualified DNS name of the server.

    You can also simply type in TERMSRV/. < domain > to include all servers in < domain > .

For Windows XP SP3 Clients:

  1. Go to the Start menu, type regedit in the search box, and click on the program to access the Registry Editor.

    Ensure that you are comfortable and knowledgeable in the mechanics of the registry before you attempt to change any configuration settings. Contact support@bravurasecurity.com if in doubt.

  2. In HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows, create a new key called CredentialsDelegation .

  3. In the newly created CredentialsDelegation key, create a DWORD value called AllowDefaultCredentials and set its value to 1.

  4. Create a new key under CredentialsDelegation called AllowDefaultCredentials .

  5. In the newly created AllowDefaultCredentials key, create a new string value.

  6. Set the name of this to some unique identifier; you may wish to simply use ”1”, ”2”, ”3”, and so on. Set the value to TERMSRV/ < hostname > , similar to above.

  7. Repeat this step for each server you want to enable SSO for.

  8. Go to HKLM \ SYSTEM \ CurrentControlSet \ Control \ Lsa and modify Security Packages by appending tspkg to it.

  9. Go to HKLM \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders and modify SecurityProviders by appending credssp.dll to it.

Display: pswxview

The pswxview access disclosure plugin provides users with access to a password by displaying it within the browser. When the secure method is enabled, Bravura Privilege uses JavaScript to decrypt the privileged password embedded in the page. If the insecure method is enabled, the browser can store passwords in plain text in the page source, and users can view the password in browsers that do not have JavaScript enabled.

You can modify the following default attributes to control the behavior of pswxview :

secure

If true, the password is only disclosed if the browser has JavaScript enabled, and the password is not selectable. If false, the password is available in plaintext for browsers without JavaScript.

timeout

This controls how long the privileged password is shown.

pwd split

Allows the password to be split amongst multiple viewers so that no single viewer sees the entire password.

Changing default font and size of viewable passwords

You modify the default font and size of viewable passwords by opening the following files:

  • <instance>\skin\widgets \ pluginctrl-end.html

  • <instance>\skin\widgets \ ie \ pluginctrl-end.html

    and editing the following lines:

passFontFamily: ‘<font_name>'
passFontSize: <font_size>

If the ie directory exists, the file in it will override the global file outside of it.

Split password view

You can split up a password amongst multiple viewers by specifying the pwd split attribute. This takes the form ”n/m” where m is the number of pieces to split the password into, and n is the number of the piece that this instance of the control should display.

For example, 1/2 will display the first half of the password, while 2/2 will display the second half. You can configure a plugin to determine what part of the password a viewer will see. See Using a plugin to define access disclosure plugin . If you don’t intend to use password splitting, you can safely delete the default pwd split attribute.

Browser driver: pswxdom

Use an alternative disclosure plugin, such as Website access disclosure plugins , as Internet Explorer is no longer a supported browser. For information about pswxdom see documentation for 12.5 or older.

Installing native access disclosure plugins

Native access disclosure plugins can be used with the following browsers:

  • Microsoft Edge

  • Mozilla Firefox

  • Google Chrome

If access to the password includes insecure access to the password with pswxview , then deploying access disclosure plugins is not required.

Native access disclosure plugins only work on Windows. Mac OSX and other operating systems are not supported.

Mozilla Firefox

On Firefox access disclosure plugins can be installed by:

  • Allowing users to install both the Bravura Security browser add-on and firefox-extension-x64.msi at the time of check out

    The native extension, firefox-extension-x64.msi can be deployed using a Group Policy or a System Center Configuration Manager (SMS)

  • Using a one-time disclosure method

Use Case: Firefox

This use case demonstrates the typical workflow a user will experience the first time a native access disclosure plugin is used in Firefox.

This use case assumes firefox-extension-x64.msi has not been deployed using a Group Policy or system Center Configuration Manager (SMS)

  1. Check out an and click on the disclosure (copy or display).

  2. Click Install firefox add-on.

  3. Click Continue to Installation when prompted to install add-on.

  4. Click Add when prompted to add Bravura Security browser add-on.

    The Bravura Security browser add-on should be added, as indicated by the icon on address bar.

  5. Return to the check- out screen and Install native add-on should be displayed. This may require refreshing the screen.

  6. Click Install native add-on.

  7. Save firefox-extension-x64.msi.

  8. Run the MSI installer.

  9. After the extension is installed, restart the browser.

    Return to the check-out page and the disclosure should be launched when you click it.

Google Chrome and Microsoft Edge

On Google Chrome and Microsoft Edge access disclosure plugins can be installed by:

  • Allowing users to install both the Bravura Security browser extension and browser-extension-win-x86.msi at the time of check out

    The native extension, browser-extension-win-x86.msi can be deployed using a Group Policy or a System Center Configuration Manager (SMS)

    The Bravura Security browser extension is available from the Chrome web store

  • Using a one-time disclosure method

Use Case: Check out an account in Chrome or Edge

This use case demonstrates the typical workflow a user will experience the first time a native access disclosure plugin is used in Chrome or Edge.

This use case assumes browser-extension-win-x64.msi has not been deployed using a Group Policy or system Center Configuration Manager (SMS).

  1. Check out a vault account and click on the disclosure (copy or display).

  2. Click Install Chrome extension.

    A new browser tab with the Bravura Security browser extension in the Chrome Web store is opened.

  3. Click Add to Chrome.

  4. Click Add when prompted to add Bravura Security browser extension.

    The Browser Extension should be added, as indicated by the icon on address bar.

  5. When you return the check-out page, Install native extension should be displayed . This may require refreshing the screen.

  6. Click Install native extension. You may be prompted to save browser-extension-win-x86.msi , or it will be automatically saved.

  7. Run the MSI installer.

  8. After the extension is installed, restart the browser.

  9. Return to the check-out page, and the disclosure should launch when you click on it.

Installing ActiveX controls with ppm-activex-controls.msi

Installing ActiveX controls is no longer a supported method. See documentation for Bravura Security Fabric version 12.5 or older if you need information about this feature..

Installing JavaScript controls with MSI installers

An MSI installer is available for download when users attempt to access a password without installing the browser extension for Chrome or Firefox first:

  • browser-extension-win-x86.msi for Chrome

  • firefox-extension-win-x64.msi for Firefox browsers on a Windows 32-bit workstation

  • firefox-extension-win-x64.msi for Firefox browsers on a Windows 64-bit workstation

These MSI installers are also available on the Bravura Security Fabric server in the addons\idarchive directory.

If a previous version of native extensions for Firefox is already installed on the workstation (11.1.x or older) you must uninstall and install the current version.

Disclosure plugins are not supported for Mac OS.

To manually install the browser extension:

  1. Launch the Windows Installer package.

  2. Click Next .

  3. Read and accept the Bravura Security Fabric license.

  4. Click Next .

  5. Select an installation scope (if options are available).

    If you are logged in as an administrator, you can choose to install the browser extension for yourself or for all users on the workstation.

  6. Click Next .

  7. Click:

    • Typical to install all browser extension modules.

    or

    • Custom to select modules.

      It is recommended that you do not change the installation directory.

  8. Click Install to start the installation. The installer begins copying files to your computer. The Installation Complete dialog appears after the browser extension has been successfully installed.

  9. Click Finish to exit.

One-time disclosure plugin

You can launch access disclosure plugins using the one-time disclosure method. These plugins have the same functionality as the native access disclosure plugins and do not require additional software, however they are good for one-time use only. The one-time disclosure is available as an executable that can be run directly or downloaded to be run on a different workstation. A new executable needs to be generated in order to view the access disclosure plugin again.

You can configure messages to display to users how much check-out time is remaining and that the check-out time has expired.

When a one-time disclosure plug-in is downloaded and executed, the plug-in will check with Bravura Privilege to determine how much time is left in the checkout, or if the authorized interval has expired. This also applies to one-time plug-ins that have been saved for future use.

The one-time disclosure option is enabled by default. End-users may be able to see this option if the native access disclosure plugins are not yet installed or are disabled. When the one-time disclosure option is disabled, the option will be grayed out.

To disable one-time disclosures:

  1. Go to Manage the system > Modules > Privileged access .

  2. Set PAM ALLOW ONE TIME DISCLOSURE to Disabled.

  3. Click Update.

Troubleshooting native access disclosure plugins

Users on a Windows workstation are prevented from installing browser extensions

To allow users to install the browser extensions, enable and modify the following group policy setting:

  1. Go to Start menu, type gpedit.msc in the search box, and click on the program to access the Local Group Policy Editor.

  2. Expand Computer Configuration > Administrative Templates > Windows Components > Windows Installer.

  3. Right-click Turn off Windows Installer , select Edit .

    Older versions of Windows refer to this setting as Disable Windows Installer.

  4. Select Enabled .

  5. Under Disable Windows Installer , select Never .

  6. Click OK.

Administrators on a Windows workstation cannot install browser extensions for all users

If administrators are unable to select an installation scope option, disable the following in the Local Group Policy Editor:

  • Computer Configuration > Windows Settings > Security Settings > Local Policies > Security Options > User Account Control: Run all administrators in Admin Approval Mode

  • Computer Configuration > Windows Settings > Security Settings > Local Policies > Security Options > User Account Control: Admin Approval Mode for the built-in Administrator account

Guacamole access disclosure plugins

In-browser RDP: guacamole-rdp

The guacamole-rdp Guacamole access disclosure plugin provides users with remote access to Windows server or client managed systems using Remote Desktop Connection (RDC). This control provides automatic connection to the managed system without the need to enter the administrative credentials for the managed account and is compatible with session recording.

You can modify the following default attributes to control the behavior of guacamole-rdp :

color-depth

Set the preferred color depth of the display in bits per pixel. Available values are 8, 16, 24 and 32.

console

Connect to the server as a console (admin) session. This is set to false by default.

disable-audio

Disable audio driver. This reduces the bandwidth of the session. This is set to true by default.

domain

Set the domain the user account is a member of. This is set to %netBIOSDomainName% by default.

See Domain and host values for further information.

enable-printing

Enable printing to a virtual PDF printer. This is set to false by default.

guacamole-url

Set the URL of the Guacamole service. The format is <address>:<port>/< webappname> .

height

Set the height of the RDP window.

hostname

Set the IP or DNS of the server. This is set to %server% by default.

See Domain and host values for further information.

hostname search

If set to true, will enable searching on attribute ”host” when override is allowed for ”host”. This is set to false by default.

ignore-cert

Ignore certificate from the RDP server. This is set to false by default.

port

Set the connection port of the server.

security

Set the security mode for the connection. This is set to rdp by default.

width

Set the width of the RDP window.

Domain and host values

The domain and host values are used to connect to the remote system. Their values may depend on how the managed system is set up, and whether it is push or local service mode, manually or automatically discovered.

The domain must be the DNS Domain Name or NetBIOS name. It should not be an IP address. The reason is that the Windows logon requires the account ID and the context (domain/local machine) to identify the administrative user. If an IP address is used in place of a proper name, the connection will fail.

Bravura Privilege gets the replacement value for %host% from the managed system’s address, or the ’name’ attribute for discovered systems. You could choose to leave the value as an IP address. Windows Server 2008 and above supports an IP address for the host.

If the address does not contain the DNS name (for example, if it is an IP address) and you want it to, you have several options:

  • If the system is local service mode, use one of the substitution values %NETBIOS% , %DNSHostname% , or %NetbiosDomain% depending on the type of account. Default is %NETBIOS% .

  • If the system is push mode, and if using the Windows NT connector, enable WINNT_EMIT_INFO and use %DNSHostname% . This allows the Windows NT connector to return the IP and DNS hostname on the reset operation.

  • If the system is push mode, and if using a scripted connector (agtssh , agtdos , agttelnet), configure the PSLang script to return the IP address and DNS hostname on the reset operation.

  • Use a managed system attribute set by the API Service ManageSystemAttrAdd function. The key-values set for the managed system can then be used for the host/domain settings.

  • Use a hardcoded value.

  • Let the user override the value.

When an user checks out a domain account, the user has the option to select from a list of domain member computers to connect to. To enable this, the ”host” attribute must have the ability to be overridden by the user, and the ”host search” attribute is set to true. As well, discovered systems must be listed from the Active Directory target.

Local service managed system values

The terminal services plugin connects to the domain set in the managed system’s address field by default.

When you install the Bravura Privilege local service, it transmits the information about the workstation, including:

  • DNS Domain name

  • NetBIOS domain name

  • Fully qualified DNS name

  • NetBIOS name

  • Physical DNS domain name

  • Physical fully qualified DNS name

  • Physical DNS host name

  • Physical NetBIOS name

You can view the information for a workstation by clicking Manage the system > Privileged access > Managed systems > < Workstation ID > , then scrolling down to the information table below the account table.

The attribute names can be used to substitute values for the domain and host attributes for the pswxtsvc ; for example you can set the domain value to %NETBIOS%, %DNSHostname%, or %NetbiosDomain%.

In-browser Remote App: guacamole-remote-app

The guacamole-remote-app Guacamole access disclosure plugin provides users with remote access to applications hosted on a Windows server or client managed system using Remote Desktop Connection (RDC). This control provides automatic connection to the managed system without the need to enter the administrative credentials for the managed account and is compatible with session recording.

You can modify the following default attributes to control the behavior of guacamole-remote-app :

color-depth

Set the preferred color depth of the display in bits per pixel. Available values are 8, 16, 24 and 32.

disable-audio

Disable audio driver. This reduces the bandwidth of the session. This is set to true by default.

domain

Set the domain the user account is a member of. This is set to %netBIOSDomainName% by default.

See Domain and host values for further information.

enable-printing

Enable printing to a virtual PDF printer. This is set to false by default.

guacamole-url

Set the URL of the Guacamole service. The format is <address> <port>/<webappname>.

height

Set the height of the RDP window.

hostname

Set the IP or DNS of the server. This is set to %server% by default.

ignore-cert

Ignore certificate from the RDP server. This is set to False by default.

port

Set the connection port of the server.

remote-app

Define the RemoteApp program. This should be in the format ||<program> .

remote-app-args

Set the command line arguments of the RemoteApp program.

remote-app-dir

Set the working directory of the RemoteApp program.

security

Set the security mode for the connection. This is set to rdp by default.

width

Set the width of the RDP window.

In-browser SSH: guacamole-ssh

The guacamole-ssh Guacamole access disclosure plugin provides users with remote access to a server using Secure Shell (SSH). This control provides automatic connection to the managed system without the need to enter the administrative credentials for the managed account and is compatible with session recording.

You can modify the following default attributes to control the behavior of guacamole-ssh :

color-scheme

Set the color scheme to use for the terminal emulator.

font-name

Name of font to render on the terminal emulator. By default, a monospace font will be used.

font-size

Size of font to render on the terminal emulator. By default, the font will be set to size 12.

guacamole-url

Set the url of the Guacamole service. The format is ’ <address> : <port> / <webappname> ’.

hostname

Set the IP or DNS of the server. This is set to %server% by default.

See Domain and host values for further information.

passphrase

Set the passphrase to use with a private key, if required.

port

Set the connection port of the server.

private-key

Set the private key to use when connecting, if required.

In-browser Telnet: guacamole-telnet

The guacamole-telnet Guacamole access disclosure plugin provides users with remote access to a server using Telnet. This control provides automatic connection to the managed system without the need to enter the administrative credentials for the managed account and is compatible with session recording.

To use this control, Telnet must be installed and enabled on the managed system.

You can modify the following default attributes to control the behavior of guacamole-telnet :

color-scheme

Set the color scheme to use for the terminal emulator.

font-name

Name of font to render on the terminal emulator. By default, a monospace font will be used.

font-size

Size of font to render on the terminal emulator. By default, the font will be set to size 12.

guacamole-url

Set the URL of the Guacamole service. The format is ’ <address>:<port>/<webappname> ’.

hostname

Set the IP or DNS of the server. This is set to %server% by default.

See Domain and host values for further information.

password-regex

The regular expression to use when searching for where to enter the managed account password. By default, this is set to [Pp]assword: . If unspecified, Guacamole will use a reasonable default value.

port

Set the connection port of the server.

username-regex

The regular expression to use when searching for where to enter the managed account username. By default, this is set to [Ll]ogin: . If unspecified, Guacamole will use a reasonable default value.

In-browser VNC: guacamole-vnc

The guacamole-vnc Guacamole access disclosure plugin provides users with remote access to a server using Virtual Network Computing (VNC). This control provides automatic connection to the managed system without the need to enter the administrative credentials for the managed account and is compatible with session recording.

In order to use this control, VNC must be installed and enabled on the managed system.

You can modify the following default attributes to control the behavior of guacamole-vnc :

autoretry

Set the number of times to retry connection before failing. This is set to 0 by default.

color-depth

Set the preferred color depth of the display in bits per pixel. Available values are 8, 16, 24 and 32.

cursor

Set whether to render a mouse cursor locally or remotely. This is set to local by default.

encodings

Space-delimited list of encoding to use by libvncclient. Guacamole will use supported encodings by default.

guacamole-url

Set the url of the Guacamole service. The format is ’ <address> : <port> / <webappname> ’.

hostname

Set the IP or DNS of the server. This is set to %server% by default.

See Domain and host values for further information.

port

Set the connection port of the server.

read-only

Allows the user to view the display but not make any modifications. This is set to false by default.

swap-red-blue

Swaps colors of red and blue, used to correct incorrect displays. This is set to false by default.

Guacamole integration details

Bravura Privilege can provide access to remote systems using access disclosure plugins for Guacamole. Guacamole is a third-party remote desktop gateway that supports standard protocols including RDP, SSH, VNC, and Telnet. It is clientless, which means there are no additional software or drivers needed to view the access disclosure plugins on your workstation; all that is required is a dedicated Linux-based system to act as the Guacamole remote desktop gateway. The access disclosure plugins can then displayed on an HTML5-supported web browser.

There are two main pieces of software that run on the Guacamole gateway:

  • The guacd service, which is a server package that acts as a proxy that connects to the managed system;

  • The guacamole package, a Java web applet that runs on Apache Tomcat,

    • guacamole acts as client to the guacd service and as server to the user's browser

    • It also acts as client to the Bravura Privilege sessmonc CGI to which it sends session monitoring data if that feature is configured.

Guacamole access disclosure plugins have similar functionality as the native access disclosure plugins, but instead of having to manage a diverse set of local programs for remote access to target systems, provides a convenient, centrally-configured thin client. It also completely hides the password from the target system administrators (unlike native disclosures, which normally provide the password in plain text on the command line which is captured in the admin's workstation Task Manager process and in the Windows Event log.)

The plugin controls contain default attributes to customize behavior, and are compatible with session recording.

The only drawback of the Guacamole disclosures is the need to install and maintain the third-party Guacamole services on Linux proxy systems, and to calculate how many such systems are required for the amount of users who can disclose access at the same time.

How it works

  1. A user checks out a single account or account set and accesses a Guacamole disclosure plugin. This redirects the user to a specific URL on the Guacamole gateway.

  2. The URL opens a browser window that contains specific information about the managed account checked out, including the checkout ID, account ID, and the type of access disclosure plugin requested.

  3. The Guacamole gateway contacts the Bravura Privilege server using the CheckoutStatusGet and CheckoutParamsGet API calls to get information about the status and validity of the account checked out.

  4. If the check-out is deemed valid, the Guacamole gateway initiates the disclosure session to the managed system and shows the resulting screen in the browser window.

  5. The user can now interact with the managed system from that browser window.

  6. The Guacamole gateway contacts the Bravura Privilege server using the CheckoutStatusGet API call periodically until the checkout is no longer valid or until the user closes the disclosure session.

There is greater flexibility when using Guacamole access disclosure plugins. It can be viewed on commonly used browsers such as Google Chrome, Mozilla Firefox and Microsoft Edge. Unlike native access disclosure plugins which are limited to Windows, you can view Guacamole access disclosure plugins on other operating systems such as Linux, provided that it has a HTML5-compatible browser. Guacamole access disclosure plugins can also be viewed on mobile devices such as smart phones and tablets.

Guacamole access disclosure plugins have similar functionality as the native access disclosure plugins. The controls contain default attributes to customize behavior, and are compatible with session recording.

Prepare for Guacamole setup

This section outlines the steps for setting up Guacamole. In sequence, you will need to:

  1. Decide which CentOS/RHEL version will be used as the Guacamole server.

    • The following versions are supported:

      • Centos 8 Stream / RHEL 8 64-bit

      • Centos 9 Stream / RHEL 9 64-bit

  2. View the Guacamole benchmarking metrics to determine the optimal system requirements for the Guacamole server.

  3. Configure proxy server settings for the Guacamole server. To do this, edit the /etc/profile file (as root user):

    vi /etc/profile

    For example, add the following lines to the bottom of the file:

    PROXY_URL="http://<proxyaddress>:<port>/"
    
    export http_proxy="$PROXY_URL"
    export https_proxy="$PROXY_URL"
    export ftp_proxy="$PROXY_URL"
    export no_proxy="127.0.0.1,localhost"
             
    # For curl
    
    export HTTP_PROXY="$PROXY_URL"
    export HTTPS_PROXY="$PROXY_URL"
    export FTP_PROXY="$PROXY_URL"
    export NO_PROXY="127.0.0.1,localhost"

    Replace <proxyaddress> and <port> with the IP address and port number of the proxy server, respectively. Note that this is based on a proxy server using HTTP protocol; further modifications are required if the proxy server uses HTTPS.

    Save the file.

  4. Source the file to start using the proxy settings:

    source /etc/profile
  5. Ensure the Guacamole server is up to date.

    For Centos 8 / RHEL 8 or newer:

    dnf update 
  6. Configure Guacamole remote desktop gateway

  7. Configure Guacamole access disclosure plugins

  8. (Optional) Secure Guacamole connections using SSL

Important

  • It is highly recommended that you follow the above steps in sequence, otherwise you may encounter configuration issues.

  • Before editing any file mentioned in this documentation, it is recommended to make a backup of that file first.

  • If you encounter issues at any point, check out the Troubleshoot configuration problems section.

Configure Guacamole remote desktop gateway

There are a couple methods of installing the Guacamole remote desktop gateway:

  • Using Docker : Docker is a daemon that runs applications with all of the required dependencies and libraries that are bundled into one package, or ”container”. Docker is open-source and can be installed on many platforms including Windows, Linux and Mac OS.

  • Using Podman : As of CentOS 8/RHEL 8, Docker support has been dropped in favor of a similar container engine called Podman. Podman is daemonless and can run multiple containers in “pods”.

Install Guacamole using Docker

The following steps are based on a CentOS 7 64-bit distribution. All steps performed on the Guacamole server should be performed as root user.

Obtain the idmunix-rhel-el8.x64.tar.gz or idmunix-rhel-el9.x64.tar.gz file from <instancedir>\addon\idmunix on the Bravura Privilege server and copy it into the Guacamole server under the /root directory.

  1. Navigate to the root directory:

    cd /root
  2. Unzip the idmunix-rhel-el8.x64.tar.gz file:

    tar -xf idmunix-rhel-el8.x64.tar.gz
  3. If the Guacamole server will use a proxy server, update the Dockerfile for the guacamole container.

    1. Navigate to the idmunix-rhel-el8.x64/docker/guacamole directory:

      cd /root/idmunix-rhel-el8.x64/docker/guacamole
    2. Modify the DockerFile by uncommenting one of the following lines according to your configuration:

      For HTTPS proxy only:

      ENV CATALINA_OPTS -Dhttps.proxyHost=<proxyhost> -Dhttps.proxyPort=<proxyport> -Dhttps.nonProxyHosts=\"localhost|127.0.0.1|192.168.0.1\"

      For HTTP proxy only:

      ENV CATALINA_OPTS -Dhttp.proxyHost=<proxyhost> -Dhttp.proxyPort=<proxyport> -Dhttp.nonProxyHosts=\"localhost|127.0.0.1|192.168.0.1\"

      For both HTTP and HTTPS proxy :

      ENV CATALINA_OPTS -Dhttps.proxyHost=<proxyhost> -Dhttps.proxyPort=<proxyport> -Dhttps.nonProxyHosts=\"localhost|127.0.0.1|192.168.0.1\" -Dhttp.proxyHost=<proxyhost> -Dhttp.proxyPort=<proxyport> -Dhttp.nonProxyHosts=\"localhost|127.0.0.1|192.168.0.1\"

      Replace <proxyhost> and <proxyport> with the IP address and port number of the proxy server, respectively.

    3. Save the file.

  4. Navigate to the idmunix-rhel-el8.x64/docker directory:

    cd /root/idmunix-rhel-el8.x64/docker/
  5. Build the Docker image:

    docker compose build
  6. Create and start the Docker container:

    docker compose up -d

    If using Version 1 of the Docker Compose repository, the command is docker-compose.

  7. Open a browser window on a server or workstation that can access the Guacamole server using port 8080, and provide the following URL:

    http://<DNSName-of-guacamole-server>:8080/pam-guacamole

    A black screen with the following message will be displayed, however this is expected at the setup stage:

    Configuring guacamole using docker-compose-error.png

Stopping the container

To stop the Docker container run:

docker compose down

Starting the container

To start the Docker container; for example, after restarting the Guacamole server, run:

docker compose up -d

Running the Docker container as a service

Docker containers can be controlled using systemd . This is useful when you want to start Guacamole automatically upon reboot of the Guacamole server.

  1. Create a service called guacamole.service:

    sudo nano /etc/systemd/system/guacamole.service
  2. In Edit mode, insert the following into guacamole.service:

    [Unit]
    Description=Guacamole service
    Requires=docker.service
    After=network.target
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/local/bin/docker-compose -f /root/idmunix-rhel-el8.x64/docker/docker-compose.yml
                up -d
             
    ExecStop=/usr/local/bin/docker-compose -f /root/idmunix-rhel-el8.x64/docker/docker-compose.yml
                down
             
    [Install]
    WantedBy=multi-user.target

    Modify the path to the docker-compose.yml file should you move this to a different directory.

  3. Save the file.

  4. Reload systemd files:

    systemctl daemon-reload
  5. Enable guacamole.service to run at boot:

    systemctl enable guacamole.service
  6. Ensure no errors are returned. If so, view the status of the service by running:

    systemctl status guacamole.service

Start the Guacamole service by running:

systemctl start guacamole.service

Stop the Guacamole service by running:

systemctl stop guacamole.service

Logging

Tail the logs for the running containers with the following commands:

docker logs -f guacd
docker logs -f guacamole
Install Guacamole using Podman

The following steps are based on a CentOS 8 and Centos 9 Stream 64-bit distribution. All steps performed on the Guacamole server should be performed as root user.

  1. Install the EPEL repo.

    dnf -y install epel-release
  2. Install podman-compose.

    dnf -y install podman-compose
  3. Obtain the idmunix-rhel-el8.tar.gz or idmunix-rhel-el9.x64.tar.gz file from <instancedir>\addon\idmunix on the Bravura Privilege server and copy it into the Guacamole server under the /root directory.

  4. Navigate to the root directory:

    cd /root
  5. Unzip the idmunix-rhel-el8.x64.tar.gz file:

    tar -xf idmunix-rhel-el8.x64.tar.gz
  6. If the Guacamole server will use a proxy server, update the Dockerfile for the guacamole container.

    1. Navigate to the idmunix-rhel-el8.x64/docker/guacamole directory:

      cd /root/idmunix-rhel-el8.x64/docker/guacamole
    2. Modify the DockerFile by uncommenting one of the following lines according to your configuration:

      For HTTPS proxy only:

      ENV CATALINA_OPTS -Dhttps.proxyHost=<proxyhost> -Dhttps.proxyPort=<proxyport> -Dhttps.nonProxyHosts=\"localhost|127.0.0.1|192.168.0.1\"

      For HTTP proxy only:

      ENV CATALINA_OPTS -Dhttp.proxyHost=<proxyhost> -Dhttp.proxyPort=<proxyport> -Dhttp.nonProxyHosts=\"localhost|127.0.0.1|192.168.0.1\"

      For both HTTP and HTTPS proxy :

      ENV CATALINA_OPTS -Dhttps.proxyHost=<proxyhost> -Dhttps.proxyPort=<proxyport> -Dhttps.nonProxyHosts=\"localhost|127.0.0.1|192.168.0.1\"
                        -Dhttp.proxyHost=<proxyhost> -Dhttp.proxyPort=<proxyport> -Dhttp.nonProxyHosts=\"localhost|127.0.0.1|192.168.0.1\"
                     

      Replace <proxyhost> and <proxyport> with the IP address and port number of the proxy server, respectively.

    3. Save the file.

  7. Navigate to the idmunix-rhel-el8.x64/docker directory:

    cd /root/idmunix-rhel-el8.x64/docker/
  8. Build the Docker image using podman-compose:

    podman-compose build
  9. Create and start the Docker container:

    podman-compose up -d

    When prompted to select an image, choose docker.io/guacamole/guacd:1.5.3

  10. Open a browser window on a server or workstation that can access the Guacamole server using port 8080, and provide the following URL:

    http://<DNSName-of-guacamole-server>:8080/pam-guacamole

    A black screen with the following message will be displayed, however this is expected at the setup stage:

    Configuring guacamole using docker-compose-error.png

Stopping the container

To stop the Docker container run:

podman-compose down

Starting the container

  1. Navigate to the idmunix-rhel-el8.x64/docker directory:

    cd /root/idmunix-rhel-el8.x64/docker/
  2. Start the Docker container using podman-compose:

    podman-compose up -d

Running the Docker container as a service

Docker containers can be controlled using systemd . This is useful when you want to start Guacamole automatically upon reboot of the Guacamole server.

  1. Create a service called guacamole.service:

    sudo nano /etc/systemd/system/guacamole.service
  2. In Edit mode, insert the following into guacamole.service:

    [Unit]
    Description=Guacamole service
    Requires=podman.socket
    After=network.target
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=podman-compose -f /root/idmunix-rhel-el8.x64/docker/docker-compose.yml up
                -d
             
    ExecStop=podman-compose -f /root/idmunix-rhel-el8.x64/docker/docker-compose.yml down
    [Install]
    WantedBy=multi-user.target

    Modify the path to the docker-compose.yml file should you move this to a different directory.

  3. Save the file.

  4. Reload systemd files:

    systemctl daemon-reload
  5. Enable guacamole.service to run at boot:

    systemctl enable guacamole.service
  6. Ensure no errors are returned. If so, view the status of the service by running:

    systemctl status guacamole.service

Start the Guacamole service by running:

systemctl start guacamole.service

Stop the Guacamole service by running:

systemctl stop guacamole.service

Logging

Tail the logs for the running containers with the following commands:

podman logs -f guacd
podman logs -f guacamole

Configure Guacamole access disclosure plugins

At a minimum, to use Guacamole access disclosure plugins, the URL of the Guacamole service must be set. To do this:

  1. Log in to the Bravura Privilege instance as superuser.

  2. Click Manage the system > Privileged access > Access disclosure plugins.

  3. Select a Guacamole access disclosure plugin. See Types of access disclosure plugins for a list of available plugins.

  4. Set guacamole-url. It must be set using the following format: <address>:<port>/<webappname>

    • address: The IP address or server name of the Guacamole remote desktop gateway. This must begin with http:// or https://, depending on your configuration.

    • port: The port number the Guacamole service is listening on. This should either be set to 8080 or 8443, depending on your configuration.

    • webappname: The web application name. This should be set to pam-guacamole .

    • For example:

      • http://linux1.bravura1.corp:8080/pam-guacamole

      • https://linux1.bravura1.corp:8443/pam-guacamole

  5. Click Update.

  6. Update the guacamole-url for each In-Browser disclosure plugin you wish to use.

  7. Click Next.

  8. Click Finish.

Secure Guacamole connections using SSL

In order to secure Guacamole connections using SSL, please ensure the following have been created before proceeding:

  • An SSL certificate for the Bravura Fabric server (we will use bravuracert.cer as an example)

  • An SSL certificate for the Guacamole server (we will use guacamole.cer as an example)

  • A keystore for guacamole.cer on the Guacamole server (we will use keystore.jks as an example)

It is assumed the reader knows how to generate these items, otherwise contact support@bravurasecurity.com for assistance.

Note

keytool is a certificate management utility will be used to import the Bravura Fabric server SSL certificate into a truststore. If your version of CentOS/RHEL does not have this installed, you need to install java. For example as root user, run yum install java or dnf install java depending on your CentOS/RHEL version.

  1. On the Guacamole server, navigate to the /root directory:

    cd /root
  2. Create a new directory called certificates :

    mkdir certificates
  3. Place keystore.jks into the certificates directory.

  4. Copy bravuracert.cer from the Bravura Security Fabric server to the Guacamole server and place it in the certificates directory.

  5. Navigate to the certificates directory.

    cd /root/certificates
  6. Run keytool to import the bravuracert.cer certificate to a truststore:

    keytool -import -v -trustcacerts -alias <alias> -file bravuracert.cer -keystore truststore.jks

    Replace <alias> with a unique ID (ie. bravurainst)

    It will ask for a truststore password, and prompt you to trust the certificate:

    [root@bravura-guacamole certificates]# keytool -import -v -trustcacerts -alias bravurainst
                -file bravuracert.cer -keystore truststore.jks 
             
    Enter keystore password: 
    Re-enter new password: 
    Owner: CN=fabric-svr1.bravura1.corp 
    Issuer: CN=fabric-svr1.bravura1.corp 
    Serial number: 16c6fd2eaee998ac4d24e204b4e035ee 
    Valid from: Fri Feb 10 16:32:44 MST 2023 until: Sat Feb 10 16:52:44 MST 2024 
    Certificate fingerprints: 
             SHA1: E8:F4:C7:BC:CE:05:BD:B1:A3:B6:9D:33:28:B8:D6:41:5B:AC:F0:D4 
             SHA256: 6F:C7:29:03:7B:24:2E:98:E1:B4:4A:E8:9C:C7:A7:86:16:87:D6:71:98:23:22:32:30:2F:83:6C:E5:BC:92:AD
                
             
    Signature algorithm name: SHA256withRSA 
    Subject Public Key Algorithm: 2048-bit RSA key 
    Version: 3 
     
    Extensions: 
     
    #1: ObjectId: 2.5.29.37 Criticality=false 
    ExtendedKeyUsages [ 
      clientAuth 
      serverAuth 
    ] 
     
    #2: ObjectId: 2.5.29.15 Criticality=true 
    KeyUsage [ 
      DigitalSignature 
      Key_Encipherment 
    ] 
    #3: ObjectId: 2.5.29.17 Criticality=false 
    SubjectAlternativeName [ 
      DNSName: fabric-svr1.bravura1.corp 
    ] 
    #4: ObjectId: 2.5.29.14 Criticality=false 
    SubjectKeyIdentifier [ 
    KeyIdentifier [ 
    0000: E0 94 85 4D C7 03 D4 E5   95 EC 11 8F 7B D5 4A CB  ...M..........J. 
    0010: 0E A4 77 99                                        ..w. 
    ] 
    ] 
    Trust this certificate? [no]:  y 
    Certificate was added to keystore 
    [Storing truststore.jks]

Next steps

Self-signed certificates

If you are using self-signed SSL certificates for the Guacamole server, you will need to deploy these certificates on any system that will be used to launch Guacamole sessions. If not installed, web browsers will return a ERR_CERT_AUTHORITY_INVALID error message because it cannot validate the site’s SSL certificate.

Perform the following steps as a user with administrative permissions, for each system that will be used to launch Guacamole sessions. This is based on a Windows environment.

  1. For each system that will be used to launch Guacamole sessions, create a new directory to store the Guacamole certificate. (ie. C:\guacamole_certificates)

  2. Copy over the guacamole.cer file from the Guacamole server to the directory specified in the previous step.

  3. Close any open web browser windows.

  4. From the directory where the guacamole.cer certificate is located, double click on the file.

  5. Click Install Certificate…

  6. Choose the Store Location (default Current User)

    It is recommended that the store location be set to Local Machine, otherwise each individual user on the system will need to install the certificate.

  7. Click Next

  8. Select Place all certificates in the following store

  9. Click Browse…

  10. Select Trusted Root Certification Authorities.

  11. Click OK.

  12. Click Next.

  13. Click Finish.

  14. Click Yes to accept the security warning.

  15. Click OK to close the import wizard.

  16. Open a web browser, and specify the DNS name of the Guacamole server in the address bar:

    https://<DNSName-of-guacamole-server>

    You should no longer see the ERR_CERT_AUTHORITY_INVALID error message.

Configure Guacamole with SSL using Docker

The following steps are based on a Guacamole installation using Docker . All steps performed on the Guacamole server will be done as root user.

  1. Navigate to the idmunix-rhel-el8.x64/docker or idmunix-rhel-el9.x64/docker directory.

    cd /root/idmunix-rhel-el8.x64/docker/
  2. Start the Docker container if not already done so:

    docker compose up -d
  3. From the same directory, modify docker-compose.yml , by adding port 8443 to the list of ports. The file should look like this:

    version: "3" 
    services: 
      guacd: 
        build: 
          context: ./guacd 
        image: guacd 
        container_name: guacd 
        deploy: 
          replicas: 1 
          restart_policy: 
            condition: on-failure 
        networks: 
          - guac 
      guacamole: 
        build: 
          context: ./guacamole 
        image: guacamole 
        container_name: guacamole 
        deploy: 
          replicas: 1 
          restart_policy: 
            condition: on-failure 
        ports: 
          - "8080:8080" 
          - "8443:8443" 
        networks: 
          - guac 
    networks: 
      guac: 

     

    Save the file.

  4. From the docker directory, navigate to the guacamole directory.

    cd /root/idmunix-rhel-el8.x64/docker/guacamole
  5. Modify Dockerfile , by exposing port 8443. The file should look like this:

    # Use args for Tomcat image label to allow image builder to choose alternatives 
    # such as `--build-arg TOMCAT_JRE=jre8-alpine` 
    # 
    ARG TOMCAT_VERSION=9 
    ARG TOMCAT_JRE=jre8 
     
    FROM tomcat:${TOMCAT_VERSION}-${TOMCAT_JRE} 
     
    COPY . / 
     
    EXPOSE 8080 
    EXPOSE 8443 
     
    ENV GUACAMOLE_HOME /etc/guacamole/ 
    CMD ["catalina.sh", "run"] 

    Save the file.

  6. Navigate to the idmunix-rhel-el8.x64/docker/guacamole/usr/local/tomcat directory:

    cd /root/idmunix-rhel-el8.x64/docker/guacamole/usr/local/tomcat
  7. Create 2 directories called conf and ssl :

    mkdir conf
    mkdir ssl
  8. Copy over keystore.jks and truststore.jks to the ssl directory.

    cp /root/certificates/truststore.jks /root/idmunix-rhel-el8.x64/docker/guacamole/usr/local/tomcat/ssl/
    cp /root/certificates/keystore.jks /root/idmunix-rhel-el8.x64/docker/guacamole/usr/local/tomcat/ssl/    
  9. From the tomcat directory, navigate to the bin directory.

    cd /root/idmunix-rhel-el8.x64/docker/guacamole/usr/local/tomcat/bin
  10. Modify setenv.sh , by adding a line to include a line to the path of the truststore file and password:

    export JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=/usr/local/tomcat/ssl/truststore.jks
                -Djavax.net.ssl.trustStorePassword=<password>" 

    trustStore is the full path to the truststore.jks file

    trustStorePassword is the password you provided for the truststore.jks file. (replace <password>)

    Save the file.

  11. Enter the guacamole container context:

    docker exec -it guacamole /bin/bash

    To confirm that you are in the guacamole container context, you will see:

    root@<containerid>:/usr/local/tomcat#

    Where <containerid> is the Guacamole container ID.

  12. You will need to install a text editor to be able to edit the file from within the container; for example nano :

    apt-get update 
    apt-get install nano
  13. Open server.xml in the conf directory using nano :

    nano conf/server.xml
  14. Modify server.xml, by adding the connector definition for enabling SSL protocol; for example:

    <Connector 
       protocol="org.apache.coyote.http11.Http11NioProtocol" 
       port="8443" maxThreads="200" 
       scheme="https" secure="true" SSLEnabled="true" 
       keystoreFile="ssl/keystore.jks" keystorePass="<password>" 
       clientAuth="false" sslProtocol="TLS"/> 

    keystoreFile is the location of the keystore.jks file within the guacamole container context.

    keystorePass is the password you provided for the keystore.jks file (replace <password> )

    The file should look something like this:

    ...
        <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" /> 
        <!-- A "Connector" using the shared thread pool--> 
        <!-- 
        <Connector executor="tomcatThreadPool" 
                   port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" /> 
        -->
        <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 
             This connector uses the NIO implementation. The default 
             SSLImplementation will depend on the presence of the APR/native 
             library and the useOpenSSL attribute of the AprLifecycleListener. 
             Either JSSE or OpenSSL style configuration may be used regardless of 
             the SSLImplementation selected. JSSE style configuration is used below. 
        --> 
        <Connector protocol="org.apache.coyote.http11.Http11NioProtocol" 
                    port="8443" maxThreads="200" 
                    scheme="https" secure="true" SSLEnabled="true" 
                    keystoreFile="ssl/keystore.jks" keystorePass="password123" 
                    clientAuth="false" sslProtocol="TLS"/> 
        <!-- 
        <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" 
                   maxThreads="150" SSLEnabled="true"> 
            <SSLHostConfig> 
                <Certificate certificateKeystoreFile="conf/localhost-rsa.jks" 
                             type="RSA" /> 
            </SSLHostConfig> 
        </Connector> 
        --> 
    ...

    Save the file.

  15. Type exit to leave the guacamole container context.

  16. Navigate to the idmunix-rhel-el8.x64/docker directory.

    cd /root/idmunix-rhel-el8.x64/docker/
  17. Copy server.xml from the guacamole container. This will prevent the file from being overwritten every time the guacamole container is built:

    docker cp guacamole:/usr/local/tomcat/conf/server.xml guacamole/usr/local/tomcat/conf/

    For future updates to the server.xml file, edit the file from guacamole/usr/local/tomcat/conf/ instead of going into the container context. The latter will be overwritten should you rebuild the guacamole container.

  18. Stop the Docker container.

    docker-compose down
  19. Rebuild the Docker containers and image.

    docker-compose up --force-recreate --build -d
  20. Open a browser window on a system where the Guacamole server SSL certificate is installed, and access the Guacamole server using https and port 8443; for example:

    https://<DNSName-of-guacamole-server>:8443/pam-guacamole
  21. Confirm that the Guacamole server is secured, as indicated by the lock on the address bar.

    A black screen with the following message will be displayed, however this is expected at the setup stage:

    Configuring guacamole using docker-compose-error.png
  22. Update the guacamole-url for Guacamole access disclosure plugins to use port 8443.

Configure Guacamole with SSL using Podman

The following steps are based on a Guacamole installation using Podman . All steps performed on the Guacamole server will be done as root user.

  1. Navigate to theidmunix-rhel-el8.x64/docker or idmunix-rhel-el9.x64/docker directory.

    cd /root/idmunix-rhel-el8.x64/docker/
  2. Start the Docker container if not already done so:

    podman-compose up -d
  3. From the same directory, modify docker-compose.yml, by adding port 8443 to the list of ports. The file should look like this:

    version: "3" 
    services: 
      guacd: 
        build: 
          context: ./guacd 
        image: guacd 
        container_name: guacd 
        deploy: 
          replicas: 1 
          restart_policy: 
            condition: on-failure 
        networks: 
          - guac 
      guacamole: 
        build: 
          context: ./guacamole 
        image: guacamole 
        container_name: guacamole 
        deploy: 
          replicas: 1 
          restart_policy: 
            condition: on-failure 
        ports: 
          - "8080:8080" 
          - "8443:8443" 
        networks: 
          - guac 
    networks: 
      guac: 

    Save the file.

  4. From the docker directory, navigate to the guacamole directory.

    cd /root/idmunix-rhel-el8.x64/docker/guacamole
  5. Modify Dockerfile, by exposing port 8443. The file should look like this:

    # Use args for Tomcat image label to allow image builder to choose alternatives 
    # such as `--build-arg TOMCAT_JRE=jre8-alpine` 
    # 
    ARG TOMCAT_VERSION=9 
    ARG TOMCAT_JRE=jre8 
     
    FROM tomcat:${TOMCAT_VERSION}-${TOMCAT_JRE} 
     
    COPY . / 
     
    EXPOSE 8080 
    EXPOSE 8443 
     
    ENV GUACAMOLE_HOME /etc/guacamole/ 
    CMD ["catalina.sh", "run"] 

    Save the file.

  6. Navigate to the idmunix-rhel-el8.x64/docker/guacamole/usr/local/tomcat directory:

    cd /root/idmunix-rhel-el8.x64/docker/guacamole/usr/local/tomcat
  7. Create two directories called conf and ssl :

    mkdir conf
    mkdir ssl
  8. Copy over keystore.jks and truststore.jks to the ssl directory.

    cp /root/certificates/truststore.jks /root/idmunix-rhel-el8.x64/docker/guacamole/usr/local/tomcat/ssl/
    cp /root/certificates/keystore.jks /root/idmunix-rhel-el8.x64/docker/guacamole/usr/local/tomcat/ssl/
  9. From the tomcat directory, navigate to the bin directory.

    cd /root/idmunix-rhel-el8.x64/docker/guacamole/usr/local/tomcat/bin
  10. Modify setenv.sh by adding a line to include a line to the path of the truststore file and password:

    export JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=/usr/local/tomcat/ssl/truststore.jks -Djavax.net.ssl.trustStorePassword=<password>"

    trustStore is the full path to the truststore.jks file

    trustStorePassword is the password you provided for the truststore.jks file. (replace <password> )

    Save the file.

  11. Enter the guacamole container context:

    podman exec -it guacamole /bin/bash

    To confirm that you are in the guacamole container context, you will see:

    root@guac:/usr/local/tomcat#
  12. You will need to install a text editor to be able to edit the file from within the container; for example nano :

    apt-get update
    apt-get install nano
  13. Open server.xml in the conf directory using nano :

    nano conf/server.xml
  14. Modify server.xml by adding the connector definition for enabling SSL protocol; for example:

    <Connector 
       protocol="org.apache.coyote.http11.Http11NioProtocol" 
       port="8443" maxThreads="200" 
       scheme="https" secure="true" SSLEnabled="true" 
       keystoreFile="ssl/keystore.jks" keystorePass="<password>" 
       clientAuth="false" sslProtocol="TLS"/> 

    keystoreFile is the location of the keystore.jks file within the guacamole container context.

    keystorePass is the password you provided for the keystore.jks file (replace <password> )

    The file should look something like this:

    ...
        <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" /> 
        <!-- A "Connector" using the shared thread pool--> 
        <!-- 
        <Connector executor="tomcatThreadPool" 
                   port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" /> 
        -->
        <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 
             This connector uses the NIO implementation. The default 
             SSLImplementation will depend on the presence of the APR/native 
             library and the useOpenSSL attribute of the AprLifecycleListener. 
             Either JSSE or OpenSSL style configuration may be used regardless of 
             the SSLImplementation selected. JSSE style configuration is used below. 
        --> 
        <Connector protocol="org.apache.coyote.http11.Http11NioProtocol" 
                    port="8443" maxThreads="200" 
                    scheme="https" secure="true" SSLEnabled="true" 
                    keystoreFile="ssl/keystore.jks" keystorePass="password123" 
                    clientAuth="false" sslProtocol="TLS"/> 
        <!-- 
        <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" 
                   maxThreads="150" SSLEnabled="true"> 
            <SSLHostConfig> 
                <Certificate certificateKeystoreFile="conf/localhost-rsa.jks" 
                             type="RSA" /> 
            </SSLHostConfig> 
        </Connector> 
        --> 
    ...

    Save the file.

  15. Type exit to leave the guacamole container context.

  16. Copy server.xml from the guacamole container. This will prevent the file from being overwritten every time the guacamole container is built:

    podman cp guacamole:/usr/local/tomcat/conf/server.xml guacamole/usr/local/tomcat/conf/

    For future updates to the server.xml file, edit the file located at guacamole/usr/local/tomcat/conf/ instead of accessing the container context. The latter will be overwritten should you rebuild the guacamole container.

  17. Stop the Docker container.

    podman-compose down
  18. Rebuild the Docker containers and image.

    podman-compose up --force-recreate --build -d
  19. Open a browser window on a system where the Guacamole server SSL certificate is installed, and access the Guacamole server using https and port 8443, for example:

    https://<DNSName-of-guacamole-server>:8443/pam-guacamole
  20. Confirm that the Guacamole server is secured, as indicated by the lock on the address bar.

    A black screen with the following message will be displayed, however this is expected at the setup stage:

    Configuring guacamole using docker-compose-error.png
  21. Update the guacamole-url for Guacamole access disclosure plugins to use port 8443.

Troubleshoot configuration problems

General installation issues
  • If you cannot download packages, try restarting the network or restarting the system.

  • If you are unable to install any of the RPMs and/or their dependencies, run the following command and try to install the RPMs again.

    yum clean all
  • If the Guacamole gateway is behind a firewall and cannot install packages using yum due to connection issues, add the proxy to the yum config file. To do this, edit the yum.conf file:

    vi /etc/yum.conf

    Add a new line at the bottom of the file with the proxy address:

    proxy=<proxy address>
General configuration issues
  • If you are launching a Guacamole disclosure plugin but it gives a connection error:

    • Ensure that the guacd proxy and web application service are running.

      • Test the connection from within the Guacamole server:

        Using curl:

        curl -L --noproxy '*' localhost:<port>/pam-guacamole | less

        Using wget:

        wget --no-proxy localhost:<port>/pam-guacamole
    • Ensure the firewall on the Guacamole server is not blocking port 8080 (or 8443 for SSL connections)

    • Ensure that the Guacamole gateway can ping the Bravura Privilege server and managed systems prior to connecting via access disclosure plugin, using the IP address, then the hostname. If the systems can be reached by IP address but not the hostname, add the hostname and corresponding IP address to the /etc/hosts file. If using Docker or Podman, you may need to add a hostname mapping to the docker-compose file.

    • Ensure that the Guacamole gateway can reach the Bravura Privilege server using port 80 (or 443 for SSL connections)

    • For In-Browser RDP, ensure that the managed account that is used to launch the Guacamole session has remote access to the managed system. This can be verified by manually opening up a Remote Desktop Connection session, or by using Remote Desktop disclosure (pswxtsvc) and logging in as the managed account.

    • Ensure that the security protocol is correct for the managed system you are trying to connect to. As of Guacamole 1.3, ‘any’ should automatically choose the correct protocol.

  • If you’re trying to connect to a Windows system older than Windows 10, ensure that the proper lines are uncommented in the guacd 's Dockerfile. Refer back to installation steps for Docker or Podman

  • If text is not displayed properly using Telnet or SSH, install a monospace font package for Telnet and SSH such as gnu-free-mono-fonts.

  • If clipboard capture is not working for session monitoring, a required dependency may be missing. Ensure that freerdp-plugins is installed.

  • You may find logging to be helpful in diagnosing Guacamole connection problems.

    • Log files on a Docker-installed environment can be viewed by running:

      docker logs guacd
      docker logs guacamole
    • Log files on a Podman-installed environment can be viewed by running:

      podman logs guacd
      podman logs guacamole
    • Log files on a CentOS/RHEL environment where Guacamole RPM packages are installed manually are located in:

      /var/log/tomcat
      /var/log/messages
Podman configuration issues
  • You may encounter the following error, despite connecting with the correct security type:

24825.png

This could be the result of connecting to a managed system that does not require a proxy. If a proxy is not required to access the managed system, modify the no_proxy list in /etc/profile to include the managed system. You will need to source the file again or log off and log back in to the Guacamole server for the proxy changes to take effect. Alternatively, add --http-proxy=false to the podman run commands. For example:

podman run -d --pod guac --name guacd --http-proxy=false guacd
podman run -d --pod guac --name guacamole --http-proxy=false guacamole
SSL configuration issues
  • Ensure that the /bin/ setenv.sh file contains the correct truststore, path and password.

  • Ensure that the /conf/ server.xml file contains the correct keystore, path and password.

  • Ensure that the passwords for the keystore.jks and truststore.jks files are correct.

    keytool -list -v -keystore <pathOfStoreFile>/<storeFileName>.jks
  • If you update /conf/ server.xml from within the guacamole container context, ensure that you copied it outside of the container or you will lose your changes if you rebuild the container.

  • You must access the instance using the DNS name you provided in the SSL certificates. Accessing it using localhost, or an IP address will result in warnings.

  • Ensure that the guacamole-url for the Guacamole access disclosure plugin contains the exact DNS name you provided for the Guacamole server SSL certificate.

  • If you continue to receive security warnings when accessing the Guacamole server, ensure that you have installed the SSL certificate in the correct location (Trusted Root Certification Authorities).

  • If you are using self-signed certificates, ensure that it is deployed on the system that will launch Guacamole sessions .

  • For self-signed certificates, you may need to update the Guacamole access disclosure plugins to ignore the SSL certificate. (set the ignore-cert disclosure attribute to True)

Benchmarking metrics for Guacamole

Several factors can affect the reliability of Guacamole. One of the major factors is memory usage on the Guacamole server. However, it can be challenging to determine the amount of memory Guacamole consumes. A single Guacamole session can initiate multiple guacd threads; each thread using varying amounts of memory. Plus, the amount of memory initially consumed by a Guacamole session will gradually increase as the session persists. Additionally, the tasks performed on the remote desktop screen can also impact memory consumption, as well as the display settings for the remote desktop screen. Furthermore, RDP sessions consume more memory than SSH sessions.

The following shows how to determine:

  • To determine the maximum number of concurrent Guacamole sessions based on the amount of memory (RAM) allocated on the Guacamole gateway in the worst case.

  • To determine the amount of memory (RAM) to be allocated on the Guacamole gateway for a given number of concurrent Guacamole sessions in the worst case.

Test methodology

To make things simple and consistent, 40 concurrent In-Browser RDP sessions will be launched. Each session will RDP to the same managed system using the same managed account, with the default display resolution of 1024x768 at 96 DPI (dots per inch), and will open a command line window upon login that covers most of the Remote Desktop screen, which will ping 3 reachable IP addresses every 2 seconds. This will simulate constant movement on the screen, which ideally would result in a more realistic worst-case scenario. It is assumed that in a normal case, users will periodically use Guacamole sessions throughout the checkout duration, rather than regularly.

The terms “memory” and “RAM” will be used interchangeably.

To get an idea of how much memory is consumed per Guacamole session, you need to determine the following metrics at each stage:

  1. The total RAM used on the Guacamole server before starting Guacamole

  2. The total RAM used on the Guacamole server after starting Guacamole

  3. The total RAM used on the Guacamole server after initiating a single Guacamole session and leave it running for at least 15-20 minutes – the longer the duration, the better

  4. The total RAM used on the Guacamole server after ending the active Guacamole session (this number will be different than stage 2)

The memory allocated when launching the initial Guacamole session is typically larger than subsequent Guacamole sessions. This is because some guacd processes will remain active even if all Guacamole sessions have terminated. Thus, the total RAM used at Stage 4 will differ from Stage 2. However, the memory consumed upon launching subsequent Guacamole sessions will be relatively consistent.

A useful tool to measure this information is htop , which can be installed on the Guacamole server using dnf install htop (or yum install htop). You can find more info at https://htop.dev

A minimum 4 core processor is recommended for the Guacamole server. On htop , you can determine the CPU usage based on the “Load average” metric. There are 3 values: the first value is the per minute average; the second value is the 5 minute average; and the third value is the 15 minute average. A value of 4.0 for a 4-core CPU would mean 100% utilization. If the Load Average consistently exceeds this number, it is an indication that additional cores need to be allocated to the Guacamole server based on the load.

Test exclusions

Session monitoring is not included in this test. Based on Guacamole benchmarking tests conducted previously, there does not appear to be any noticeable increase in memory usage when Session Monitor is enabled (screenshots, keystrokes and clipboard capture)

Other Guacamole disclosure plugins such as In-Browser SSH, In-Browser VNC, In-Browser RemoteApp and In-Browser Telnet will not be included in this test. In-Browser VNC and In-Browser Remote App should have similar memory requirements as In-Browser RDP; and In-Browser SSH and In-Browser Telnet should both be comparable but use considerably less memory than In-Browser RDP.

Test environment
  • Guacamole server

    • OS: CentOS 8 Stream 64-bit (virtual machine)

    • Internal memory: 6 GB RAM (recognized on system as 5.41 GB)

    • Processor: Intel Core i7-4790 @3.60GHz (4 processors)

    • Hard Drive: 12 GB

    • Guacamole version: 1.3

      • Installed using podman

      • SSL enabled

  • Bravura Privilege instance server

    • OS: Windows 2022 64-bit (virtual machine)

    • Internal Memory: 5GB RAM

    • Processor: Intel Core i7-4790 @3.60GHz (2 processors)

    • Hard Drive: 50 GB

    • Privilege version: 12.3.5 (build 32487)

  • Managed system

    • OS: Windows 2022 64-bit (virtual machine)

    • Internal Memory: 6 GB RAM

    • Processor: Intel Core i7-4790 @3.60GHz (4 processors)

    • Hard Drive: 50 GB

    • Remote Desktop Services (Terminal Services) installed

      • Remote Desktop session host configured to allow an unlimited number of concurrent connections

      • At least one user is part of the Remote Desktop Users group

Test results

The following test was performed:

  • 40 concurrent Guacamole In-Browser RDP sessions were launched

  • Each RDP session runs the same scheduled task upon login to the managed system

    • A scheduled task opens a command line window, set to the following:

      • Font : Size: 28 ; Font: MS Gothic

      • Layout : Screen Buffer Size: 65x9001 ; Window Size: 65x24 ; Window Position: 10x10

      • Colors (Screen Background): Selected Color Values: Red: 242 ; Green: 242 ; Blue: 242; Opacity: 86%

      • The scheduled task executes a batch script that pings 3 different IP addresses; 1 IP address is pinged every 2 seconds

  • The Guacamole sessions were left running for an 12 hour period, to ensure that no Guacamole sessions unexpectedly terminated based on the environment specifications given

  • The total memory usage for 40 Guacamole sessions was obtained after the 12 hour period had elapsed

  • The memory usage per Guacamole session is based on the difference of the total memory usage before a Guacamole session is closed and after the Guacamole session is closed

Table 1. Observed memory usage

Stage

Description

Total Memory Usage (GB)

Total Memory Usage (MB)

1

The total RAM used on the Guacamole server before starting Guacamole

0.557

557

2

The total RAM used on the Guacamole server after starting Guacamole

0.677

677

The difference in total RAM used between Stage 1 and Stage 2

0.12

120

3

The total RAM used on the Guacamole server after initiating a single Guacamole session and leave it running for 15-20 minutes

0.926

926

4

The total RAM used on the Guacamole server after ending the initial Guacamole session

0.81

810

The difference between the total RAM used after initiating and terminating the initial Guacamole session (Stage 4) and starting the Guacamole service (Stage 2)

0.249

249



The total memory usage was gathered after all 40 sessions were initiated and left running for more than 12 hours. One-by-one, each Guacamole session was terminated, and the updated total memory usage per x number of sessions was obtained. This is a more accurate measure of memory usage per Guacamole session instead of obtaining it immediately after the Guacamole session is launched because the memory usage can still fluctuate as time goes on.

Average memory usage per Guacamole session (GB)

Minimum memory usage per Guacamole session (GB)

Maximum memory usage per Guacamole session (GB)

0.0975

0.074

0.116

Average memory usage per Guacamole session (MB)

Minimum memory usage per Guacamole session (MB)

Maximum memory usage per Guacamole session (MB)

97.5

74

116

The maximum memory usage for a Guacamole session will be used to calculate the worst case, in this case, 116 MB.

Formula

To get the minimum amount of RAM in GB for y number of sessions:

z = (557 + 249 + xy) * 0.01

Where :

x = Amount of memory per Guacamole session (MB)

y = Total amount of sessions

z = Total memory (GB)

  • 557: The total RAM (MB) used in megabytes before starting Guacamole on the Guacamole server

  • 249: The additional RAM (MB) needed to start the Guacamole service and the memory that remains after terminating the initial Guacamole session (difference between Stage 4 and Stage 2)

  • xy: The amount of RAM allocated per Guacamole session, multiplied by the number of active sessions

  • 1GB = 1000 MB

Examples

For 10 Guacamole sessions:

z = (557 + 249 + 116x) * 0.01 
z = (806 + 116(10)) * 0.01 
z = (806 + 1160)) * 0.01 
z = 1966  * 0.01 
z = 1.97 GB 

For 50 Guacamole sessions:

z = (557 + 249 + 116x) * 0.01
z = (806 + 116(50)) * 0.01
z = (806 + 5800)) * 0.01
z = 6606 * 0.01
z = 6.61 GB

For 100 Guacamole sessions:

z = (557 + 249 + 116x) * 0.01
z = (806 + 116(100)) * 0.01
z = (806 + 11600)) * 0.01
z = 12406 * 0.01
z = 12.41 GB

For 200 Guacamole sessions:

z = (557 + 249 + 116x) * 0.01
z = (806 + 116(200)) * 0.01
z = (806 + 23200)) * 0.01
z = 24006 * 0.01
z = 24.01 GB

To get the maximum number of Guacamole sessions for y GB of RAM allocated to the Guacamole server:

x = floor((y – 557 – 249) / z)

Where :

x = Total amount of sessions

y = Free memory (GB)

z = Amount of memory per Guacamole session (MB)

  • 1GB = 1000 MB

Examples

For 5GB of memory:

x = floor((y - 557 - 249) / 116))
x = floor((y - 308) / 116)
x = floor((5000 - 308) / 116)
x = floor(4692 / 116)
x = 40.44 sessions or 40 sessions.

For 12 GB of memory:

x = floor((y - 557 - 249) / 116)
x = floor((y - 308) / 116)
x = floor((12000 - 308) / 116)
x = floor(11898 / 116)
x = 102.57 sessions or 102 sessions.

For 20 GB of memory:

x = floor((y - 557 - 249) / 116)
x = floor((y - 308) / 116)
x = floor((20000 - 308) / 116)
x = floor(19692 / 116)
x = 169.76 sessions or 169 sessions.
Other factors to consider
  • Network latency : Depending on the network connection, it’s possible that sessions may terminate if the network is extremely slow (ie. latency is greater than 3000ms)

  • CPU : It is best to continuously monitor the CPU usage on the Guacamole server. If you periodically notice some sessions terminating unexpectedly, especially when there is a lot of active Guacamole sessions, ensure that the Load average has not been exceeded based on the number of CPU cores allocated for the Guacamole server.

  • Screen resolution size : Setting a larger display resolution size for the Guacamole window will increase the memory usage, especially when work is being performed on the majority of the remote desktop screen.

  • By default, Microsoft Edge Chromium, Google Chrome and Mozilla Firefox automatically puts idle browser tabs to sleep to reduce memory usage. If a Guacamole session terminates unexpectedly, it may be because the browser itself has not replied back to the Guacamole server in a sufficient amount of time.

Website access disclosure plugins

Secure browser plugin: securebrowser

The securebrowser access disclosure plugin provides users with brokered access to a website without the need to enter the administrative credentials for the managed account and is compatible with session recording.

This requires installation of the Secure Browser app.

The securebrowser plugin is primarily used in conjunction with team management .

You can modify the following default attributes to control the behavior of securebrowser :

  • configuration_file The configuration file in JSON format.

  • webappjson_create If enabled, the user checking out the managed account can upload their own website applications. This is disabled by default.

  • webappjson_search By default, the user checking out the managed account has the ability to search and select a desired website application.

Collecting logs when the secure browser disclosure has issues

The secure browser extension uses a different technology to the native plugins and doesn't provide logging data to the logutil tool that is normally used for troubleshooting.

You can instead compare server logs for a successful attempt with those for a failed attempt, and try to identify the difference.

  1. Determine a way to get all user HTTP calls to the same server for testing.

  2. Increase logging to only the smonotu binary to Verbose (in the util\ directory on the server being contacted):

    psdebug -prog smonotu -level 99
  3. Rotate the log:

    ..\service\idmlogsvc -trace-restart
  4. Perform a successful disclosure for a user whose access works.

  5. Check idmsuite.log to ensure that smonotu logs at Verbose level (search for a line that contains both "smonotu.exe" and "Verbose"

    • If you find it, rename that log to idmsuite-success.log.

    • If not, verify the psdebug command was run in an administrative command prompt.

  6. Rotate the log again.

  7. Perform an unsuccessful disclosure for a user whose access doesn't work.

    If you can't get the issue to reproduce, it may be that the load balancer causes it, by not providing sticky sessions and sending disclosure HTTP requests to different servers.

  8. If the issue is reproduced, verify there are smonotu log entries, and if so, rename the log to idmsuite-failed.log.

  9. Remove the verbose logging:

    psdebug -prog smonotu -remove
  10. Zip up the two log files and send the resulting archive to Bravura Security Support.

Web app privileged sign-on: pswxwebapp

The pswxwebapp access disclosure plugin provides users brokered access to a website without the need to enter the administrative credentials for the managed account.

This is compatible with desktop Chrome browsers and requires installation of the Bravura Security browser extension.

The pswxwebapp plugin is primarily used in conjunction with Team Management.

You can modify the following default attributes to control the behavior of pswxwebapp :

  • configuration_file The configuration file in JSON format.

  • webappjson_create If enabled, the user checking out the managed account can upload their own website applications. This is disabled by default.

  • webappjson_search By default, the user checking out the managed account has the ability to search and select a desired website application.

Note

The logutil utility cannot capture pswxwebapp plugin activity.

Configuring global access disclosure options

You configure access disclosure plugins globally, and then override settings and behavior for different managed system policies if necessary. Attributes control the behavior of the access disclosure plugins.

Getting started

To configure system-wide access disclosure options:

  1. Click Manage the system > Privileged access > Access disclosure plugins.

  2. To define a:

    • New access disclosure plugin, click Add new… .

    • Existing access disclosure plugin, select the plugin you want to view or modify.

You can now:

  • Define common access disclosure parameters.

  • Modify attributes that control disclosure

  • Add attributes that control disclosure

Defining access disclosure plugins

You can add custom access disclosure plugins to make them available to managed system policies. For each access disclosure plugin, you can configure one or more attributes that modify the behavior of the plugin.

To define common parameters for an access disclosure plugin:

  1. Navigate to the access disclosure plugin configuration page

  2. Set the access disclosure plugin options as described in Table 2, “Access disclosure plugin global options.

    Caution

    For existing plugins, it is recommended that you only modify Description or the options to automatically add this plugin to new managed system policies.

  3. Click Update to modify an existing plugin, or Add new… to add a new plugin.

Table 2. Access disclosure plugin global options

Option

Description

ID

Automatically generated ID

Filename

The filename of the access disclosure plugin. The file must either be deployed to client workstations or located in the \<instance>\wwwdocs\ directory on the Bravura Security Fabric server

Class ID

The GUID of the access disclosure plugin. This is not applicable for Guacamole access disclosure plugins.

ActiveX server/type

The server name of the access disclosure plugin. This is not applicable for Guacamole access disclosure plugins

Version

The version of the access disclosure plugin

Description

The plugin description presented to users

Notes

Additional details about this plugin to be displayed under the description

Allow this as a selectable option for group sets

Check to make group sets selectable during managed system policy configuration

Allow this as a selectable option for current passwords

Check to make current passwords selectable during managed system policy configuration

Allow this as a selectable option for old passwords

Check to make old passwords selectable during managed system policy configuration

Allow this as a selectable option for SSH keys

Check to make SSH keys selectable during managed system policy configuration

Automatically enable for group sets on new managed system policies

New managed system policies created will include this plugin to access the current group sets

Automatically enable for current passwords on new managed system policies

New managed system policies created will include this plugin to access the current privileged password

Automatically enable for old passwords on new managed system policies

New managed system policies created will include this plugin to access old privileged passwords

Automatically enable for SSH keys on new managed system policies

New managed system policies created will include this plugin to access privileged accounts using SSH keys



Defining access disclosure attributes

You can add or modify attributes to customize the plugin behavior.

To define access disclosure plugin attributes:

  1. Navigate to the access disclosure plugin configuration page

  2. Select to update and modify an existing plugin, or Add new.. to add a new plugin

Table 3. access disclosure plugin attribute options

Option

Description

Name

The name of the plugin attribute. Cannot be modified after attribute has been added.

Description

The description of the plugin attribute.

Type

Choose the plugin attribute type:

  • Binary

  • Boolean

  • GUID

  • Integer

  • String

    Cannot be modified after attribute has been added.

User access

Sets the options that a user has for the attribute:

  • Locked: The user can see the control but not modify it

  • Override allowed: The user can modify the value

  • Hidden: The control is hidden from the user

    When at least one attribute for a plugin allows override, end users can save sessions with their preferred values.

    Allowing override for an attribute potentially allows users to modify options in such away to exploit and expose the password information. The option should be used with caution and only when absolutely required.

    If the "Override allowed" user access was set but revoked later on, any previous changes made to the attribute by the user will be removed in favor of the global attribute value. If this user access is re-enabled, the user-defined attribute value will be regained.

Default value

Use only if the user does not override the value, or it is not overridden at the managed system policy level.

Allowed values (comma-delimited list)

A restricted list of values that the attribute value can take. This option is only displayed for type integer and strings.

Value must match this regular expression

A value must be validated with this regular expression in order for the plugin to be enabled. This option is only displayed for type integer and strings.

Minimum

If set, no value can be less than the value set. This option is only displayed for type integer.

Maximum

If set, no value can be more than the value set. This option is only displayed for type integer.

Value is required

If checked, a value must be set in order for the plugin to be enabled. This option is only displayed for type integer and strings.



You can override these default settings on the managed system policy level. See Overriding global settings in managed system policies .

Configuring string plugin attribute values

All access disclosure plugin attributes of type String can be defined with variables. You can define discovered system attribute values in this manner.

To use the discovered system attribute as-is, simply enter the following in the attribute’s Default value field:

% <attribute name> %

For example, the default domain value for a remote desktop plugin is:

%netBIOSDomainName%

String attributes can be manipulated by using the following syntax:

%k:(start position):(end position):<attribute name>%

For example:

%netBIOSDomainName% = corporate.domain
%k:3:12:netBIOSDomainName% = porate.dom
%username% = CORP\account00
%k:5:username% = account00

Cloning access disclosure plugins

In some scenarios, it may be desirable to have multiple instances of the same access disclosure plugin but with different settings; for example:

  1. Some end users like to use a PuTTY terminal; others prefer Tera Term.

  2. A product administrator defines two disclosure plugins; one for PuTTY, one for Tera Term.

  3. The PSW disclosure plugin dynamically selects which disclosure plugin to display to an end user using a request or profile attribute.

Product administrators can create new instances of the same access disclosure plugin by cloning.

To clone an access disclosure plugin:

  1. Navigate to the access disclosure plugin configuration page

  2. Select to update and modify an existing plugin.

  3. Click Clone .

  4. Specify a description and modify other options as needed.

  5. Click Add.

    When using the pswdisclosure script, you will need to know the new disclosure plugin’s ID in order for it to be available to the plugin.

Enabling saved sessions

In scenarios where end users can override disclosure plugin attributes, they may want to save their modified values as a saved session ; for example if they want to:

  • Specify a webpage to log into with a directory account

  • Specify an RDP destination to log into with a directory account

  • Choose a synthetic attribute that expresses a common set of values that will be used to gain access to a system

This allows end users to save their preferences, improves usability and reduces the likelihood of error. It also requires less administrative work than cloning.

To enable users to save sessions for a disclosure plugin, at least one attribute must be set to allow overrides , on either the global or managed-system-policy level.

This capability is not available for Copy, Display, or Run command plugins.

The Functional.pam_saved_session_policy component allows administrators to configure global saved sessions that are available for all end users.

To learn how to save sessions as an end user, see Saving sessions in the User Guide.

Configuring pam_saved_session_policy

To configure saved session policies:

  1. Install the Functional.pam_saved_session_policy component.

  2. Click Manage external data store to edit the following tables in the external data store (extdb) :

    • pam_saved_session_policy

      Define the policy to apply the saved session.

    • pam_saved_session_action

      Define the saved session to apply to the selected policy.

      If the saved session overrides multiple disclosure attributes, then an entry needs to be created for each disclosure attribute that will be modified.

If there are multiple entries with the same SavedSessionName value, those entries will be treated as the same saved session.

If there are multiple entries with the same SavedSessionName value but different SavedSessionCategory and SavedSessionNotes values, the value from the latest entry will be used (unless the value is empty).

If any entries are modified or added to an existing saved session, end-users will need to remove the existing saved session from the Privileged Access App in order to use the saved session with the updated settings.

Filter policy and action tables

Disclosure filter logic is stored within two external data store (extdb) tables; pam_disclosure_filter_policy and pam_disclosure_filter_action. The action table stores each type of disclosure method installed and the plugin that they activate. The policy table is where rules determine which disclosure methods are available to a user when they request a password. These disclosure methods can be restricted based on the platform type of the managed account, the recipient’s user class or group membership or on a variety of other attributes.

Disclosure Filter Policy and Action Tables

The policy and action tables are in a linked design and rely on each other to deliver disclosure options to requesters. The disclosure filter policy table is used to provide access to disclosure options, whereas the associated disclosure filter action table is used to set specific attributes of the disclosure options (timeouts and so on)

Bravura Privilege executes all actions that reference (via a foreign key) a policy that passes. This design allows a user to configure a single policy that activates one or more disclosure plugins.

Not all columns in a policy or action table rule have to be populated, only the ones the rule purpose requires. If multiple columns are populated for the rule, the condition is an AND, whereby all conditions of the rule must be true for the rule to trigger its action. If OR logic is needed, add separate rules for each condition requirement.

Like all policy tables, the last policy that passes wins. If you have conflicting actions, the last one overwrites any previous conflicting actions.

Policy Engine terminology:

  • Wildcard Field

    A text field that supports wildcard matching uses Unix filename pattern matching . The field tests if the variable and field match. The following operations can be used:

    • * - Match everything

    • ? - Match a single character

    • [seq] - Matches any character in seq

    • [!seq] - Matches any character not in seq

  • Expression Field

    An expression that will determine the value of the field when Bravura Privilege evaluates the field. The Mako templating language is used and all data is stored in the obj_data variable.

    These expressions are commonly used for building group names, for example, “application_${obj_data.account.acctid}_view”.

Disclosure Filter Policy Table

Note

Each table in the external data store (extdb) has configuration options that only product administrators with all administrative privileges (superuser) can modify. Superusers can access the configuration options by clicking on the plus (+) symbol located below the table. See External data store Table configuration options for details.

The following table outlines the supported options and usage of the fields in the pam_disclosure_filter_policy extdb table.

Field

Supports

Description

StageNumber

Integer

The grouping stage number used to determine the ordering of sets of rules.

required, not NULL

RuleNumber

Integer

The rule number used to determine the evaluation order of rules within a stage.

required, not NULL

SkipRemaining

Combo Box

Use this column to skip evaluation of some of the remaining rules. One of:

  • ‘Stage’: When this rule matches, skip evaluation of all remaining rules in the current stage. Rules in other stages will continue to be evaluated.

  • ‘All’: When this rule matches, skip evaluation of all remaining rules in all remaining stages.

optional

Comment

Text

Rule description.

optional

FilterID

Text

The ID for the filter that is used by the action table.

required, not NULL

Operation

Text, Expression

Operation of request, or an expression to evaluate.

optional

PlatformType

Text, Wildcard, Expression

The platform type of the target. For example, Windows Server, Linux, Oracle.

optional

MSPID

Text, Wildcard, Expression

The managed system policy ID that the requested privileged access is managed under. .

To future-proof policies avoid using this column.

optional

ClientIPCIDR

Text, Expression

The CIDR mask to test against the user’s IP address.

optional

AccountID

Text, Wildcard, Expression

The account ID.

Only usable for account checkouts.

optional

AccountTargetID

Text, Wildcard, Expression

The Target ID associated with the account.

Only usable for account checkouts.

optional

RecipientUserclass

Text, Expression

Single-participant user class to evaluate for recipient membership.

optional

RequesterUserclass

Text, Expression

Single-participant user class to evaluate for requester membership.

Note: The recipient generally is tested for disclosure filter policies, not the requester.

optional

GroupFQNrecipientMembershipTargetID

Text, Expression

The Target ID of the managed account group defined in GroupFQNrecipientMembership.

optional

GroupFQNrecipientMembership

Text, Expression

The Group ID to which the recipient belongs. Requires GroupFQNrecipientMembershipTargetID to be defined.

Group short ids are also accepted.

optional

GroupFQNrequesterMembershipTargetID

Text, Expression

The Target ID associated with the managed group defined in GroupFQNrequesterMembership.

optional

GroupFQNrequesterMembership

Text, Expression

The group ID of the requester. Requires GroupFQNrequesterMembershipTargetID to be defined.

Only usable for account checkouts.

To future-proof policies avoid using this column

optional

RequestAttributeBoolTrue

Text, Expression

The Profile or Request Attribute ID which should have its truth value evaluated. If defined, this will match if the attribute is set to True. If the attribute is False or undefined, the rule will not apply.

optional

RequestAttributeBoolFalse

Text, Expression

The Profile or Request Attribute ID which should have its truth value evaluated. If defined, this will match if the attribute is set to False. If the attribute is True or undefined, the rule will not apply.

optional

AttributeType

Combo Box

Defines what the attribute defined by AttributeID is associated with. One of:

  • ‘Account’: check against the Account ID being requested

  • ‘Discovered System’: check against Discovered System attributes

  • ‘Target’: check against the Target ID on which the account is being managed

  • ‘Request’: check against the Request Attribute ID

  • ‘Viewer’: check against a viewers profile or request attributes

  • ‘Resource Managed Account’: check against a managed account

  • ‘Resource Managed System’: check against a managed system

optional

AttributeID

Text, Expression

The Attribute ID. Requires Attribute Type to be defined.

optional

AttributeValue

Text, Wildcard, Expression

The value of attribute defined in AttributeID. Requires AttributeType and AttributeID to be defined.

optional

UTCStartTime

Text, Expression

The start time that a rule should be applied. Requires UTCFinishedTime to be defined.

optional

UTCFinishedTime

Text, Expression

The end time that a rule should be applied. Requires UTCStartTime to be defined.

optional

The ComponentOwnerFQN field, included in all external data store tables, shows the name of the component providing specific rows to a table.

Disclosure Filter Action Table

Note

Each table in the external data store (extdb) has configuration options that only product administrators with all administrative privileges (superuser) can modify. Superusers can access the configuration options by clicking on the plus (+) symbol located below the table. See External data store Table configuration options for details.

The following table outlines the supported options and usage of the fields in the pam_disclosure_filter_action extdb table.

Field

Supports

Description

Input

ActionID

Text

Unique number used to determine the evaluation order of actions.

required, not NULL

FilterID

Foreign Key

The corresponding disclosure filter policy FilterID to link this action to.

required, not NULL

DisclosureID

Text, Expression

The GUID for the access disclosure plugin that corresponds to the one this action uses. The list can be found under Manage the system > Privileged access > Access disclosure plugins.

required, not NULL

AttributeName

Text, Expression

The disclosure plugin attribute name.

optional

AttributeValue

Text, Expression

The attribute value to set the disclosure plugin attribute specified in AttributeName.

optional

AttributeCalculationFunction

Text

The callback function to execute.

Callback functions are small scripts used to modify the disclosure attributes directly.

(Callback functions may be removed in a future release, use only if necessary)

A Python function, contained in a script file, that provides additional plugin attributes and values. The script file must be defined in the <instance>componentCallbacks directory.

optional

AttributeRequired

Boolean

Set to True to make AttributeName and AttributeValue required.

optional

NewDescription

Text

Override for the disclosure description.

optional

Comment

Text

Rule description.

optional

The ComponentOwnerFQN field, included in all external data store tables, shows the name of the component providing specific rows to a table.

Disclosure Filter Policy Examples

Restricting display of passwords to Windows platforms only and limiting disclosure

Click below to view a demonstration where disclosure filter rules are altered so display of passwords is restricted to Windows platforms only, with a time limit of 5 minutes. A Windows and Linux account are then checked out to demonstrate that only the Windows account can display passwords, and it remains visible for only the configured time.

Adding a new disclosure to a checkout

This is an example of adding the Remote Desktop disclosure plugin to a checkout for a user accessing a Windows server. This example assumes that the default Remote Desktop disclosure plugin has not been changed.

Policy Table:

Field

Value

Notes

StageNumber

1

This number will depend on the rest of your policy rules and stages.

RuleNumber

1

This number will depend on the rest of your policy rules.

SkipRemaining

[No selection]

This can be switched to Stage if you want this to be the last rule that processes.

Comment

Check to see if the user is requesting access to an account on a Windows server.

FilterID

WINDOWS_SERVER

PlatformType

WINNT

WINNT is the windows platform ID.

Action Table:

Field

Value

Notes

Action ID

WINDOWS_RDP

FilterID

WINDOWS_SERVER

This will link to the policy that will trigger this action.

DisclosureID

!!!PSW_PLUGIN_TSVC_DESC

Comment

Add the Remote Desktop disclosure plugin

Setting up AD disclosure based on group membership

This is an example of adding multiple disclosure plugins based on the user’s group membership. This example assumes that you have managed the Active Directory security group “security_appliance_admins” and run Auto discovery. This example also assumes you have configured new disclosure plugins in Bravura Privilege for Cisco Iron Port and Blue Coat.

This example is going to look at the platform the account exists on, and the security group. Once it confirms that the account being accessed exists on an Active Directory domain and a security group, it will add both Cisco Iron Port and Blue Coat to the list of disclosure controls available to the user.

Generally, this type of policy would be paired with a generic Active Directory policy that would add a disclosure control(s) that all users have access to, such as Remote Desktop.

Policy Table:

Field

Value

Notes

StageNumber

1

This number will depend on the rest of your policy rules and stages.

RuleNumber

2

This number will depend on the rest of your policy rules.

SkipRemaining

[No selection]

This can be switched to Stage if you want this to be the last rule that processes.

Comment

Check to see if the user is requesting access to an account on Active Directory, and if they are a member of the security group

FilterID

AD_SECURITY_TEAM

PlatformType

AD

AD is the platform ID for Active Directory.

GroupFQNrecipientMembershipTargetID

AD_TARGETID

The Active Directory target where the group exists.

GroupFQNrecipientMembership

security_appliance_admins

The short id of the group we want to test membership of

Action Ironport Policy:

Field

Value

Notes

ActionID

AD_IRONPORT

FilterID

AD_SECURITY_TEAM

This will link to the policy that will trigger this action

DisclosureID

Iron Port Web GUI

This needs to match exactly what you entered in the description when creating the Iron Port browser disclosure plugin in Bravura Privilege.

Comment

Add the Cisco Iron Port web portal disclosure plugin

Action Bluecoat Policy:

Field

Value

Notes

ActionID

AD_BLUECOAT

FilterID

AD_SECURITY_TEAM

This will link to the policy that will trigger this action

DisclosureID

Blue Coat Web GUI

This needs to match exactly what you entered in the description when creating the Blue Coat browser disclosure plugin in Bravura Privilege.

Comment

Add the Blue Coat web portal disclosure plugin