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
If you are having User Sync access your corporate directory, it
301
314
must be configured to read from the directory server using a
302
315
service account. This service account only needs read access and
@@ -431,7 +444,18 @@ secure them properly**, as described in the
431
444
[Security Considerations](#security-considerations) section of
432
445
this document.
433
446
434
-
#### Configure connection to the Adobe Admin Console
447
+
There are three techniques supported by User Sync for securing credentials.
448
+
449
+
1. Credentials can be placed in the connector-umapi.yml and connector-ldap.yml files directly and the files protected with operating system access control.
450
+
2. Credentials can be placed in the operating system secure credential store and referenced from the two configuration files.
451
+
3. The two files in their entirety can be stored securely or encrypted and a program that returns their contents is referenced from the main configuration file.
452
+
453
+
454
+
The example configuration files include entries that illustrate each of
455
+
these techniques. You would keep only one set of configuration items
456
+
and comment out or remove the others.
457
+
458
+
#### Configure connection to the Adobe Admin Console (UMAPI)
435
459
436
460
When you have obtained access and set up an integration with User
437
461
Management in the Adobe I/O
@@ -445,7 +469,7 @@ have been assigned to your organization:
445
469
- Technical Account ID
446
470
- Private Certificate
447
471
448
-
Open your copy of the adobe-user-config.yml file in a plain-text
472
+
Open your copy of the connector-umapi.yml file in a plain-text
449
473
editor, and enter these values in the “enterprise” section:
450
474
451
475
```YAML
@@ -461,6 +485,19 @@ enterprise:
461
485
specified in `priv_key_path`, and that it is readable only to the
462
486
user account that runs the tool.
463
487
488
+
In User Sync 2.1 or later there is an alternative to storing the private key in a separate file; you can place
489
+
the private key directly in the configuration file. Rather than using the
490
+
`priv_key_path` key, use `priv_key_data` as follows:
#### Configure connection to your enterprise directory
465
502
466
503
Open your copy of the connector-ldap.yml file in a plain-text
@@ -742,6 +779,7 @@ enterprise:
742
779
client_secret: "Client secret goes here"
743
780
tech_acct: "Tech account ID goes here"
744
781
priv_key_path: "Path to private.key goes here"
782
+
# priv_key_data: "actual key data goes here" # This is an alternative to priv_key_path
745
783
```
746
784
747
785
### Testing your configuration
@@ -1660,6 +1698,100 @@ reaches the rate limit. It is normal to see messages in the
1660
1698
console indicating that the script has paused for a short amount
1661
1699
of time before trying to execute again.
1662
1700
1701
+
Starting in User Sync 2.1, there are two additional techniques available
1702
+
for protecting credentials. The first uses the operating system credential
1703
+
store to store individual configuration credential values. The second uses
1704
+
a mechanism you must provide to store the entire configuration file for umapi
1705
+
and/or ldap which includes all the credentials required. These are
1706
+
detailed in the next two sections.
1707
+
1708
+
#### Storing Credentials in OS Level Storage
1709
+
1710
+
To setup User Sync to pull credentials from the Python Keyring OS credential store, set the connector-umapi.yml and connector-ldap.yml files as follows:
Note the change of `api_key`, `client_secret`, and `priv_key_path` to `secure_api_key_key`, `secure_client_secret_key`, and `secure_priv_key_data_key`, respectively. These alternate configuration values give the key names to be looked up in the user keychain (or the equivalent service on other platforms) to retrieve the actual credential values. In this example, the credential key names are `umapi_api_key`, `umapi_client_secret`, and `umapi_private_key_data`.
1724
+
1725
+
The contents of the private key file is used as the value of `umapi_private_key_data` in the credential store.
1726
+
1727
+
The credential values will be looked up using the specified key names with the user being the org_id value.
1728
+
1729
+
1730
+
connector-ldap.yml
1731
+
1732
+
username: "your ldap account username"
1733
+
secure_password_key: ldap_password
1734
+
host: "ldap://ldap server name"
1735
+
base_dn: "DC=domain name,DC=com"
1736
+
1737
+
The LDAP access password will be looked up using the specified key name
1738
+
(`ldap_password` in this example) with the user being the specified username
1739
+
config value.
1740
+
1741
+
Credentials are stored in the underlying operating system secure store. The specific storage system depends in the operating system.
1742
+
1743
+
| OS | Credential Store |
1744
+
|------------|--------------|
1745
+
|Windows | Windows Credential Vault |
1746
+
| Mac OS X | Keychain |
1747
+
| Linux | Freedesktop Secret Service or KWallet |
1748
+
1749
+
On Linux, the secure storage application would have been installed and configured by the OS vendor.
1750
+
1751
+
The credentials are added to the OS secure storage and given the username and credential id that you will use to specify the credential. For umapi credentials, the username is the organization id. For the LDAP password credential, the username is the LDAP username. You can pick any identifier you wish for the specific credentials; they must match between what is in the credential store and the name used in the configuration file. Suggested values for the key names are shown in the examples above.
1752
+
1753
+
1754
+
#### Storing Credential Files in External Management Systems
1755
+
1756
+
As an alternative to storing credentials in the local credential store, it is possible to integrate User Sync with some other system or encryption mechanism. To support such integrations, it is possible to store the entire configuration files for umapi and ldap externally in some other system or format.
1757
+
1758
+
This is done by specifying, in the main User Sync configuration file, a command to be executed whose output is used as the umapi or ldap configuration file contents. You will need to provide the command that fetches the configuration information and sends it to standard output in yaml format, matching what the configuration file would have contained.
1759
+
1760
+
To set this up, use the following items in the main configuration file.
1761
+
1762
+
1763
+
user-sync-config.yml (showing partial file only)
1764
+
1765
+
adobe_users:
1766
+
connectors:
1767
+
# umapi: connector-umapi.yml # instead of this file reference, use:
1768
+
umapi: $(read_umapi_config_from_s3)
1769
+
1770
+
directory_users:
1771
+
connectors:
1772
+
# ldap: connector-ldap.yml # instead of this file reference, use:
1773
+
ldap: $(read_ldap_config_from_server)
1774
+
1775
+
The general format for external command references is
1776
+
1777
+
$(command args)
1778
+
1779
+
The above examples assume there is a command with the name `read_umapi_config_from_s3`
1780
+
and `read_ldap_config_from_server` that you have supplied.
1781
+
1782
+
A command shell is launched by User Sync which
1783
+
runs the command. The standard output from the command is captured and that
1784
+
output is used as the umapi or ldap configuration file.
1785
+
1786
+
The command is run with the working directory as the directory containing the configuration file.
1787
+
1788
+
If the command terminates abnormally, User Sync will terminate with an error.
1789
+
1790
+
The command can reference a new or existing program or a script.
1791
+
1792
+
Note: If you use this technique for the connector-umapi.yml file, you will want to embed the private key data in connector-umapi-yml directly by using the priv_key_data key and the private key value. If you use the priv_key_path and the filename containing the private key, you would also need to store the private key somewhere
1793
+
secure and have a command that retrieves it in the file reference.
1794
+
1663
1795
### Scheduled task examples
1664
1796
1665
1797
You can use a scheduler provided by your operating system to run
0 commit comments