You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
:page-description: Steps for migrating legacy ABAC implementation to ABAC via RLS on your instance
8
+
9
+
Administrators can migrate their existing implementation of ABAC with JSON Web Token (JWT) to the new xref:abac_rls-variables.adoc[ABAC via RLS] model, where:
10
+
11
+
* Row-level security (RLS) rules are defined in ThoughtSpot on tables and data models
12
+
* JWTs only provide values for variables used in those RLS rules, instead of sending full filter rules.
13
+
14
+
== Supported migration paths
15
+
16
+
* xref:abac-migration-from-jwt-ga.adoc[From legacy ABAC implementation with "filter_rules" to ABAC via RLS]
17
+
* xref:abac-migration-from-jwt-beta.adoc[From JWT ABAC beta implementation to ABAC via RLS]
18
+
19
+
== Important notes and considerations
20
+
Review the information in the following sections before getting started with the migration.
21
+
22
+
=== ABAC feature support
23
+
The legacy JWT ABAC implementation methods will be deprecated and removed in a future version. The legacy methods will not receive new enhancements or workflow improvements. Therefore, we recommend migrating your existing deployments to xref:abac_rls-variables.adoc[ABAC via RLS] and testing the rollout before the legacy implementation options are removed from ThoughtSpot.
24
+
25
+
=== Persistence behavior
26
+
ABAC via RLS does not support session-based ABAC rules (`"persist_option": "NONE"`). If your implementation currently relies on session-based rules:
27
+
28
+
* Create dedicated user accounts for your application users. You can use REST APIs to automate user creation, update, or deletion.
29
+
* Apply persisted security rules to those users.
30
+
* Use cookieless authentication with these persisted users.
31
+
32
+
This approach addresses all use cases that previously relied on session-based JWT and ensures Liveboard schedule attachments enforce security rules and deliver only secured output to your end users.
33
+
34
+
=== Table joins
35
+
The filters in JWT ABAC Beta implementation respect `MODEL JOINS`. However, RLS by default is an `INNER` join. If you want to adjust behavior for your implementation, contact ThoughtSpot Support.
36
+
37
+
== Next steps
38
+
Choose the migration path that best suits your current implementation and complete the migration steps. Refer to the following guides for migration and rollout instructions:
39
+
40
+
* xref:abac-migration-from-jwt-ga.adoc[Migration guide for JWT ABAC implementation with filter_rules]
41
+
* xref:abac-migration-from-jwt-beta.adoc[Migration guide for JWT ABAC Beta implementation]
42
+
43
+
== Additional resources
44
+
45
+
* For information about JWT with custom variables and RLS rules, see xref:abac_rls-variables.adoc[ABAC via RLS rules].
46
+
* For information about RLS, see xref:rls-rules.adoc[RLS Rules] and link:https://docs.thoughtspot.com/cloud/latest/security-rls[ThoughtSpot Product Documentation, window=_blank].
Copy file name to clipboardExpand all lines: modules/ROOT/pages/abac-user-parameters.adoc
+21-20Lines changed: 21 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,22 @@
1
-
= ABAC via tokens (Legacy method)
1
+
= ABAC via JWT with filter rules and parameters
2
2
:toc: true
3
3
:toclevels: 2
4
4
5
-
:page-title: ABAC via tokens
5
+
:page-title: ABAC via JWT with filter rules and parameters
6
6
:page-pageid: abac-user-parameters
7
7
:page-description: Attribute-based access control pattern can be achieved via user parameters sent in the login token
8
8
9
-
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.
10
9
11
10
[IMPORTANT]
12
11
====
13
-
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.
12
+
Attribute-Based Access Control (ABAC) implementation via JSON Web Token (JWT) with filter rules and parameters is deprecated in 26.3.0.cl and will be removed from ThoughtSpot in a future release. For all new ABAC implementations, use the xref:abac_rls-variables.adoc[ABAC via RLS with template variables]. Your existing implementations with filter rules and parameter values will continue to work until further notice. We recommend xref:abac-migration-from-jwt-ga.adoc[migrating your existing implementation with filter rules] to ABAC via RLS method with custom variables.
14
13
====
15
14
16
15
== Overview
17
16
18
-
To generate JWT tokens for ABAC implementation, you must use the `/api/rest/2.0/auth/token/custom` REST API endpoint.
17
+
ThoughtSpot's ABAC implementation allows administrators to send user-specific security entitlements as attributes at session creation via JWT.
18
+
19
+
To generate JWT with security entitlements for ABAC implementation, use the `/api/rest/2.0/auth/token/custom` REST API endpoint.
19
20
20
21
[NOTE]
21
22
====
@@ -30,20 +31,20 @@ To create an easier implementation of data security for your application users,
30
31
Administrators can set the following attributes for a user via the authentication token, along with the capability to assign the user to ThoughtSpot groups:
31
32
32
33
* Filter rules +
33
-
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.
34
+
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.
34
35
35
36
* Parameter values +
36
-
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.
37
+
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.
37
38
38
39
=== Mandatory token filters
39
40
40
-
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.
41
+
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.
41
42
42
-
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.
43
+
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.
43
44
44
45
[#column-name-warning]
45
-
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. +
46
-
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.
46
+
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. +
47
+
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.
47
48
48
49
[NOTE]
49
50
====
@@ -188,7 +189,7 @@ Filters and parameters must be *persisted* for them to apply to user sessions wh
188
189
189
190
|`NONE`
190
191
|Cookie-based Trusted Authentication
191
-
|Attributes assigned to the token will not be considered. The user logs in using a session cookie and the properties from the previous session persist.
192
+
|Attributes assigned to the token will not be considered. The user logs in using a session cookie and the properties from the previous session persist.
192
193
193
194
|`APPEND` or `REPLACE`
194
195
|Cookieless Trusted Authentication
@@ -221,9 +222,9 @@ See the xref:trusted-authentication.adoc[trusted authentication] documentation f
221
222
The ABAC via tokens pattern allows for setting arbitrary filters and overriding the values of existing Worksheet parameters. These two capabilities can be combined in various ways to create secure and unbreakable RLS.
222
223
223
224
=== Deny all by default
224
-
Starting in ThoughtSpot 10.4.0.cl, you can add `is_mandatory_token_filter: true` to the TML definition of any column in a Worksheet or Model.
225
+
You can add `is_mandatory_token_filter: true` to the TML definition of any column in a model.
225
226
226
-
ThoughtSpot checks to see if the logged-in user has any `filter_rules` defined for a column marked with `is_mandatory_filter: true`, and denies access to any data if a filter rule for the matching column is not found.
227
+
ThoughtSpot checks to see if the logged-in user has any `filter_rules` defined for a column marked with `is_mandatory_token_filter: true`, and denies access to any data if a filter rule for the matching column is not found.
227
228
228
229
=== Show All
229
230
The way to show all values for a column protected by `is_mandatory_token_filter: true` is to pass the special keyword `["TS_WILDCARD_ALL"]` as the value for the column in the `filter_rules`.
@@ -234,12 +235,12 @@ Columns without `is_mandatory_token_filter: true` will show all values if there
234
235
The xref:trusted-auth-token-request-service.adoc[token request service] must have the following to build a token request for ABAC:
235
236
236
237
1. Filter rules for defining multi-value conditions on columns
237
-
2. Parameter values for use in Worksheet or Model formulas
238
+
2. Parameter values for use in model formulas
238
239
239
240
The filter rules must be built by:
240
241
241
242
1. Retrieving user data entitlements
242
-
2. Translating entitlements into ThoughSpot `filter_rules`
243
+
2. Translating entitlements into ThoughtSpot `filter_rules`
243
244
244
245
==== Retrieve entitlements
245
246
The value of the ABAC pattern is that you can send different combinations of filters for different types of users.
@@ -304,20 +305,20 @@ The following is a request where a different user can see all `Region`, but stil
304
305
{
305
306
"column_name" : "Customer ID",
306
307
"operator": "EQ",
307
-
"values": ["492810"],
308
+
"values": ["492810"]
308
309
},
309
310
{
310
311
"column_name": "Product Type",
311
312
"operator": "IN",
312
-
"values": ["Shirts", "Swimwear"],
313
+
"values": ["Shirts", "Swimwear"]
313
314
}
314
315
]
315
316
----
316
317
317
318
Because the `filter_rules` section is entirely within the control of the *token request service*, you have full flexibility to generate any set of filters for any type of user within the token.
318
319
319
320
== Parameters to filter via formulas
320
-
The basic pattern for using a Parameter to filter a Worksheet or Model includes these steps:
321
+
The basic pattern for using a Parameter to filter a model includes these steps:
321
322
322
323
. Create link:https://docs.thoughtspot.com/cloud/latest/parameters-create[Parameters, window=_blank] in Worksheet
323
324
. Make link:https://docs.thoughtspot.com/cloud/latest/formulas[formula, window=_blank] that evaluates the Parameter's default value and the expected values from the token
@@ -327,7 +328,7 @@ link:https://docs.thoughtspot.com/cloud/latest/parameters-create[Parameters, tar
327
328
328
329
You can also add `is_hidden: true` to a Parameter definition using TML, which allows the flexibility to use as many parameters as desired for any type of formula to be used as a Worksheet filter, without cluttering the visible UI.
329
330
330
-
To use a Parameter, you'll create a link:https://docs.thoughtspot.com/cloud/latest/formulas[formula, window=_blank] on the Worksheet or Model. link:https://docs.thoughtspot.com/cloud/latest/filters#_worksheet_filters[Worksheet filters, window=_blank] can reference Worksheet formulas once they have been created, which creates the security layer out of the result derived from the formula.
331
+
To use a Parameter, you'll create a link:https://docs.thoughtspot.com/cloud/latest/formulas[formula, window=_blank] on the model. link:https://docs.thoughtspot.com/cloud/latest/filters#_worksheet_filters[Worksheet filters, window=_blank] can reference Worksheet formulas once they have been created, which creates the security layer out of the result derived from the formula.
331
332
332
333
All of these Worksheet-level features are set by clicking *Edit* on the Worksheet, then expanding the menu on the left sidebar:
Copy file name to clipboardExpand all lines: modules/ROOT/pages/abac_rls-variables.adoc
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -257,6 +257,7 @@ If you don't want to append or replace any attribute values, do not pass any det
257
257
====
258
258
* The ABAC implementation with RLS and formula variables does not support session-based rules. Do not use the legacy `persist_option` value of `NONE`.
259
259
* `"persist_option": "RESET"` attribute is also a legacy value and is not supported.
260
+
* When creating a token request with `"persist_option": "REPLACE"`, the presence or absence of specific keys in your JSON payload determines whether the existing security rules are retained, updated, or deleted.
260
261
====
261
262
262
263
=== Resetting a user or a variable
@@ -478,5 +479,5 @@ To verify the entitlements:
478
479
479
480
== Additional resources
480
481
481
-
* For information about variables and variable APIs, see link:https://docs.thoughtspot.com/cloud/latest/rls-variables-reference[Variables] and xref:variables.adoc[Variable APIs].
482
+
* For information about variables and variable APIs, see link:https://docs.thoughtspot.com/cloud/latest/rls-variables-reference[Variables, window=_blank] and xref:variables.adoc[Variable APIs].
482
483
* For information about RLS rules, see xref:rls-rules.adoc[RLS rules] and link:https://docs.thoughtspot.com/cloud/latest/security-rls[ThoughtSpot product documentation, window=_blank].
0 commit comments