Skip to content

Commit d247e93

Browse files
authored
Merge pull request #434 from thoughtspot/main
Final publication for 26.3.0.cl docs
2 parents bfd4bbd + 74d74f8 commit d247e93

52 files changed

Lines changed: 3967 additions & 2033 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

modules/ROOT/pages/abac-migration-from-jwt-beta.adoc

Lines changed: 407 additions & 0 deletions
Large diffs are not rendered by default.

modules/ROOT/pages/abac-migration-from-jwt-ga.adoc

Lines changed: 418 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
= ABAC JWT migration guide
2+
:toc: true
3+
:toclevels: 2
4+
5+
:page-title: ABAC via RLS migration guide
6+
:page-pageid: jwt-abac-migration-guide
7+
: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].

modules/ROOT/pages/abac-user-parameters.adoc

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1-
= ABAC via tokens (Legacy method)
1+
= ABAC via JWT with filter rules and parameters
22
:toc: true
33
:toclevels: 2
44

5-
:page-title: ABAC via tokens
5+
:page-title: ABAC via JWT with filter rules and parameters
66
:page-pageid: abac-user-parameters
77
:page-description: Attribute-based access control pattern can be achieved via user parameters sent in the login token
88

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.
109

1110
[IMPORTANT]
1211
====
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.
1413
====
1514

1615
== Overview
1716

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.
1920

2021
[NOTE]
2122
====
@@ -30,20 +31,20 @@ To create an easier implementation of data security for your application users,
3031
Administrators can set the following attributes for a user via the authentication token, along with the capability to assign the user to ThoughtSpot groups:
3132

3233
* 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.
3435

3536
* 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.
3738

3839
=== Mandatory token filters
3940

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.
4142

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.
4344

4445
[#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.
4748

4849
[NOTE]
4950
====
@@ -188,7 +189,7 @@ Filters and parameters must be *persisted* for them to apply to user sessions wh
188189

189190
|`NONE`
190191
|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.
192193

193194
|`APPEND` or `REPLACE`
194195
|Cookieless Trusted Authentication
@@ -221,9 +222,9 @@ See the xref:trusted-authentication.adoc[trusted authentication] documentation f
221222
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.
222223

223224
=== 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.
225226

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.
227228

228229
=== Show All
229230
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
234235
The xref:trusted-auth-token-request-service.adoc[token request service] must have the following to build a token request for ABAC:
235236

236237
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
238239

239240
The filter rules must be built by:
240241

241242
1. Retrieving user data entitlements
242-
2. Translating entitlements into ThoughSpot `filter_rules`
243+
2. Translating entitlements into ThoughtSpot `filter_rules`
243244

244245
==== Retrieve entitlements
245246
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
304305
{
305306
"column_name" : "Customer ID",
306307
"operator": "EQ",
307-
"values": ["492810"],
308+
"values": ["492810"]
308309
},
309310
{
310311
"column_name": "Product Type",
311312
"operator": "IN",
312-
"values": ["Shirts", "Swimwear"],
313+
"values": ["Shirts", "Swimwear"]
313314
}
314315
]
315316
----
316317

317318
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.
318319

319320
== 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:
321322

322323
. Create link:https://docs.thoughtspot.com/cloud/latest/parameters-create[Parameters, window=_blank] in Worksheet
323324
. 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
327328

328329
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.
329330

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.
331332

332333
All of these Worksheet-level features are set by clicking *Edit* on the Worksheet, then expanding the menu on the left sidebar:
333334

modules/ROOT/pages/abac_rls-variables.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ If you don't want to append or replace any attribute values, do not pass any det
257257
====
258258
* The ABAC implementation with RLS and formula variables does not support session-based rules. Do not use the legacy `persist_option` value of `NONE`.
259259
* `"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.
260261
====
261262

262263
=== Resetting a user or a variable
@@ -478,5 +479,5 @@ To verify the entitlements:
478479

479480
== Additional resources
480481

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].
482483
* 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

Comments
 (0)