This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Security

All aspects of securing Stroom and the content within it. Includes application security, user and group accounts and the permissions model.

1 - Deployment

There are many aspects of security that should be considered when installing and running Stroom.

Shared Storage

For most large installations Stroom uses shared storage for its data store. This storage could be a CIFS, NFS or similar shared file system. It is recommended that access to this shared storage is protected so that only the application can access it. This could be achieved by placing the storage and application behind a firewall and by requiring appropriate authentication to the shared storage. It should be noted that NFS is unauthenticated so should be used with appropriate safeguards.

MySQL

Accounts

It is beyond the scope of this article to discuss this in detail but all MySQL accounts should be secured on initial install. Official guidance for doing this can be found here .

Communication

Communication between MySQL and the application should be secured. This can be achieved in one of the following ways:

  • Placing MySQL and the application behind a firewall
  • Securing communication through the use of iptables
  • Making MySQL and the application communicate over SSL (see here for instructions)

The above options are not mutually exclusive and may be combined to better secure communication.

Application

Node to Node Communication

In a multi node Stroom deployment each node communicates with the master node. This can be configured securely in one of several ways:

  • Direct communication to Tomcat on port 8080 - Secured by being behind a firewall or using iptables
  • Direct communication to Tomcat on port 8443 - Secured using SSL and certificates
  • Removal of Tomcat connectors other than AJP and configuration of Apache to communicate on port 443 using SSL and certificates

Application to Stroom Proxy Communication

The application can be configured to share some information with Stroom Proxy so that Stroom Proxy can decide whether or not to accept data for certain feeds based on the existence of the feed or its reject/accept status. The amount of information shared between the application and the proxy is minimal but could be used to discover what feeds are present within the system. Securing this communication is harder as both the application and the proxy will not typically reside behind the same firewall. Despite this communication can still be performed over SSL thus protecting this potential attack vector.

Admin Port

Stroom (v6 and above) and its associated family of stroom-* Dropwizard based services all expose an admin port (8081 in the case of stroom). This port serves up various health check and monitoring pages as well as a number of restful services for initiating admin tasks. There is currently no authentication on this admin port so it is assumed that access to this port will be tightly controlled using a firewall, iptables or similar.

Servlets

There are several servlets in Stroom that are accessible by certain URLs. Considerations should be made about what URLs are made available via Apache and who can access them. The servlets, path and function are described below:

Servlet Path Function Risk
DataFeed /datafeed or /datafeed/* Used to receive data Possible denial of service attack by posting too much data/noise
RemoteFeedService /remoting/remotefeedservice.rpc Used by proxy to ask application about feed status (described in previous section) Possible to systematically discover which feeds are available. Communication with this service should be secured over SSL discussed above
DynamicCSSServlet /stroom/dynamic.css Serves dynamic CSS based on theme configuration Low risk as no important data is made available by this servlet
DispatchService /stroom/dispatch.rpc Service for UI and server communication All back-end services accessed by this umbrella service are secured appropriately by the application
ImportFileServlet /stroom/importfile.rpc Used during configuration upload Users must be authenticated and have appropriate permissions to import configuration
ScriptServlet /stroom/script Serves user defined visualisation scripts to the UI The visualisation script is considered to be part of the application just as the CSS so is not secured
ClusterCallService /clustercall.rpc Used for node to node communication as discussed above Communication must be secured as discussed above
ExportConfig /export/* Servlet used to export configuration data Servlet access must be restricted with Apache to prevent configuration data being made available to unauthenticated users
Status /status Shows the application status including volume usage Needs to be secured so that only appropriate users can see the application status
Echo /echo Block GZIP data posted to the echo servlet is sent back uncompressed. This is a utility servlet for decompression of external data URL should be secured or not made available
Debug /debug Servlet for echoing HTTP header arguments including certificate details Should be secured in production environments
SessionList /sessionList Lists the logged in users Needs to be secured so that only appropriate users can see who is logged in
SessionResourceStore /resourcestore/* Used to create, download and delete temporary files linked to a user’s session such as data for export This is secured by using the users session and requiring authentication

HDFS, Kafka, HBase, Zookeeper

Stroom and stroom-stats can integrate with HDFS, Kafka, HBase and Zookeeper. It should be noted that communication with these external services is currently not secure. Until additional security measures (e.g. authentication) are put in place it is assumed that access to these services will be carefully controlled (using a firewall, iptables or similar) so that only stroom nodes can access the open ports.

Content

It may be possible for a user to write XSLT, Data Splitter or other content that may expose data that we do not wish to or to cause the application some harm. At present processing operations are not isolated processes and so it is easy to cripple processing performance with a badly written translation whether written accidentally or on purpose. To mitigate this risk it is recommended that users that are given permission to create XSLT, Data Splitter and Pipeline configurations are trusted to do so.

Visualisations can be completely customised with javascript. The javascript that is added is executed in a clients browser potentially opening up the possibility of XSS attacks, an attack on the application to access data that a user shouldn’t be able to access, an attack to destroy data or simply failure/incorrect operation of the user interface. To mitigate this risk all user defined javascript is executed within a separate browser IFrame. In addition all javascript should be examined before being added to a production system unless the author is trusted. This may necessitate the creation of a separate development and testing environment for user content.

2 - Credentials

Authentication against other systems.

Sometimes Stroom needs to connect to other systems:

  • Git repositories
  • Stroom AI connections
  • In the future, all credentials for third-party systems will be managed by this user-interface.

The Credentials module is intended to centralise the management of these credentials within Stroom.

Accessing Credentials Manager

The Credentials Manager can be accessed via the Stroom Menu

Security
Credentials Manager

Types of Credentials

Stroom supports different types of credentials. Different systems can use different types of credentials.

User Username / Password Access Token SSH Key Key Store
GitRepo
Content Store
Stroom AI

Username / Password

The username and password are passed to the server unchanged.

Access Token

This is a variation of username / password authentication. Stroom will pass the token in place of the password.

SSH Key

This is used when connecting to SSH servers. SSH authentication is not intuitive, thus the basics are explained here.

The user generates a key pair. The public part of the key pair is given to the SSH server, via the command line ssh-copy-id command or via an application-specific web user-interface. The private part is stored on the user’s machine and is secured via a pass-phrase. The pass-phrase ensures that if an attacker gains access to the user’s file they cannot access the private key.

Thus Stroom needs to know the private key and the pass-phrase.

There is one more key pair involved. It is important that the client is confident that they are connecting to the correct SSH server. Otherwise, an attacker might trick the user into connecting to the wrong server. This is secured by the server’s key pair. The server has a private key and allows the client to download the server’s public key.

Stroom can optionally check the server’s key, if the server’s public key is provided. If no key is provided then Stroom will accept any server. This can be useful when getting things working but is not recommended for production use. To enable this setting, check the checkbox “Verify Hosts” and add the entry from your ~/.ssh/known_hosts file.

Key Store

Create a key store in JKS or PXCS12 format.

Key Store Type

Stroom supports these two keystore formats:

  • JKS - Original Java keystore format.

  • PKCS12 - Standardised format, developed by RSA, which stores cryptography objects in a single file.

Key Store Pass Phrase

The keystore should be protected by a pass-phrase. Stroom needs this pass-phrase to read the keystore.

Upload Key Store File

Select the keystore and upload it to enter it into Stroom.

3 - User Accounts

User accounts for authentication when using Stroom’s internal identity provider.

Accounts vs Stroom Users

See Accounts vs Users for details on the difference between a Stroom User Account and a Stroom User.

Creating User Accounts

User accounts can only be created by a user that holds the Manage Users or Administrator Application permission Application permission This is a permission that is not specific to a single document. It applies to all documents or is not related to documents in any way.Click to see more details....

Create a new user account by selecting

Security
Manage Accounts

from the main menu.

As a minimum a user account must have a unique identifier that will be used to identify them in Stroom.

If the user’s email address is added then Stroom will be able to email the user to reset their password. This functionality is configured using the properties starting with this prefix stroom.security.identity.email..

Account States

An account has three states and they are independent of one another. An account can be locked and disabled at the same time, or inactive and disabled, and so on. Each is shown as its own column in the Manage Accounts screen because each answers a different question.

The quickest way to keep them apart is to ask what creates each state, because that also tells you what can clear it.

State What it is Set by Cleared by
Disabled A decision. An administrator has said this account may not be used. An administrator An administrator
Locked A defence. Stroom has reacted to repeated wrong passwords. Stroom Time, a password reset, or an administrator
Inactive An observation. Nobody has used this account for some time. Stroom A successful sign in, or an administrator

An account in any of these three states cannot sign in.

Enabled and Disabled

This is the administrator’s control over whether an account may be used at all. It is the only one of the three states that an administrator sets directly.

Disabling an account prevents any further sign in, immediately. A disabled account cannot be recovered by the user under any circumstances. Waiting will not release it and a password reset will not release it. This makes disabling the right action whenever someone must be prevented from signing in, whether temporarily, for example while they are on extended leave, or permanently.

Locked

An account is locked automatically after a number of consecutive failed sign in attempts, controlled by stroom.security.identity.failedLoginLockThreshold. It is a defence against password guessing and nothing more.

An administrator cannot lock an account. To prevent someone using Stroom, disable their account instead.

While an account is locked, further sign in attempts are refused without the password being checked at all, and those attempts are not counted against the account. Continued guessing therefore reveals nothing and does not extend the lock.

There are three ways an account becomes usable again.

  • Waiting. The lock lapses on its own after stroom.security.identity.failedLoginLockDuration, which is thirty minutes by default. Nothing needs to happen when it lapses. The next sign in with the correct password simply succeeds. The message shown to the user says roughly how long remains, so in a default configuration a locked user does not need to contact anybody.

  • Resetting their password. If stroom.security.identity.allowLockedAccountPasswordReset is enabled then the user can request a password reset email and set a new password, which unlocks the account at the same time. This is described in Signing In.

  • An administrator unlocking it. A user holding the Manage Users or Administrator Application permission Application permission This is a permission that is not specific to a single document. It applies to all documents or is not related to documents in any way.Click to see more details... can use the Unlock action in the Manage Accounts screen.

Setting failedLoginLockDuration to zero means locks never lapse, in which case one of the other two routes is the only way back. The duration is applied when a sign in is attempted rather than when the lock is created, so changing this property also changes locks that are already in force.

Inactive

The Account Maintenance job marks an account as inactive when it has not been used for some time. This happens in one of two cases:

  • A brand new account that has never been signed into was created longer ago than stroom.security.identity.passwordPolicy.neverUsedAccountDeactivationThreshold.
  • An account has not been signed into for longer than stroom.security.identity.passwordPolicy.unusedAccountDeactivationThreshold.

Accounts flagged as never expires are exempt, as are accounts that have been reactivated recently, so that reactivating an account does not simply see it deactivated again on the job’s next run.

As with locking, an administrator cannot mark an account as inactive. Disabling is the control for preventing access.

How an inactive account becomes usable again depends on stroom.security.identity.reactivateInactiveAccountsOnLogin.

  • When it is disabled, which is the default, an administrator must use the Reactivate action in the Manage Accounts screen.
  • When it is enabled, presenting a valid credential reactivates the account and signs the user in, in one step. This applies equally to a correct password and to a valid certificate.

A disabled account is never reactivated automatically. Reactivation only happens once a credential has been accepted, and a disabled account never gets that far.

Administrator Actions

The Manage Accounts screen offers the following actions to a user holding the Manage Users or Administrator Application permission Application permission This is a permission that is not specific to a single document. It applies to all documents or is not related to documents in any way.Click to see more details....

Action Effect
Disable / Enable Prevents or restores the ability to sign in. Does not end sessions already in progress.
Unlock Clears a failed sign in lock.
Reactivate Clears the inactive state.
Set password Sets a new password, optionally requiring the user to change it at their next sign in.

There is deliberately no action to lock an account or to mark one as inactive. Those two states are applied by Stroom in response to something it has observed, and an administrator wanting to prevent access should disable the account.

Requiring a password change at the next sign in can safely be combined with setting a password in the same save. The requirement is kept rather than being cleared by the password change.

4 - Signing In

What happens when a user signs in to Stroom, how passwords are reset and how a locked account is recovered.

This page describes what a user experiences when signing in to Stroom using its internal Identity Provider (IDP) Identity Provider (IDP) An Identity Provider is a system or service that can authenticate a user and assert their identity. Identity providers can support single sign on (SSO), which allows the user to sign in once to the Identity Provider so they are then authenticated to all systems using that IDP.Click to see more details....

Signing in with a Password

The outcome of a sign in attempt depends on the state of the account as well as the password.

Situation What the user is told
Correct password, account in good order Signed in. Any earlier failed attempts are forgotten.
Wrong password Invalid credentials. The failure is counted towards locking the account.
Account disabled The account is disabled and they should contact an administrator.
Account locked The account is locked, together with the quickest way to recover it.
Account inactive, correct password Either signed in, or told the account has been deactivated. See User Accounts.

A wrong password and a user id that does not exist produce exactly the same answer, so the sign in screen cannot be used to discover which accounts exist.

For a disabled or locked account the password is not checked at all. Neither state can be talked out of with a correct password, so there is nothing to be gained by checking one, and refusing without checking means the sign in screen cannot be used to test whether a password is correct.

Failed attempts against a disabled or locked account are not counted, because the account is already refused.

Being Asked to Change Your Password

A user may be signed in successfully and then be required to set a new password before they can do anything else. This happens in three cases:

  • It is their first ever sign in and stroom.security.identity.passwordPolicy.forcePasswordChangeOnFirstLogin is enabled, which it is by default.
  • An administrator has set a new password for them and asked that it be changed.
  • Their password is older than stroom.security.identity.passwordPolicy.mandatoryPasswordChangeDuration.

The new password must satisfy the password policy, which is applied by the server on every route that sets a password. The previous password cannot be reused.

Getting Locked Out

After a number of consecutive wrong passwords, controlled by stroom.security.identity.failedLoginLockThreshold, the account is locked.

The message shown to a locked user depends on how the system is configured, and always gives them the cheapest way back in.

Configuration What the user is told
Locks lapse on their own, which is the default To try again in approximately so many minutes.
Locks lapse and self service reset is enabled The same, plus a pointer to Forgot password?
Locks never lapse (failedLoginLockDuration is zero) To contact an administrator.
Locks never lapse and self service reset is enabled To use Forgot password? or contact an administrator.

An administrator is only named where an administrator really is the only way back. In a default configuration a locked user is told to wait, which avoids a support request for something that resolves itself.

See User Accounts for the three ways an account becomes usable again.

Resetting a Forgotten Password

If the user has an email address recorded against their account, and stroom.security.identity.passwordPolicy.allowPasswordResets is enabled, they can use Forgot password? on the sign in screen to be emailed a link for setting a new password.

The response shown on screen is the same whether or not the address belongs to an account, so this screen cannot be used to discover which email addresses have accounts.

The link is valid for stroom.security.identity.token.emailResetTokenExpiration, ten minutes by default, and can be used only once. Requesting another link invalidates any earlier one. Repeated requests are rate limited by stroom.security.identity.passwordResetRequestCooldown.

Completing a reset ends all of that user’s existing sessions everywhere in the cluster. They then sign in with their new password.

When a Reset Cannot be Completed

Some accounts cannot be recovered this way. Rather than sending a link that would not work, Stroom emails the account holder to say that the reset cannot currently be completed and that they should contact an administrator if it continues.

This happens when:

  • The account is disabled. Only an administrator can enable it again.
  • The account is locked and stroom.security.identity.allowLockedAccountPasswordReset is not enabled. Note that a lock which has already lapsed does not prevent a reset.
  • The account is inactive and stroom.security.identity.reactivateInactiveAccountsOnLogin is not enabled. Without it, setting a new password would not be enough to sign in, so an administrator has to reactivate the account first.

The email is deliberately the same in all three cases and does not say which one applies. It goes to the address held against the account, so it tells the account holder something is wrong without telling whoever made the request anything at all.

No email of any kind is sent when there is nobody to send it to, that is when the address matches no account, the account has no email address recorded, password resets are turned off, or an email was already sent within the cool-down period.

Signing in with a Certificate

If stroom.security.identity.allowCertificateAuthentication is enabled, a user presenting a valid certificate can be signed in without typing a password. The user id is taken from the certificate’s common name using stroom.security.identity.certificateCnPattern and stroom.security.identity.certificateCnCaptureGroupIndex.

A valid certificate is treated in exactly the same way as a correct password. The same account states apply in the same order, so a disabled or locked account is still refused, and an inactive account is either reactivated or refused depending on stroom.security.identity.reactivateInactiveAccountsOnLogin.

5 - Sessions and Tokens

Viewing and ending user sessions, and revoking the tokens held by a user.

Signing in to Stroom creates a session, and Stroom issues tokens that are used to prove who a user is, both to Stroom itself and between the nodes of a cluster. This page describes how sessions and tokens are ended, both by users for themselves and by administrators.

Ending Your Own Sessions

Any user can end their own sessions other than the one they are currently using, by selecting

User
Sign Out Other Sessions

from the main menu.

This is useful after signing in from a machine that is no longer under their control. It applies across every browser and device, and across every node in the cluster.

Completing a password reset also ends all of that user’s sessions, including the one being used at the time. See Signing In.

The User Access Screen

A user holding the Manage Users or Administrator Application permission Application permission This is a permission that is not specific to a single document. It applies to all documents or is not related to documents in any way.Click to see more details... can see and end the access held by other users by selecting

Security
User Access

from the main menu.

The screen lists users along with how many sessions and tokens each currently holds, and shows the sessions held for the selected user across every node in the cluster.

Two actions are available.

  • End this user’s sessions and revoke their tokens does exactly that, across the whole cluster rather than just the node serving the request. It does not withdraw their access: the account is untouched and they can sign in again.

  • Open this user opens the selected user, where they can be disabled. This is offered alongside revocation because the two are easily confused and do quite different things, as described below.

Revoking, Disabling, and the Difference between Them

Three actions are easy to confuse, and each does something different. To stop someone using Stroom completely and immediately, you need the last two together.

Action Ends sessions and tokens Prevents signing in again
End sessions and revoke tokens, on the User Access screen Yes No
Disable the Stroom User User Refers to a Stroom User that is linked to either an Account in Stroom’s internal Identity Provider or a user account in an external Identity Provider. A Stroom User is primarily concerned with authorisation (i.e. application/document permissions and group memberships) rather than authentication, though disabling one also refuses that person at authentication and ends any access they currently hold.Click to see more details..., on the Users screen Yes Yes
Disable the account, on the Manage Accounts screen No Yes

Ending sessions and revoking tokens does both of those things and no more. It deliberately leaves the account alone, so the password still works and the user can sign in again. Every token revoked this way is dead permanently, but their access as a whole is not withdrawn. It forces re-authentication rather than shutting anybody out, which makes it the right action when you want to be certain that whoever is currently signed in has to prove who they are again.

Disabling the Stroom User User Refers to a Stroom User that is linked to either an Account in Stroom’s internal Identity Provider or a user account in an external Identity Provider. A Stroom User is primarily concerned with authorisation (i.e. application/document permissions and group memberships) rather than authentication, though disabling one also refuses that person at authentication and ends any access they currently hold.Click to see more details... does everything the above does, and additionally refuses them at authentication, whether they are signing in interactively or presenting a token. This is the action to take when someone must be stopped, and is what the Open this user button on the User Access screen is for.

Disabling the account, which only applies when Stroom is its own Identity Provider (IDP) Identity Provider (IDP) An Identity Provider is a system or service that can authenticate a user and assert their identity. Identity providers can support single sign on (SSO), which allows the user to sign in once to the Identity Provider so they are then authenticated to all systems using that IDP.Click to see more details..., stops them authenticating at all. It does not disturb a session that is already running. See User Accounts.

Token Lifetimes

These are the defaults, and are configurable under stroom.security.identity.token..

Token Property Default
Access token accessTokenExpiration 60 minutes
Refresh token refreshTokenExpiration 30 days
Password reset link emailResetTokenExpiration 10 minutes
API key defaultApiKeyExpiration 365 days

Refresh tokens can be used only once, and each use issues a replacement. If a refresh token is presented a second time, which suggests it has been copied, Stroom withdraws that token and every token descended from it.

6 - Signing Keys

The keys Stroom’s internal identity provider uses to sign tokens, and how to withdraw one that may have been exposed.

When Stroom acts as its own Identity Provider (IDP) Identity Provider (IDP) An Identity Provider is a system or service that can authenticate a user and assert their identity. Identity providers can support single sign on (SSO), which allows the user to sign in once to the Identity Provider so they are then authenticated to all systems using that IDP.Click to see more details... it signs the tokens it issues with a key that it creates and replaces by itself. Nodes and Stroom-Proxy check that signature to satisfy themselves that a token really came from Stroom.

This screen exists so that a key believed to have been exposed can be withdrawn. It is not needed for day to day running, because keys are replaced automatically.

Reach the screen by selecting

Security
Signing Keys

from the main menu.

What the Screen Shows

Each key is listed with its status and the date it was issued, and nothing else. Nothing that identifies a key or describes its contents is shown, because the stored key includes the private half that produces signatures.

Status Meaning
Active New tokens are being signed with this key.
Retired No longer signing new tokens, but still trusted so that tokens already issued keep working. Shown with the date that trust ends.
Expired No longer trusted. Removed automatically shortly afterwards.
Revoked Withdrawn by an administrator. Anything signed with it is already refused.

The active key has no end date. Keys here do not expire on a schedule. Rotation replaces the active key when it is old enough, and only at that point does the key it replaced gain a date on which it stops being trusted.

Automatic Rotation

Stroom replaces the active signing key every stroom.security.identity.token.jwkRotationInterval, which is thirty days by default.

Rotation is invisible to users. The key being replaced continues to be trusted for long enough that every token already signed with it expires naturally, so nobody is signed out and nothing needs to be restarted.

Revoking a Key

Revoking withdraws a key immediately. Any token signed with it stops being accepted, and a replacement signing key is created at the same moment so that Stroom can carry on issuing tokens.

There are two actions.

  • Revoke withdraws the selected key.
  • Revoke all withdraws every key that is still trusted, for when a key is believed to have been exposed but it is not known which.

Both actions ask for confirmation first, and the confirmation says what that particular key will cost, because the effect differs enormously between them. Revoking a retired key usually affects a handful of people, while revoking the active key affects everyone.

What to Expect after Revoking the Active Key

Everybody using Stroom is signed out and must authenticate again. For people at a browser this is quick, and they will be signed back in as soon as they do so.

Nodes and Stroom-Proxy hold their own tokens signed with the same key, and they replace those tokens as they expire rather than immediately. Parts of the cluster may therefore be unable to talk to one another for up to ten minutes. This resolves itself and needs no intervention, but it is worth expecting rather than being surprised by, and it is a good reason to reserve this action for a suspected compromise.

Revoking a retired or expired key has no such effect, as nothing is signing with it.

7 - Users and Groups

The Stroom user and group entities that can be granted application and document permissions.

Accounts vs Stroom Users

See Accounts vs Users for details on the difference between a Stroom User Account and a Stroom User.

User

A Stroom User represents a human user and is linked to either a User Account in Stroom or to a user account in an external Identity Provider (IDP) Identity Provider (IDP) An Identity Provider is a system or service that can authenticate a user and assert their identity. Identity providers can support single sign on (SSO), which allows the user to sign in once to the Identity Provider so they are then authenticated to all systems using that IDP.Click to see more details.... It can also represent a non-human processing user, e.g. where a Stroom User is created and has an API Key API Key API Keys are a form of authentication token that are created within Stroom for use by Stroom-Proxy instances or other clients that want to use Stroom’s API. It is an encrypted string that contains details of the user and the expiration date of the token. Possession of a valid API Key for a user account means that you can do anything that the user can do in the user interface via the API.Click to see more details... created for it to allow a client system to use Stroom’s API API Application Programming Interface. An interface that one system can present so other systems can use it to communicate. Stroom has a number of APIs, e.g. its many REST APIs and its /datafeed interface for data receipt.Click to see more details....

All audited activity in Stroom will be attributed to a Stroom User and their unique identifier will be included in the audit events.

A User can have the following:

  • Membership of one or more Groups.
  • One or more Application Permissions Application permission This is a permission that is not specific to a single document. It applies to all documents or is not related to documents in any way.Click to see more details... granted to it.
  • One or more Document Permissions Document permission Document permissions control the access that users and/or groups have to a Document.Click to see more details... granted to it.

Enabling and Disabling a User

A User can be enabled or disabled using the Enabled tick box on the user, reached by selecting

Security
Users

from the main menu and opening the user. This requires the Manage Users or Administrator Application permission Application permission This is a permission that is not specific to a single document. It applies to all documents or is not related to documents in any way.Click to see more details....

Disabling a User is the strongest single action available against a person. It takes effect at once and does three things:

  • Every session they hold is ended, across every node in the cluster.
  • Every token issued to them is revoked.
  • They are refused at authentication from then on, whether signing in interactively or presenting a token.

This is distinct from disabling their Account, which only prevents them signing in and leaves any session already running untouched. An Account exists only where Stroom is its own Identity Provider (IDP) Identity Provider (IDP) An Identity Provider is a system or service that can authenticate a user and assert their identity. Identity providers can support single sign on (SSO), which allows the user to sign in once to the Identity Provider so they are then authenticated to all systems using that IDP.Click to see more details..., whereas every person has a Stroom User whichever Identity Provider (IDP) Identity Provider (IDP) An Identity Provider is a system or service that can authenticate a user and assert their identity. Identity providers can support single sign on (SSO), which allows the user to sign in once to the Identity Provider so they are then authenticated to all systems using that IDP.Click to see more details... is in use, so disabling the User is the action that works in all deployments.

See Sessions and Tokens for how this compares with simply ending someone’s sessions, and User Accounts for the Account states.

Group

A Group represents a collection of Stroom Users and/or other Groups. A Group can be used to ease the management of application and document permissions by granting permissions to one Group then adding users to that Group. For example if all the users in a team require the same application and document permissions, then a Group can be created for them and the permissions assigned to the Group. When a user joins or leaves the team it is simply a case of editing the membership of the Group.

A Group can have the following:

  • One or more members (Users and/or other Groups).
  • Membership of one or more other Groups.
  • One or more Application Permissions Application permission This is a permission that is not specific to a single document. It applies to all documents or is not related to documents in any way.Click to see more details... granted to it.
  • One or more Document Permissions Document permission Document permissions control the access that users and/or groups have to a Document.Click to see more details... granted to it.

8 - Application Permissions

Assigning application level permissions (such as ‘Manage Users’) to users or groups.

An Application Permission is a permission to perform an action that is not associated with a single Document Document Typically refers to an item that can be created in the Explorer Tree, e.g. a Feed, a Pipeline, a Dashboard, etc. May also be known as an Entity.Click to see more details... or is unrelated to Documents. Application Permissions can be granted to Users or Groups.

In order to grant Application Permissions to yourself or to other Users/Groups you must have the Manage Users or Administrator Application Permissions. If you have one of these permissions then you can access the Application Permissions screen from the main menu:

Security
Application Permissions

Application Permission Types

The following is the list of different application permissions that can be granted to users/groups.

Permission Description
Administrator Full administrator rights to access and manage all data, documents and screens, i.e. everything.
Annotations Create and view annotations in query results.
Change Owner Change the ownership of a document or folder to another user.
Data - Delete Delete streams.
Data - Export Download/export streams from a feed.
Data - Import Upload stream data into a feed.
Data - View View stream data (e.g. in the Data Viewer or a Dashboard text pane).
Data - View With Pipeline View data in a Dashboard text pane that uses a pipeline.
Download Search Results Download search result data on a Dashboard.
Export Configuration Export Content Content Content in Stroom typically means the user created documents/entities created in Stroom and as seen in the explorer tree. Content can be created/modified by Stroom users and imported/exported for sharing between different Stroom instances.Click to see more details... (i.e. documents, that you have permission to view) to a file.
Import Configuration Import Content Content Content in Stroom typically means the user created documents/entities created in Stroom and as seen in the explorer tree. Content can be created/modified by Stroom users and imported/exported for sharing between different Stroom instances.Click to see more details... from a file.
Manage API Keys Access the API Keys screen to view, create, edit, delete the user’s own API keys. ‘Manage Users’ permission is also required to manage other users API keys
Manage Cache Access the Caches screen to view and clear system caches.
Manage DB Access the Monitoring -> Database Tables screen to view the state of the tables in the database.
Manage Index Shards Access the Shards sub-tab on an Index document.
Manage Jobs Access the Jobs screen to manage Stroom’s background jobs.
Manage Nodes Access the Nodes screen to view the nodes the cluster and manage their priority and enabled states.
Manage Policies Access the Data Retention screen to manage data retention rules.
Manage Processors Access the Processors tab and manage the processors/filters used to process stream data through pipelines.
Manage Properties Access to the Properties to manage the system configuration.
Manage Tasks Access the Server Tasks screen to view/stop tasks running on the nodes.
Manage Users Access the screens to manage users, groups, document/application permissions. Also gives the user the ability to manage API keys for other users.
Manage Volumes Access the Data Volumes and Index Volumes screens to create/edit/delete the index/data volumes used for Lucene indexing and the stream store.
Pipeline Stepping Step data through a pipeline using the Stepper.
View System Information Use the System Information API. This is used by the administrators for viewing some of the internal working of Stroom to aid in debugging issues.

9 - Document Permissions

Assigning document level permissions (such as ‘View’) to users or groups.

Document Permissions are permissions that are granted to Users or Groups for a specific Document Document Typically refers to an item that can be created in the Explorer Tree, e.g. a Feed, a Pipeline, a Dashboard, etc. May also be known as an Entity.Click to see more details.... They control what documents a user/group can see and what they can do to those documents. They allow very fine grained control over what a user/group can see or do in Stroom.

For example, User jbloggs may be granted Use permission on the Index named Alert Index in order for him to be able to query that index in a dashboard, but not be able to see it in the explorer tree or change it in any way.

By default a new user with no Application Permissions, Document Permissions or Group memberships cannot view/use/modify any documents. They do not even have permission to create any documents. When logging into Stroom, they will simply see an empty explorer tree.

A user can gain varying levels of access to documents in a number of ways:

  • Being added to a Group that has direct or inherited permissions on one or more existing documents.
  • Being added to a Group that has direct or inherited permissions to create one or more document types.
  • Being directly granted permissions one or more existing documents.
  • Being directly granted the permission to create one or more document types.
  • Being granted the Administrator Application Permission which gives them access to ALL documents.

In order to modify the permissions on a document, you must either hold Owner permission on the document or have the Administrator Application Permission. The Document Permissions screen for a document/folder can be accessed by right clicking on it in the explorer tree and selecting:

Permissions

Permission Types

The following is the list of different permissions that can be granted to users/groups on a document.

Permission Description
Owner Same as delete plus ability to change the document’s permissions (i.e. grant permissions on this document to other users/groups).
Delete Same as edit plus permission to delete the document.
Edit Same as view plus permission to edit, move, rename or add tags to the document.
View Permission to see the document in the explorer tree, open it as read-only, copy it or export it (subject to also having the Export Configuration application permission).
Use Only allow use of a document, e.g. allow use of an index as part of a search process but do not allow viewing of the document itself.

The following is the list of different permissions that can be granted to users/groups on a folder .

Permission Description
Owner Same as delete plus ability to change the folder’s permissions (i.e. grant permissions on this folder to other users/groups).
Delete Same as edit plus permission to delete the folder.
Edit Same as view plus permission to edit, move, rename or add tags to the folder.
View Permission to see the folder in the explorer tree (and its child items that you also have View permission on), open it as read-only, copy it or export it (subject to also having the Export Configuration application permission).
Use Only allow use of a folder, e.g. allow use of an index as part of a search process but do not allow viewing of the folder itself.

Implied Permissions

Note that each permission in the two tables above also includes all the permissions below it in the table, e.g. a user with Edit permission on a document will also have the implied permissions View and Use. There is no need to grant these lower permissions to the user, though doing so will have no impact as Stroom will use the highest value permission when checking permissions.

Inherited Permissions

If a User jbloggs is a member of Group Team A and that group is a member of group Division 123, then jbloggs will inherit all permissions from both Team A and Division 123. A User/Group will inherit all permissions of the groups that they are a member of and also from any ancestor groups of those groups.

User/Group Permissions Direct/Inherited
Division 123 View on Dictionary IP Allow List Direct
Team A View on Dictionary IP Allow List Inherited
Team A Owner on Dashboard Team Dashboard Direct
jbloggs View on Dictionary IP Allow List Inherited
jbloggs Owner on Dashboard Team Dashboard Inherited
jbloggs View on Dashboard Frank’s Dashboard Direct

Owner Permission

A document can have multiple owners. An owner can be a user or a group. When a document is created by a user they are automatically made an owner of it. Any user with the Administrator role has implied ownership of ALL documents.

Having Owner permission on a document means the user can grant permissions on that document to other users, or revoke permissions from other users.

Use Permission

This permission allows users to access a document but not actually see it in the explorer tree or open the document in Stroom. They can however make use of the document, e.g. selecting and querying an Index in a Dashboard .

The Use permission is not relevant to all document types.

Permissions on Folders

Folders in the explorer tree work mostly in the same way as documents when it comes to permissions. There are a couple of exceptions to this.

Permission on Folder Contents

The permissions on a folder apply only to the folder itself and has no bearing on what you can/can’t do to its child items. The permissions on each child item in the folder control what you can/can’t do to those items.

For example, if you only have View permission on a folder, but have Delete on a document in that folder, then you are able to delete that document and thus change the contents of the folder.

Similarly, if you have View permission on a folder but have no permission on any of its child items, then you will just see an empty folder.

Ancestor Folder Visibility

A folder will be visible to a user in the explorer tree if the user has View permission on it OR if the user has View permission on any single document/folder that is a descendant of it.

For example, if a user has View permission on a Dictionary Dictionary_XYZ with path

System / Folder_A / Folder_B / Dictionary_XYZ

but no permissions on Folder A or Folder B, they will be able to see both Folders in the explorer tree in addition to the Dictionary. They will however not be able to open those Folders as they do not have the permission.

Therefore, when granting permissions on a document/folder to a user/group, you are also implicitly granting visibility (but not View permission) on all ancestor folders.

Create Permissions

Folders can have one or more Create Permissions granted on them to users/groups.

There is a Create Permission for each document type, e.g. Index, Dictionary, Feed, etc. A Create Permission is the ability to create a new document of that type in that folder.

For example, user jbloggs is an analyst and is granted Create Dashboard and Create Query permissions on the Folder named Joe's Folder. This means Joe can only create Dashboard or Query documents in that folder and nothing else.

Applying Changes to Descendants

When making changes to the permissions on a Folder you have the option of making the changes to just that folder or to all descendants of that folder. Selecting to apply to all descendants will make all permission changes apply to every descendant, i.e. including any sub-folders and their contents or own sub-folders.

Moving and Copying Documents

When you move or copy a document/folder you have the choice of how the destination document/folder’s permissions should be derived. The move/copy dialog offers the following choices:

  • None - Removes all current permissions. Ignores permissions of the destination folder. You will be the owner of the moved document if not already.
  • Source - Keep the current permissions and ownership as they are.
  • Destination - Removes all current permissions. Adds the permissions of the destination folder. You will be the owner of the moved document if not already.
  • Combined - Keep the current permissions and add the permissions of the destination folder. You will be the owner of the moved document if not already.