[Beta] Salesforce Personal Connection - Admin Guide

👩‍🔬

Beta Connection

This Connection is currently in beta mode, available upon request. As alpha users we need your help to make it as powerful as possible, please share feedback!

General

This feature is a 🔐 security extension of the Dust Salesforce connection Dust Salesforce Connection - Admin Guide for beta testers

How It Works

  • Instead of using a Service Account to reach data, it will instead use the Personal user’s connection details
  • When querying data to your Salesforce for the first time, it will ask users to login to Salesforce
  • When querying data to your Salesforce, it will ensure that your user has enough permissions to retrieve the data

Pre-requisites

  • Salesforce connection must be active on your workspace (to check, navigate to the “Connected Data”, Salesforce should already be here)
  • Users who call Salesforce-related Agents from dust.tt must have a Salesforce account associated to the same email address. Permissions will be inherited from this account

⚠️

When turning on Personal Connection, all requests to Salesforce will be made using this permission scheme. It is not possible to have both the Service Account scheme and the Personal Connection scheme in the same Workspace

Permissions

Data Access Security

  • Queries are executed using the permissions of the connected user in Dust

Usage

Users in the Dust workspace can manage their Salesforce connection from the Account menu under “Exploratory features” or using the following URL

https://dust.tt/w/[workspaceId]/labs/salesforce_personal_connections



Account menu

From there, they can

  • Connect their personal Salesforce account to Dust
  • Disconnect their personal Salesforce account
  • View connection status


Personal connection management menu

Alternatively, using an Agent that requires Salesforce access will automatically prompt the user to connect, if not done already


Users can no longer query Agents without personal authentication

⚠️

When switching from Global permissions to User-based permissions, depending on your Salesforce access schemes, user’s request will get blocked. Here is an example of what a user will see in the Tools Inspection if they do not have enough permissions to retrieve data.

Blocked Query example

{
  "object": "Lead",
  "fields": [
    "Id",
    "FirstName",
    "LastName",
    "Company",
    "Industry",
    "Rating",
    "Status",
    "AnnualRevenue",
    "Owner.Name",
    "CreatedDate",
    "LeadSource"
  ],
  "where": {
    "condition": "AND",
    "filters": [
      {"field": "IsConverted", "operator": "=", "value": false},
      {"field": "Status", "operator": "IN", "value": ["Open - Not Contacted", "Working - Contacted"]}
    ]
  },
  "orderBy": [
    {"field": "Rating", "direction": "DESC"},
    {"field": "CreatedDate", "direction": "DESC"}
  ],
  "relationships": [{
    "relationshipName": "Account",
    "fields": [
      "Id",
      "Name",
      "Type",
      "Industry",
      "Rating",
      "AnnualRevenue",
      "Owner.Name",
      "CreatedDate"
    ],
    "where": {
      "condition": "AND",
      "filters": [
        {"field": "Type", "operator": "=", "value": "Prospect"}
      ]
    }
  }]
}

Error
Query uses tables/relationships that are not allowed: Owner

In this case, this user cannot access the data because they are not the owner of the table, but Salesforce has multiple other ways to control access, including Row-level or field-level controls