Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
0a8ff02
removed beta for theme builder
rani2655 Nov 6, 2025
6deeebd
Merge pull request #375 from thoughtspot/CBCA-updates
rani2655 Nov 10, 2025
ae0ae07
updates6
rani2655 Nov 10, 2025
0019ad8
SCAL-282347
ShashiSubramanya Nov 12, 2025
82d8788
spotter api rel version update
ShashiSubramanya Nov 7, 2025
09a5738
spotter api fixes
ShashiSubramanya Nov 7, 2025
2c3f2b3
spotter api edits
ShashiSubramanya Nov 7, 2025
64c89a2
SCAL-281833 correct header logo
shivam-kumar-ts Nov 7, 2025
16d3163
formatting fix
ShashiSubramanya Nov 12, 2025
1175019
webhook note
ShashiSubramanya Nov 12, 2025
f9427eb
Merge pull request #380 from thoughtspot/cbca-guid
rani2655 Nov 13, 2025
f2a868e
changelog
ShashiSubramanya Nov 17, 2025
e90e87f
search data note
ShashiSubramanya Nov 17, 2025
f0980e0
formula variables
ShashiSubramanya Nov 18, 2025
74b6e59
formula variables, rls, etc
ShashiSubramanya Nov 18, 2025
97b2902
typo fixes
ShashiSubramanya Nov 19, 2025
9ee1406
typo fix
ShashiSubramanya Nov 19, 2025
2c6e4e6
edits
ShashiSubramanya Nov 19, 2025
cbad43f
formula variables and ABAC tokens
ShashiSubramanya Nov 20, 2025
a70f69e
ëdits
ShashiSubramanya Nov 20, 2025
99fd737
edits
ShashiSubramanya Nov 20, 2025
a480125
formula variables
ShashiSubramanya Nov 21, 2025
3215799
typo fixes
ShashiSubramanya Nov 21, 2025
9bbea0f
typos
ShashiSubramanya Nov 21, 2025
7eb465b
10-15-0-docs
ShashiSubramanya Nov 21, 2025
8977ae7
Merge branch 'main' into 10.15.0.cl
ShashiSubramanya Nov 21, 2025
696c177
version update
ShashiSubramanya Nov 21, 2025
11850d3
note update
ShashiSubramanya Nov 21, 2025
0c6ba17
edits
ShashiSubramanya Nov 21, 2025
804cde6
typo fix
ShashiSubramanya Nov 21, 2025
ad98b35
nav update
ShashiSubramanya Nov 21, 2025
95ececa
formatting fix
ShashiSubramanya Nov 21, 2025
5ce9f1a
Merge pull request #381 from thoughtspot/cbca-guid
rani2655 Nov 25, 2025
0b0139c
variable doc edits
ShashiSubramanya Nov 25, 2025
70aeb47
abac edits
ShashiSubramanya Nov 26, 2025
ea9be04
whats new and nav update
ShashiSubramanya Nov 26, 2025
8e730d0
edits
ShashiSubramanya Nov 26, 2025
60325ae
typo fixes
ShashiSubramanya Nov 26, 2025
c691ee1
rls page updates
ShashiSubramanya Nov 26, 2025
49df4e6
data sec intro page
ShashiSubramanya Nov 26, 2025
cdbda2a
edits
ShashiSubramanya Nov 26, 2025
1086f9f
removed unused pages
ShashiSubramanya Nov 26, 2025
7a0dd2d
renoved redundant content
ShashiSubramanya Nov 26, 2025
f11825e
link fixes
ShashiSubramanya Nov 26, 2025
3d1a16e
formatting fixes
ShashiSubramanya Nov 26, 2025
5e56a19
review comments
ShashiSubramanya Nov 27, 2025
45ef272
variable update
ShashiSubramanya Nov 27, 2025
a048c36
edits
ShashiSubramanya Nov 27, 2025
3c2f7ea
formatting fixes
ShashiSubramanya Nov 27, 2025
f9af94d
edits
ShashiSubramanya Nov 27, 2025
32931d3
edits
ShashiSubramanya Nov 27, 2025
85421ca
edits
ShashiSubramanya Nov 27, 2025
391fb1b
spotter, api intercept and other updates
ShashiSubramanya Dec 1, 2025
ebe3188
what's new announcement for theme builder
ShashiSubramanya Dec 2, 2025
288a63f
whats new blurb edit
ShashiSubramanya Dec 2, 2025
c430e95
edits
ShashiSubramanya Dec 2, 2025
28aef5b
edits
ShashiSubramanya Dec 2, 2025
a00b3fd
nav edits
ShashiSubramanya Dec 2, 2025
450beef
get data source suggestons API content removal
ShashiSubramanya Dec 2, 2025
34e923f
edits
ShashiSubramanya Dec 2, 2025
072e5ee
Theme buider UI updates
rani2655 Dec 2, 2025
f41c55b
review comments
ShashiSubramanya Dec 2, 2025
2d1c415
mobile embed update and other edits
ShashiSubramanya Dec 3, 2025
058c8ac
review comments fixed
ShashiSubramanya Dec 4, 2025
73ee335
abac review comments update
ShashiSubramanya Dec 4, 2025
be7b88d
review edits
ShashiSubramanya Dec 4, 2025
7dff2c7
deprecation note
ShashiSubramanya Dec 4, 2025
d8c04ef
deprecated features
ShashiSubramanya Dec 4, 2025
c0376ea
api intercept update
ShashiSubramanya Dec 4, 2025
d789358
edits
ShashiSubramanya Dec 4, 2025
98aedaf
deprecation note edits
ShashiSubramanya Dec 4, 2025
a1f5c9a
typo fixes
ShashiSubramanya Dec 4, 2025
93016b0
edits
ShashiSubramanya Dec 4, 2025
f06d399
edits
ShashiSubramanya Dec 4, 2025
dbeed15
edits
ShashiSubramanya Dec 4, 2025
5bbf6e4
Edits
ShashiSubramanya Dec 4, 2025
f9c5da0
review comments
ShashiSubramanya Dec 5, 2025
cf36efa
indexing comment
ShashiSubramanya Dec 5, 2025
4588751
new nav experience
ShashiSubramanya Dec 9, 2025
faeed44
SCAL-280862
ShashiSubramanya Dec 9, 2025
c5ad8bf
review edits
ShashiSubramanya Dec 9, 2025
25a0640
full app customization update
ShashiSubramanya Dec 10, 2025
ddfb1de
edits and typo fixes
ShashiSubramanya Dec 11, 2025
b22fc8a
typo fixes and edits
ShashiSubramanya Dec 11, 2025
3309a36
edits
ShashiSubramanya Dec 11, 2025
b05696c
edits
ShashiSubramanya Dec 11, 2025
1d8a19b
link fixes
ShashiSubramanya Dec 11, 2025
23e4c99
typo fixes
ShashiSubramanya Dec 11, 2025
34b8d3b
edits
ShashiSubramanya Dec 11, 2025
857557a
app embed code sample edits
ShashiSubramanya Dec 12, 2025
505ada4
deprecation and v3 experience udpate
ShashiSubramanya Dec 12, 2025
e4f9992
link fixes
ShashiSubramanya Dec 12, 2025
5f5598b
code sample edits
ShashiSubramanya Dec 13, 2025
c6a76a6
formatting fixes
ShashiSubramanya Dec 13, 2025
dcec82d
edits for review comments
ShashiSubramanya Dec 15, 2025
34b49f7
SCAL-284448 and SCAL-286692
ShashiSubramanya Dec 16, 2025
9440459
cluster upgrade edits
ShashiSubramanya Dec 16, 2025
dc24318
typo fixes
ShashiSubramanya Dec 16, 2025
490d611
Typo fix
ShashiSubramanya Dec 16, 2025
b2f96f0
Remove beta label
ShashiSubramanya Dec 17, 2025
112dd12
Update full-app-customize.adoc
ShashiSubramanya Dec 17, 2025
9d8bb82
Review edits
ShashiSubramanya Dec 17, 2025
ef20d18
Review edits
ShashiSubramanya Dec 17, 2025
37a119c
review edits, path update
ShashiSubramanya Dec 17, 2025
bccbdd1
edits
ShashiSubramanya Dec 17, 2025
2be8021
link and code sample fixes
ShashiSubramanya Dec 17, 2025
f3b4b7f
spotter api fixes
ShashiSubramanya Dec 17, 2025
db42d37
note on homepage modular option
ShashiSubramanya Dec 17, 2025
f101051
onboard guide fix
ShashiSubramanya Dec 17, 2025
06427ae
onboarding guide fix
ShashiSubramanya Dec 17, 2025
878af5c
code sample updates to get started
ShashiSubramanya Dec 17, 2025
566b495
text edits for clarity
ShashiSubramanya Dec 18, 2025
8af21e8
sdk import instructions
ShashiSubramanya Dec 18, 2025
d9c11ba
favicon update
ShashiSubramanya Dec 19, 2025
93d3dc4
favicon new
ShashiSubramanya Dec 19, 2025
a6c6b1e
SCAL-286769 Update Discord invite link in onboarding guide and header
shivam-kumar-ts Dec 9, 2025
a9acce1
SCAL-286769 Update Discord invite link in header
shivam-kumar-ts Dec 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 34 additions & 65 deletions modules/ROOT/pages/abac-user-parameters.adoc
Original file line number Diff line number Diff line change
@@ -1,76 +1,63 @@
= ABAC via tokens
= ABAC via tokens (Legacy method)
:toc: true
:toclevels: 3
:toclevels: 2

:page-title: ABAC via tokens
:page-pageid: abac-user-parameters
:page-description: Attribute-based access control pattern can be achieved via user parameters sent in the login token

In Attribute-Based Access Control (ABAC) implementation, security entitlements are sent in as lists of attributes at session creation time via the authentication service.

This article provides a detailed overview of the ABAC implementation via tokens for row-level security (RLS), and lists configuration recommendations, and best practices.
ThoughtSpot's Attribute-Based Access Control (ABAC) implementation allows administrators to send user-specific security entitlements as attributes at session creation via JSON Web Token (JWT) tokens.

[IMPORTANT]
====
The ABAC feature is disabled by default on ThoughtSpot instances. To enable this feature on your instance, contact ThoughtSpot Support.
The ABAC feature is disabled by default on ThoughtSpot instances. To implement ABAC with data security in ThoughtSpot, refer to the instructions in the xref:abac_rls-variables.adoc[ABAC via RLS with template variables] documentation.
====

== Overview

// * The `user_parameters` property in `auth/token/full` and `auth/token/object` APIs used for the beta implementation of ABAC is deprecated in 10.4.0.cl.
// * Starting with 10.4.0.cl, security attributes for ABAC will not be stored in the `user` > `user_parameters` object. All ABAC-related security rules and filters applied via token generated using the `/api/rest/2.0/auth/token/custom` API endpoint are stored in the `user` > `access_control_properties` object.
// * The +++<a href="{{navprefix}}/restV2-playground?apiResourceId=http%2Fapi-endpoints%2Fauthentication%2Fget-custom-access-token">Custom access token </a>+++ REST API endpoint.


== Configuration recommendations and best practices

Before you begin, note the following recommendations and feature limitations:
To generate JWT tokens for ABAC implementation, you must use the `/api/rest/2.0/auth/token/custom` REST API endpoint.

Indexing::
Several features within ThoughtSpot, such as autocompletion in Search on values within columns or the suggestions in Explore mode, use ThoughtSpot indexing. Due to the runtime nature of ABAC via tokens, ThoughtSpot indexing will not be restricted by the values supplied in a token.
+
You must turn off indexing for any field that needs to be restricted by RLS when using ABAC via tokens for RLS, or also include an RLS Rule on fields that must also be filtered for the Indexing system.

////
+
[NOTE]
====
ABAC rules are not supported on Liveboards with AI Highlights and Change Analysis features, and on the Answers generated from Spotter.
* To pass different data contexts, based on the data slices that your users are allowed to visualize, use runtime filters and Parameters. These features are designed to keep your embedded ThoughtSpot content in sync with the context of host application.
* Runtime filters and runtime parameters are not security features. For data security, use xref:rls-rules.adoc[RLS rules].
====
////

Mandatory token filters::
When setting filter rules within the token, you must place the `is_mandatory_token_filter: true` property on every column in a Worksheet or Model where a filter rule is expected. This will deny any access to data if a user has not been assigned values for the expected set of fields.
To create an easier implementation of data security for your application users, ThoughtSpot recommends using RLS rules with system variables such as `ts_username` or `ts_groups`, or by using xref:abac_rls-variables.adoc[custom variable references] whose values can be assigned to users as login tokens.

+
[NOTE]
====
On instances running 10.5.0.cl and 10.4.0.cl versions, if a column is set as hidden (`is_hidden: true`), the `is_mandatory_token_filter: true` setting will not be applied to the column. Due to this, the user may see no data. To work around this issue, we recommend upgrading your instance to 10.6.0.cl. On versions lower than 10.6.0.cl, ensure that you set the `is_hidden` parameter to `false` on the column before applying filter rules.
====
=== ABAC attributes

[#column-name-warning]
Column names in Worksheet/ Model::
The filter rules require passing the *exact* ThoughtSpot Worksheet or Model column name, or the values will not bind to any column. You must coordinate between the team that maintains the Worksheets or Models and the team that builds the xref:trusted-auth-token-request-service.adoc[token request service] to know if any changes will be made to a Model or Worksheet. +
For the same reasons, the end users of an embedded app cannot have *edit* access to any Worksheet or Model using ABAC RLS via tokens. +
Setting the `is_mandatory_token_filter: true` property on every column where a filter rule is expected ensures that no data gets returned for users when column names change.
Administrators can set the following attributes for a user via the authentication token, along with the capability to assign the user to ThoughtSpot groups:

API for token generation::
The ABAC via tokens feature in ThoughtSpot 10.4.0.cl and later versions involves generating a token with filter rules and parameter values using the +++<a href="{{navprefix}}/restV2-playground?apiResourceId=http%2Fapi-endpoints%2Fauthentication%2Fget-custom-access-token">auth/token/custom</a>+++ API endpoint. Customers using the xref:abac-user-parameters-beta.adoc[beta version of ABAC with the V2.0 Get token APIs] (`auth/token/full` or `auth/token/object`) to `/api/rest/2.0/auth/token/custom`, refer to the instructions in the xref:jwt-migration.adoc[migration guide].
* Filter rules +
This method uses xref:runtime-filters.adoc[runtime filters] (`filter_rules`) in the token to create data security rules. It can filter multiple values of any data type and binds to any Column in any Model with a matching column name in ThoughtSpot.

* Parameter values +
This method uses xref:runtime-parameters.adoc[runtime Parameters] (`parameter_values`) in the token to create data security rules. It binds a single value to any Parameter in any Model by Parameter Name and Type match. Parameters can be used in *Formulas* and then as *Filters* in Models.

== ABAC attributes
=== Mandatory token filters

Administrators can set the following attributes for a user via the authentication token, along with the capability to assign the user to ThoughtSpot groups:
The `is_mandatory_token_filter: true` setting in object TML enforces that a filter rule must be provided for a specific column. When this attribute is set on a column in a Model, ThoughtSpot will deny all data access for users who do not have a corresponding filter rule for that column in their ABAC token.

* xref:runtime-filters.adoc[Filter rules] +
Can filter multiple values of any data type. Binds to any Column in any Model or Worksheet with a matching column name in ThoughtSpot (and not the underlying database table column name).
When setting filter rules within the token, you must place the `is_mandatory_token_filter: true` property on every column in a Model where a filter rule is expected. This setting will deny any access to data if a user has not been assigned values for the expected set of fields.

* xref:runtime-parameters.adoc[Parameter values] +
Binds a single value to any Parameter in any Worksheet or Model by Parameter Name and Type match. Parameters can be used in *Worksheet formulas* and then as *Worksheet filters*.
[#column-name-warning]
The filter rules require passing the *exact* column name as defined in the Model. Otherwise, the values will not bind to any column. You must coordinate between the team that maintains the data objects and the team that builds the xref:trusted-auth-token-request-service.adoc[token request service] to know if any changes will be made to a Model and to ensure column names remain consistent. +
For this reason, end users of an embedded app must not be granted edit access to any Model using ABAC rules via tokens. Setting the `is_mandatory_token_filter: true` property on every column where a filter rule is expected ensures that no data is returned for users when column names change.

[NOTE]
====
If a column is set with both `is_hidden: true` and `is_mandatory_token_filter: true`, and filter conditions for that column are defined in the ABAC token, the filter will be applied as expected. The column will be hidden from the user interface, but the mandatory filter requirement will still be enforced, and data will be shown according to the filter values provided in the token.
====

=== Indexing
Several features within ThoughtSpot, such as autocompletion in Search on values within columns or the suggestions in *Explore* mode, use ThoughtSpot indexing. Due to the runtime nature of ABAC via tokens, ThoughtSpot indexing will not be restricted by the values supplied in a token. This means the indexed columns may expose values in search suggestions or autocompletion that a user should not see, even if ABAC filters would block access to the underlying data. To prevent this, you can do one of the following:

The request for a token with ABAC details can xref:abac-user-parameters.adoc#persistForUser[persist] the set of filters and Parameter values to user sessions within ThoughtSpot, after which all sessions and scheduled reports will use the persisted values until they are changed by another token generation request.
- Disable indexing for columns and fields that must be restricted by ABAC. You may also want to disable indexing on all sensitive columns.
- Define an RLS rule on those fields, since RLS is enforced at the indexing layer and will secure suggestions and sample values.

== Token request
The ABAC message to ThoughtSpot is encoded in JSON Web Token (JWT) format. This token can be used as a bearer token for Cookieless trusted authentication or REST API access. You can also use it as a sign-in token to create a session, in which case, we recommend that the ABAC user properties be *persisted*, to ensure scheduled exports remain secure after the session ends.
The ABAC message to ThoughtSpot is encoded in JSON Web Token (JWT) format. This token can be used as a bearer token for Cookieless trusted authentication or REST API access. You can also use it as a sign-in token to create a session, in which case, we recommend that the ABAC user properties be *persisted*, to ensure scheduled exports remain secure after the session ends.

[NOTE]
====
Expand Down Expand Up @@ -455,24 +442,6 @@ An example workflow might be:
4. Worksheets that need these entitlements use the combination of pass-through function with parameter + formula + filter so that all queries in ThoughtSpot include a WHERE clause with the sub-select.

== Known limitations
The ABAC via tokens method requires using trusted authentication and using Worksheets or Models as data sources for Liveboards and Answers, rather than individual Table objects.

For indexing recommendations, see xref:abac-user-parameters.adoc#_configuration_recommendations_and_best_practices[Configuration recommendations and best practices].

////
* Several features within ThoughtSpot, such as autocompletion in Search on values within columns or the suggestions in *Explore* mode, use ThoughtSpot indexing. Due to the runtime nature of ABAC via tokens, ThoughtSpot indexing will not be restricted by the values supplied in a token.
+
You must turn off indexing for any field that needs to be restricted by RLS when using ABAC via tokens for RLS, or also include an RLS Rule on fields that must also be filtered for the Indexing system.


// * Schedules created with JWT using ABAC will not follow the same security rules as schedules created with standard RLS set up in ThoughtSpot. +
// Schedules created by users in a session secured via RLS using ABAC currently do not follow any data security rules, that is, all data will be shown in schedules. ThoughtSpot recommends removing the ability to create schedules for your end users. The improvements in the upcoming versions include:
// .. The security rules applied to the schedule will be those of the schedule creator
// .. Using `persist:true` in the JWT for security rules will ensure that the schedule is run using the filter rules persisted on the user.
//* Runtime filter conditions must match the column names in your worksheet to avoid data leakage.

//+
//The `runtime_filters` must include the exact ThoughtSpot worksheet column name, or they will not apply to the data set. If a worksheet is changed, you must coordinate between the team that maintains it and the team that builds the token request service, or the filters will no longer be applied. For the same reasons, the end users of an embedded app cannot have edit access to any worksheet using ABAC RLS via tokens. +
// +
The ABAC via tokens method requires using xref:trusted-authentication.adoc[trusted authentication], and using Worksheets or Models as data sources for Liveboards and Answers, rather than individual Table objects.

// You can pass in runtime filters and Parameters for a user via their login token. Both features work like the runtime filters and Parameters available within the Visual Embed SDK, but values set via token cannot be overridden by any user action within the ThoughtSpot UI.
For indexing recommendations, see xref:abac-user-parameters.adoc#_indexing[Indexing].
Loading