Skip to content

Commit 422465b

Browse files
Merge pull request #273 from thoughtspot/10.6.0.cl
Merge 10.6.0.cl docs to main
2 parents 1b8000c + b8b25a2 commit 422465b

30 files changed

Lines changed: 1355 additions & 807 deletions

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

Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,47 @@
88

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

11-
// Unlike xref:abac-user-parameters-beta.adoc[the beta version of ABAC implementation],
12-
13-
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.
14-
15-
// This article describes the steps required to implement ABAC for row-level security (RLS) using the +++<a href="{{navprefix}}/restV2-playground?apiResourceId=http%2Fapi-endpoints%2Fauthentication%2Fget-custom-access-token">Custom access token </a>+++ REST API endpoint.
11+
This article provides a detailed overview of the ABAC implementation via tokens for row-level security (RLS), and lists configuration recommendations, and best practices.
1612

1713
[IMPORTANT]
1814
====
15+
To enable the ABAC via tokens feature on your instance, contact ThoughtSpot Support.
16+
====
17+
18+
1919
// * 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.
2020
// * 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.
21-
* To update your implementation from 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].
21+
// * The +++<a href="{{navprefix}}/restV2-playground?apiResourceId=http%2Fapi-endpoints%2Fauthentication%2Fget-custom-access-token">Custom access token </a>+++ REST API endpoint.
22+
23+
24+
== Configuration recommendations and best practices
25+
26+
Before you begin, note the following recommendations and feature limitations:
27+
28+
* *API for token generation* +
29+
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. To update your implementation from 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].
30+
31+
* *Mandatory token filters* +
32+
The most common *best practice* is to define *filter rules* within the token and 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__.
33+
+
34+
[NOTE]
35+
====
36+
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 to 10.6.0.cl or set `is_hidden` to `false` on the column and then apply filter rules.
2237
====
2338

24-
== ABAC attributes
39+
[#column-name-warning]
40+
* *Column names in Worksheet/ Model* +
41+
The filter rules require passing the *exact* ThoughtSpot Worksheet or Model column name 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. +
42+
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. +
43+
When column names change, ensure that the `is_mandatory_token_filter: true` property is set on every column where a filter rule is expected.
2544

26-
The most common *best practice* is to define *filter rules* within the token and 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.
45+
* *Indexing* +
46+
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.
47+
+
48+
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.
49+
50+
51+
== ABAC attributes
2752

2853
Administrators can set the following attributes for a user via the authentication token, along with the capability to assign the user to ThoughtSpot groups:
2954

@@ -33,14 +58,6 @@ Can filter multiple values of any data type. Binds to any Column in any Model or
3358
* xref:runtime-parameters.adoc[Parameter values] +
3459
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*.
3560

36-
[IMPORTANT]
37-
====
38-
[#column-name-warning]
39-
The filter rules require passing the *exact* ThoughtSpot Worksheet or Model column name the values will not bind to any column. You must coordinate between the team that maintains the Worksheets and Models and the team that builds the xref:trusted-auth-token-request-service.adoc[token request service] if any changes will be made to a Model or Worksheet.
40-
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.
41-
When column names change, ensure that the `is_mandatory_token_filter: true` property is set on every column where a filter rule is expected.
42-
====
43-
4461
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.
4562

4663
== Token request
@@ -90,6 +107,11 @@ An example of setting both `filter_rules` and `parameter_values` without any per
90107
]
91108
----
92109

110+
[NOTE]
111+
====
112+
Passing an empty array in a filter column clears all filter rules and doesn't apply the filters on the column.
113+
====
114+
93115
=== Apply to specific objects
94116
By default, any specified filter or parameter will bind to any content with an exact match for the column or Parameter name.
95117

@@ -152,8 +174,11 @@ a|All persisted rules and attributes of the user object are replaced with the se
152174

153175
[NOTE]
154176
====
155-
In 10.4.0.cl, the `REPLACE` behavior can be achieved by making a `RESET` request followed by an `APPEND` request, then passing only the `APPEND` request token to the browser.
177+
* By default, the `RESET` option resets all attributes. In 10.6.0.cl and later versions, you can specify the attributes to reset in the `reset_option` attribute. The `reset_option` allows resetting only filter rules, Parameters, or group properties in the token API request.
178+
* In 10.4.0.cl, the `REPLACE` behavior can be achieved by making a `RESET` request followed by an `APPEND` request, then passing only the `APPEND` request token to the browser.
156179
====
180+
181+
157182
|=====
158183

159184
Filters and parameters must be *persisted* for them to apply to user sessions when using xref:trusted-authentication.adoc#cookie[cookie-based trusted authentication] or scheduled reports.

modules/ROOT/pages/api-auth-session.adoc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@ When using the REST API through a web browser, ThoughtSpot recommends that you u
1515
include::{path}/log-in-api.adoc[]
1616

1717
A successful login returns a session cookie that can be used in your subsequent API calls. For more information, see xref:api-auth-session.adoc#sessionCookies[Session cookies for subsequent API calls].
18+
[NOTE]
19+
====
20+
* If MFA [beta betaBackground]^Beta^ is enabled on your ThoughtSpot instance then basic authentication with only `username` and `password` will return an error.
21+
Contact https://community.thoughtspot.com/customers/s/login/?ec=302&startURL=%2Fcustomers%2Fs%2Fcontactsupport[ThoughtSpot Support] for assistance.
22+
* Embedded users authenticating to ThoughtSpot with basic authentication are recommended to switch to `AuthType.TrustedAuthTokenCookieless`.
23+
* MFA can be enabled on your instance only if Identity and Access Management (IAMv2) is already enabled.
24+
====
1825

1926
== Trusted authentication
2027

modules/ROOT/pages/api-changelog.adoc

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,9 @@ Allows adding `name` and `description` text strings. When these parameters are d
2020
* `HostEvent.Pin` +
2121
Allows adding custom properties for visualization ID, name, and description, Liveboard ID, and Tab ID. When these parameters are defined, the event triggers an action to pin the Answer to the Liveboard specified in the code, without opening the *Pin* modal.
2222

23-
////
2423
For more information, see xref:embed-events.adoc#hostEventParameterization[Host Events] documentation.
25-
////
2624

27-
|[tag greenBackground]#NEW FEATURE# a| Customization settings for Spotter embed
25+
|[tag greenBackground]#NEW FEATURE# a|
2826

2927
New configuration attributes::
3028

@@ -65,11 +63,9 @@ The following new CSS variables are available for Spotter interface customizatio
6563
* `--ts-var-spotter-input-background`
6664
* `--ts-var-spotter-prompt-background`
6765

68-
////
6966
For more information about Spotter customization, see xref:embed-spotter.adoc#SpotterCSS[Customize styles].
70-
////
67+
|[tag greenBackground]#NEW FEATURE# a|
7168

72-
|[tag greenBackground]#NEW FEATURE# a| Liveboard embed enhancements
7369

7470
Configurations attributes::
7571

@@ -85,9 +81,6 @@ Use the following action IDs in the `disabledActions`, `visibleActions`, or `hid
8581
* `Action.DisableChipReorder` +
8682
ID for the action that disables filter chip reordering.
8783
* `ChangeFilterVisibilityInTab` +
88-
ID for the action that allows you to modify filter visibility in a Liveboard tab.
89-
|====
90-
9184

9285
== Version 1.35.0, December 2024
9386

modules/ROOT/pages/authentication.adoc

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,28 @@ In this method, a REST client sends the `username` and `password` to authenticat
2020
xref:authentication.adoc#trusted-auth-v2[Trusted authentication];;
2121
In this method, the REST client must send the `username` and `secret_key` in the API request to obtain an authentication token. The `secret_key` is generated if **Trusted authentication** is enabled on your ThoughtSpot instance.
2222

23+
Multifactor authentication (MFA):: [beta betaBackground]^Beta^
24+
+
25+
ThoughtSpot now supports multifactor authentication (MFA) for environments using local authentication with Identity and Access Management (IAMv2). If MFA is enabled on your ThoughtSpot instance,
26+
27+
* The REST API calls to the API endpoints authenticating to ThoughtSpot with only `username` and `password` will return an error. You will now have an additional authentication factor.
28+
+
29+
Contact https://community.thoughtspot.com/customers/s/login/?ec=302&startURL=%2Fcustomers%2Fs%2Fcontactsupport[ThoughtSpot Support] for assistance.
30+
* Embedded users authenticating to ThoughtSpot with basic authentication are recommended to switch to `AuthType.TrustedAuthTokenCookieless`.
31+
* Non-embedded users calling REST APIs authenticating to ThoughtSpot with only `username` and `password` will return an error. Contact https://community.thoughtspot.com/customers/s/login/?ec=302&startURL=%2Fcustomers%2Fs%2Fcontactsupport[ThoughtSpot Support] for assistance.
32+
33+
For more information, see https://docs.thoughtspot.com/cloud/latest/authentication-local-mfa[Multifactor authentication for customers using local authentication, window=_blank].
34+
2335
[#loginTS]
2436
== Cookie-based authentication
2537
For cookie-based authentication, make an API call to the `/api/rest/2.0/auth/session/login` endpoint with the `username`, `password`, and other attributes in the request body.
2638
39+
[NOTE]
40+
====
41+
* If MFA is enabled on your ThoughtSpot instance then authentication with only `username` and `password` will return an error. Contact https://community.thoughtspot.com/customers/s/login/?ec=302&startURL=%2Fcustomers%2Fs%2Fcontactsupport[ThoughtSpot Support] for assistance.
42+
* MFA can be enabled on your instance only if Identity and Access Management (IAMv2) is already enabled.
43+
====
44+
2745
=== Request parameters
2846
[width="100%" cols="1,4"]
2947
[options='header']
@@ -130,6 +148,12 @@ By default, the token obtained from ThoughtSpot is valid for 5 minutes (300 seco
130148

131149
You can obtain a token that grants read-only access to a ThoughtSpot metadata object via a `POST` request to the `/api/rest/2.0/auth/token/object` endpoint, or get a token that grants full access to ThoughtSpot via `/api/rest/2.0/auth/token/full`.
132150

151+
[NOTE]
152+
====
153+
* If MFA is enabled on your ThoughtSpot instance then authentication with only `username` and `password` will return an error. Contact https://community.thoughtspot.com/customers/s/login/?ec=302&startURL=%2Fcustomers%2Fs%2Fcontactsupport[ThoughtSpot Support] for assistance.
154+
* MFA can be enabled on your instance only if Identity and Access Management (IAMv2) is already enabled.
155+
====
156+
133157
==== Get a token for full access
134158

135159
To get an access token that grants full access to ThoughtSpot, send a `POST` request with `username`, `password`, and other attributes to the `/api/rest/2.0/auth/token/full` endpoint:
@@ -539,7 +563,8 @@ If your current implementation is using the beta version of the ABAC and you wan
539563
|`username`
540564
|__String__. Username of the ThoughtSpot user. If the user is not available in ThoughtSpot, a new user account will be created and added to ThoughtSpot.
541565
|`password`
542-
a|__String__. Password of the user account. If using `secret_key` to generate the token, do not specify the `Password`.
566+
a|__String__. Password of the user account. If using `secret_key` to generate the token, do not specify the `Password`. +
567+
If MFA is enabled on your ThoughtSpot instance then API call with only `username` and `password` will return an error.
543568
|`secret_key`
544569
|__String__. The secret key string provided by the ThoughtSpot server. ThoughtSpot generates this secret key xref:trusted-authentication.adoc#trusted-auth-enable[when trusted authentication is enabled].
545570
|`validity_time_in_sec` +
@@ -549,16 +574,28 @@ __Optional__|__Integer__. If the Orgs feature is enabled on your instance, speci
549574
|`persist_option` a| Indicates if the filter rules and Parameter attributes defined in the API request should persist for user sessions initiated with the token obtained from this API call. The following options are available:
550575

551576
* `APPEND` +
552-
Adds the attributes defined in the API request to the user’s user properties. These properties will be applied to user sessions and for scheduled jobs if any.
577+
Adds the attributes defined in the API request to the user properties. These properties will be applied to user sessions and for scheduled jobs if any.
553578

554579
* `NONE` +
555-
The security entitlements assigned via attributes will be used only for the user session initiated with the token generated from this API call.
580+
581+
Does not update the existing user properties. The attributes defined in the API request will be applied to the token, but do not persist when the token expires.
556582

557583
* `REPLACE` +
558-
Available from 10.5.0.cl. Replaces existing user properties of the user with the attributes defined in this API request.
584+
Available from 10.5.0.cl. Replaces existing user properties of the user with the new attributes assigned to the token in the API request.
559585

560586
* `RESET` +
561-
Resets the user properties assigned to a user upon token generation.
587+
Resets the existing user properties upon token generation and adds the new attributes defined in the request. By default, `"persist_option": "RESET"` resets all attributes, unless a specific `reset_option` is defined.
588+
589+
|`reset_option` a|__Array of strings__. Allows you to define the type of attributes to reset upon token generation. The following options are available:
590+
591+
* `FILTER_RULES` +
592+
Resets filter attributes.
593+
594+
* `PARAMETERS`
595+
Resets only Parameters.
596+
597+
* `GROUPS`
598+
Resets group assignments
562599

563600
|`filter_rules` a|__Array of filter rules__. An array of runtime filter conditions to pass via token. Each rule in the array must include the following information:
564601

modules/ROOT/pages/common/nav.adoc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
** link:{{navprefix}}/restV2-playground?apiResourceId=http%2Fgetting-started%2Fintroduction[REST API v2 Playground]
2323
** link:{{navprefix}}/graphql-play-ground[GraphQL Playground]
2424
** +++<a href="{{previewPrefix}}/api/rest/playgroundV1" target="_blank">REST API v1 Playground</a>+++
25-
** link:{{navprefix}}/theme-builder[Theme Builder ^[Beta\]^]
25+
** link:{{navprefix}}/theme-builder[Theme Builder ^Beta^]
2626
** link:{{navprefix}}/spotdev-portal[How to use]
2727
*** link:{{navprefix}}/dev-playground[Visual Embed Playground]
2828
*** link:{{navprefix}}/graphql-playground[GraphQL Playground]
@@ -63,7 +63,7 @@
6363
*** link:{{navprefix}}/full-embed[Embed full application]
6464
*** link:{{navprefix}}/search-embed[Embed search page]
6565
*** link:{{navprefix}}/embed-nls[Embed Natural Language Search]
66-
*** link:{{navprefix}}/embed-spotter[Embed Spotter ^BETA^]
66+
*** link:{{navprefix}}/embed-spotter[Embed Spotter]
6767
*** link:{{navprefix}}/embed-searchbar[Embed search bar]
6868
*** link:{{navprefix}}/react-app-embed[Embed with React components]
6969
@@ -74,6 +74,7 @@
7474
***** link:{{navprefix}}/css-variables-reference[CSS variables reference]
7575
***** link:{{navprefix}}/customize-icons[Customize icons]
7676
***** link:{{navprefix}}/customize-text[Customize text strings]
77+
**** link:{{navprefix}}/theme-builder-doc[Theme builder ^Beta^]
7778

7879
*** link:{{navprefix}}/filters-overview[Filters overview]
7980
**** link:{{navprefix}}/runtime-overrides[Runtime overrides]

0 commit comments

Comments
 (0)