Secure Storage of Sensitive Data changes

Follow

This article is meant for developers that want to develop functionality on top of the current Connexys functionality. Unless your environment contains a lot of connections to third party applications or if you're using customized security measured, the changes in this update will not affect you.

 

Overview:

In order to improve the security in the Connexys package, an encryption mechanism has been implemented for the following list of objects:

  1. Oauth service (cxsrec__cxsOauth_Service__c)
  2. Oauth token (cxsrec__cxsOauth_Token__c)
  3. Textkernel Searcher Authentication (cxsrec__cxsTextkernel_Searcher_Auth__c)
  4. Form (cxsrec__Form__c)
  5. User
  6. InGoedeBanen account (cxsrec__cxsIGB_Account__c)
  7. Outbound service (cxsrec__cxsOutbound_service__c)

 

Starting with release 18, some fields of these objects (find a full list of fields below) no longer store original values in the Salesforce database. Rather, the values of these fields will be encrypted. This has been done to store sensitive data in a secure way and prevent internal and external users to steal it.

 

Encryption mechanism is a native Salesforce encryption class with a unique encryption key per customer, that is generated automatically by the package and not updatable by the users in a customer org.   

 

All the existing Connexys package logic will remain the same and in real-time, decrypt fields when it is needed as part of the business flow. Users that may need to see the original value of these fields will still be able to do so by using extra configurations as described below. 

 

All historical data of these objects will not be updated automatically with the installation of the new release. This is to prevent some custom logic from being executed that might be in a customer orgs outside of Connexys package. However, once users create a new record or update an existing record, encryption will be done automatically by the packaging triggers. 

 

Customers customisations (outside of Connexys package) that works with these objects fields mind be changed a bit to be able to operate with a valid decrypted values ,by using extra steps that is described below. 

 

Data load from a sandbox to production, if you often use a sandbox to transfer objects records to production environment, and these sandboxes was created from production before Connexys 18 release , you will have a different encryption keys in each org. So if you want to transfer some of encrypted fields from this article , we are recommended to  manually put a field value in production org or change your csv file to put a decrypted credentials before using a Dataloader. 

 

Oauth service

Fields that are encrypted : 

  1. Consumer Key (cxsrec__Consumer_Key__c)
  2. Consumer Secret (cxsrec__Consumer_Secret__c)

 

View secure fields:

In order to view Oauth service secure fields , ‘Edit’ and ‘View’ action of this object was overridden by ‘OauthServiceOverview’ visualforce page.

example1.png

By default ‘OauthServiceOverview’ visualforce page will be accessible only for an admin users .If you want to grant view permission for others , than you need to provide access to ‘OauthServiceOverview’ visualforce page for a profile or Permission set and also check CRUD/FLS for an object. But be careful and give access to a users that really need to have access to this data. 

example1.png

Edit functionality done by inline edit mode.

 

You can control the list of fields on a page by using ‘Oauth Service Detail page’ fieldset.

example1.png

Oauth token

Fields that are encrypted : 

  1. Secret (cxsrec__Secret__c)
  2. Verifier (cxsrec__Verifier__c)
  3. Token (cxsrec__Token__c)
  4. Nonce (cxsrec__Nonce__c)

View secure fields:

In order to view Oauth token secure fields , ‘Edit’ and ‘View’ action of this object was overridden by ‘OauthTokenOverview’ visualforce page.

example1.png

By default ‘OauthTokenOverview’ visualforce page will be accessible only for admin users .If you want to grant view permission for others , than you need to provide access to ‘OauthTokenOverview’ visualforce page for a profile or Permission set and also check CRUD/FLS for an object. Only give access to users that really need to have access to this data. 

example1.png

Edit functionality done by inline edit mode.

example1.png

You can control list of fields on a page by using ‘Oauth Token Detail’ fieldset.

 

Textkernel Searcher Authentication

Fields that are encrypted : 

  1. Password (cxsrec__Password__c)
  2. Username (cxsrec__Username__c)
  3. Widget token (cxsrec__Widget_token__c)

 

View secure fields:

In order to view Textkernel Searcher Authentication secure fields , ‘Edit’ and ‘View’ action of this object was overridden by ‘TextkernelSearcherAuthOverview’ visualforce page.

example1.png

By default ‘TextkernelSearcherAuthOverview’ visualforce page will be accessible only for admin users .If you want to grant view permission non-admin users, you need to provide access to ‘TextkernelSearcherAuthOverview’ visualforce page for a profile or Permission set and also check CRUD/FLS for an object. Only give access to users that really need to have access to this data.

 

‘Password’ (cxsrec__Password__c) field are Text (Encrypted) type , so only users that have ‘View Encrypted Data’ permission will be able to see it 

example1.png

Edit functionality done by inline edit mode.

You can control list of fields on a page by using ‘Textkernel Searcher Auth Detail page ’ fieldset.

example1.png

Form

Fields that are encrypted : 

  1. Sourcebox password (cxsrec__Sourcebox_password__c)
  2. Sourcebox username (cxsrec__Sourcebox_username__c)
  3. Sourcebox token (cxsrec__Searchbox_token__c)
  4. Sourcebox account(cxsrec__Sourcebox_account__c)
  5. Sourcebox dropbox api id (cxsrec__Sourcebox_dropbox_api_id__c)
  6. Sourcebox google api id (cxsrec__Searchbox_google_api_id__c)

 

View secure fields:

 

In order to view Form secure fields , was added a new custom field ‘Form secure fields’ (cxsrec__Form_secure_fields__c) that can be added to record detail page layout. Please also provide users ‘View’ permission for this field on a profile or permission set.

example1.png

Once user click to  ‘Form secure fields’ a new ‘FormSecureFields’ visualforce will open.

example1.png

Edit functionality done by inline edit mode.



By default ‘FormSecureFields’ visualforce page will be accessible only for admin users .If you want to grant view permission for non-admin users, you need to provide access to ‘FormSecureFields’ visualforce page for a profile or Permission set . Only give access to users that really need to have access to this data.

 

‘Sourcebox password’ (cxsrec__Sourcebox_password__c) field are Text (Encrypted) type , so only users that have ‘View Encrypted Data’ permission will be able to see it .

 

User

Fields that is encrypted : 

  1. BroadBean Password (cxsrec__BroadBean_Password__c)
  2. BroadBean Username (cxsrec__BroadBean_UserName__c)
  3. Mimir Consultant Password (cxsrec__Mimir_Consultant_Code__c)
  4. Mimir Consultant Username ( cxsrec__Mimir_Consultant_Username__c)

 

View secure fields:

 

In order to view User secure fields , was added a new custom field ‘User secure fields’ (cxsrec__User_Secure_Fields__c) that can be added to record detail page layout. Please also provide users ‘View’ permission for this field on a profile or permission set.

example1.png

Once user click to  ‘User secure fields’ a new ‘UserSecureFields’ visualforce will open.

example1.png

Edit functionality done by inline edit mode.

By default ‘UserSecureFields’ visualforce page will be accessible only for admin users .If you want to grant view permission for non-admin users, you need to provide access to ‘UserSecureFields’ visualforce page for a profile or Permission set. Only give access to users that really need to have access to this data.

 

‘BroadBean Password’(cxsrec__BroadBean_Password__c) and Mimir Consultant Password (cxsrec__Mimir_Consultant_Code__c) fields are Text (Encrypted) type , so only users that have ‘View Encrypted Data’ permission will be able to see it .

 

InGoedeBanen account

 

Fields that is encrypted : 

  1. Password (cxsrec__Password__c)
  2. User Name (cxsrec__User_Name__c)

 

View secure fields:

In order to view InGoedeBanen account secure fields , ‘Edit’ and ‘View’ action of this object was overridden by ‘IGBAccounOverview’ visualforce page.

example1.png

By default ‘IGBAccounOverview’ visualforce page will be accessible only for admin users .If you want to grant view permission for non-admin users, you need to provide access to ‘IGBAccounOverview’ visualforce page for a profile or Permission set and also check CRUD/FLS for an object. Only give access to users that really need to have access to this data.

example1.png

Edit functionality done by inline edit mode.

 

You can control list of fields on a page by using ‘InGoedeBanen account detail page’ fieldset.

example1.png

‘Password’(cxsrec__BroadBean_Password__c) field are Text (Encrypted) type , so only users that have ‘View Encrypted Data’ permission will be able to see it .

 

Outbound service

 

Fields that is encrypted : 

  1. Identifier (cxsrec__Identifier__c)
  2. Password (cxsrec__Password__c)
  3. Username (cxsrec__Username__c)

 

View secure fields:

In order to view Outbound service secure fields , ‘Edit’ and ‘View’ action of this object was overridden by ‘OutboundServiceOverview’ visualforce page.

example1.png

By default ‘OutboundServiceOverview’ visualforce page will be accessible only for admin users .If you want to grant view permission for non-admin users, you need to provide access to ‘OutboundServiceOverview’ visualforce page for a profile or Permission set and also check CRUD/FLS for an object. Only give access to users that really need to have access to this data.

example1.png

Edit functionality done by inline edit mode.

 

You can control list of fields on a page by using ‘Outbound Service Detail page’ fieldset.

example1.png


Customers customisations

If you have any custom logic in your org (outside of Connexys package) that work with these encrypted objects fields, you might need to do some small changes in order to get a decrypted fields value.

As a part of the package we expose  a ‘CryptoUtil’ class that has 2 global methods ‘encrypt’ and ‘decrypt’ , that is accessible outside of the package. In order to get a decrypted value of the field in your custom code, you can use ‘decrypt’ method and pass a field value you got from a Database.

 

Example:

 

User someUser = [Select cxsrec__BroadBean_UserName__c from User where cxsrec__BroadBean_UserName__c != null limit 1];

String decryptedBroadBeanUserName = CryptoUtil.decrypt(someUser.cxsrec__BroadBean_UserName__c);

Have more questions? Submit a request

Comments

Powered by Zendesk