Data Collector pipeline stages communicate with external systems to read and write data. Many of these external systems require credentials - user names or passwords - to access the data. When you configure pipeline stages for these external systems, you define the credentials that the stage uses to connect to the system.
If you enter credential values directly in stage properties, you expose the credentials to any user with access to the pipeline. To access external systems without exposing the credentials, define credentials in a credential store and then use the Data Collector credential functions in the stage properties to retrieve those values.
You can configure a Data Collector to use multiple credential stores at the same time. Each credential store is identified by a unique ID.
When you use credential functions in a pipeline, you can further secure the credential values by allowing only a specific group the ability to validate, preview, or run the pipeline.
The credential functions include a group argument that defines the group that can access the credential. Only users that have execute permission on the pipeline and that belong to this group can validate, preview, or run the pipeline that retrieves the credential values.
When working only with Data Collector, simply specify the group name, such as "devops". When working with Control Hub, specify the group using the required naming convention: <group ID>@<organization ID>. For example, "devops@MyCompany".
If you do not want to restrict access to the credentials, specify the default "all" group when working only with Data Collector or the default "all@<organization ID>" group when working with Control Hub.
To use the CyberArk credential store system, install the CyberArk credential store stage library and define the configuration properties used to connect to CyberArk Application Identity Manager. Then, use credential functions in pipeline stage properties to retrieve the credential values.
By default, a full Data Collector installation includes the CyberArk credential store stage library. The core installation does not include the library.
To verify that a Data Collector
has the CyberArk credential store stage library installed, click the Package Manager
icon () to display the list of installed stage libraries. If the library is not installed,
install the
library before configuring the CyberArk credential store.
credentialStores=cyberark
If enabling only the CyberArk credential store, set the property to "cyberark". If enabling multiple credential stores, set the property to each credential store type. For example, to use both the Java keystore and the CyberArk credential stores, set the value to "jks,cyberark".
The CyberArk credential store definition, web service URL, and application ID are required properties. Uncomment and configure other properties as needed.
The file includes the following properties:
CyberArk Property | Description |
---|---|
credentialStore.cyberark.def | Required. Defines the implementation of the CyberArk
credential store. Do not change the default value. |
credentialStore.cyberark.config.credential.refresh.millis | Optional. Number of milliseconds that Data Collector locally caches a credential. When the time expires, Data Collector retrieves the credential from CyberArk. |
credentialStore.cyberark.config.credential.retry.millis | Optional. Number of milliseconds that Data Collector waits before attempting to retry a retrieval of a credential from CyberArk, in the case of an error. |
credentialStore.cyberark.config.connector | Optional. Connector type to CyberArk. Leave the default of “webservices” since only web services is currently supported. |
credentialStore.cyberark.config.ws.url | Required. CyberArk Central Credential Provider web service
URL. Use the following format: https://<host name>:<port>/AIMWebService/api/Accounts |
credentialStore.cyberark.config.ws.appId | Required. CyberArk application ID for this Data Collector. You must create the application ID in CyberArk. |
credentialStore.cyberark.config.ws.maxConcurrentConnections | Optional. Maximum number of concurrent web service calls that Data Collector can make to CyberArk. |
credentialStore.cyberark.config.ws.validateAfterInactivity.millis | Optional. Number of milliseconds of inactivity before Data Collector validates the HTTP connection to CyberArk. |
credentialStore.cyberark.config.ws.connectionTimeout.millis | Optional. Number of milliseconds to wait for a connection to CyberArk. |
credentialStore.cyberark.config.ws.nameSeparator | Optional. Separator to use for the CyberArk safe, folder,
object name, and element name values in the credential name
argument used by the credential functions. Use the following
format for the name
argument:
<safe><separator><folder><separator><object name><separator><element name> For
example, if you keep the default ampersand (&), the
format for the name argument
is:
<safe>&<folder>&<object name>&<element name> |
credentialStore.cyberark.config.ws.http.authentication | Optional. Authentication type used by the CyberArk Central
Credential Provider web services: none, basic, or
digest. Default is none. |
credentialStore.cyberark.config.ws.http.authentication.user | Optional. Username if using basic or digest authentication. |
credentialStore.cyberark.config.ws.http.authentication.password | Optional. Password if using basic or digest authentication. |
credentialStore.cyberark.config.ws.truststoreFile | Optional. Path to the truststore file if using HTTPS and the
server certificate is using a private CA or is not trusted by
the Java default truststore file. Enter a path relative to the Data Collector configuration directory, $SDC_CONF, or enter an absolute path. |
credentialStore.cyberark.config.ws.truststorePassword | Optional. Password for the truststore file. |
credentialStore.cyberark.config.ws.supportedProtocols | Optional. SSL/TLS-enabled protocols. Versions TLSv1.2 or later are recommended. |
credentialStore.cyberark.config.ws.hostnameVerifier.skip | Optional. Determines whether the host name of the CyberArk
Central Credential Provider web services should be verified
against the domain defined in the HTTPS certificate. By default, the host name is verified. |
credentialStore.cyberark.config.ws.keystoreFile | Optional. If using HTTPS and the CyberArk Central Credential
Provider web services requires client side certificates, the
path to the keystore file that contains the client certificate.
Enter a path relative to the Data Collector configuration directory, $SDC_CONF, or enter an absolute path. |
credentialStore.cyberark.config.ws.keystorePassword | Optional. Password for the keystore file. |
credentialStore.cyberark.config.ws.keyPassword | Optional. Password to access the certificate within the keystore file. |
Use the credential:get() or credential:getWithOptions() function in pipeline stage properties to retrieve credential values from CyberArk.
Use the credential functions in any stage property that displays the key icon next to it. For example:
If working with Control Hub, specify the group using the required naming convention: <group ID>@<organization ID>. To grant access to all users, specify the default "all" group when working only with Data Collector or the default "all@<organization ID>" group when working with Control Hub.
"<option1>=<value>,<option2>=<value>"
"separator=|"
${credential:get("cyberark", "devops", "production&Root\\sqldatabases&payroll&Content")}
${credential:getWithOptions("cyberark", "devops", "production|Root\\sqldatabases|payroll|Content", "separator=|")}
To use the Java keystore credential store system, install the Java keystore credential store stage library and define the configuration properties used to connect to the credential store.
By default, a full Data Collector installation includes the Java keystore credential store stage library. The core installation does not include the library.
To verify that a Data Collector
has the Java keystore credential store stage library installed, click the Package
Manager icon () to display the list of installed stage libraries. If the
library is not installed, install the
library before configuring the Java keystore credential store.
To enable Data Collector to connect to the Java keystore credential store, configure the Java keystore properties in the $SDC_CONF/credential-stores.properties file.
credentialStores=jks
If enabling only the Java keystore credential store, set the property to "jks". If enabling multiple credential stores, set the property to each credential store type. For example, to use both the Java keystore and the Vault credential stores, set the value to "jks,vault".
Java Keystore Property | Description |
---|---|
credentialStore.jks.def | Defines the implementation of the Java Keystore credential
store. Do not change the default value. |
credentialStore.jks.config.keystore.type | Format of the Java keystore file:
Default is PKCS12. |
credentialStore.jks.config.keystore.file | Path and name of the Java keystore file. Enter an absolute
path to the file, or a path relative to the Data Collector configuration directory,
$SDC_CONF. Default is jks-credentialStore.pkcs12. |
credentialStore.jks.config.keystore.storePassword | Password that Data Collector uses to access the Java keystore file. You must change the default value before using the keystore file. |
Use the jks-cs add command to add credentials to the Java keystore file. You can add multiple credentials to the file.
bin/streamsets jks-cs add -i <storeId> -n <credential name> -c <credential value>
bin/streamsets jks-cs add -i jks -n OracleDBPassword -c 278yT6u
Use the credential:get() function in pipeline stage properties to retrieve credential values from the Java keystore.
Use the credential function in any stage property that displays the key icon next to it. For example:
If working with Control Hub, specify the group using the required naming convention: <group ID>@<organization ID>. To grant access to all users, specify the default "all" group when working only with Data Collector or the default "all@<organization ID>" group when working with Control Hub.
${credential:get("jks", "devops", "OracleDBPassword")}
The jks-cs command provides subcommands to add, list, and delete credentials in the Java keystore credential store.
Any changes made to the Java keystore file take effect immediately. For example, if you change the value of an existing credential in the file, running pipelines that require a new connection to the external system use the new credential value.
bin/streamsets jks-cs add \ (-i <storeId> | --id <storeId>) \ (-n <credential name> | --name <credential name>) \ (-c <credential value> | --credential <credential value>)
Add Option | Description |
---|---|
-i <storeId> or --id <storeId> |
Required. Unique ID for the credential store. Use jks. |
-n <credential name> or --name <credential name> |
Required. Name of the credential to add to the Java
keystore credential store. If the name includes non-alphanumeric characters, use single quotation marks around the name. |
-c <credential value> or --credential <credential value> |
Required. Value of the credential to add to the Java
keystore credential store. If the value includes non-alphanumeric characters, use single quotation marks around the value. |
For example, the following command adds a credential named OracleDBPassword with the value df35yT_&5 to the Java keystore credential store:
bin/streamsets jks-cs add -i jks -n OracleDBPassword -c 'df35yT_&5'
bin/streamsets jks-cs delete \ (-i <storeId> | --id <storeId>) \ (-n <credential name> | --name <credential name>)
Delete Option | Description |
---|---|
-i <storeId> or --id <storeId> |
Required. Unique ID for the credential store. Use jks. |
-n <credential name> or --name <credential name> |
Required. Name of the credential to delete from the
Java keystore credential store. If the name includes non-alphanumeric characters, use single quotation marks around the name. |
bin/streamsets jks-cs delete -i jks -n SQLServerDBPassword
bin/streamsets jks-cs list \ (-i <storeId> | --id <storeId>)
List Option | Description |
---|---|
-i <storeId> or --id <storeId> |
Required. Unique ID for the credential store. Use jks. |
bin/streamsets jks-cs list -i jks
To use the Vault credential store system, install the Vault credential store stage library and define the configuration properties used to connect to Vault. Then, use credential functions in pipeline stage properties to retrieve the credential values.
By default, a full Data Collector installation includes the Vault keystore credential store stage library. The core installation does not include the library.
To verify that a Data Collector
has the Vault credential store stage library installed, click the Package Manager icon
() to display the list of installed stage libraries. If the library is not installed,
install the
library before configuring the Vault credential store.
To enable Data Collector to connect to the Vault credential store, configure the Vault properties in the $SDC_CONF/credential-stores.properties file.
credentialStores=vault
If enabling only the Vault credential store, set the property to "vault". If enabling multiple credential stores, set the property to each credential store type. For example, to use both the Java keystore and the Vault credential stores, set the value to "jks,vault".
The Vault credential store definition, server URL, Role ID, and Secret ID are required properties. Configure other properties as needed:
Vault Property | Description |
---|---|
credentialStore.vault.def | Required. Defines the implementation of the Vault credential store. Do not change the default value. |
credentialStore.vault.config.pathKey.separator | Optional. Separator to use for the path and key values in the credential name argument
used by the credential functions. You use the following format for the name
argument:
<path><separator><key> For example, if you
keep the default ampersand (&), the format for the name argument
is:
<path>&<key> |
credentialStore.vault.config.addr | Required. Vault server URL entered in the following
format:https://<host name>:<port number> Use HTTPS to avoid unencrypted communication. |
credentialStore.vault.config.role.id | Required. Vault Role ID that Data Collector uses to authenticate with Vault.
The Role ID is configured within Vault by your Vault administrator. The Data Collector Vault integration relies on
Vault's App Role authentication backend.
Important: The App ID authentication
backend has been deprecated by Hashicorp and will be removed in a future release. As a
result, do not configure the credentialStore.vault.config.app.id property
for new installations.
|
credentialStore.vault.config.secret.id | Required. Vault Secret ID that Data Collector uses to authenticate with Vault.
The Secret ID is configured within Vault by your Vault administrator. Enter one of the
following:
|
credentialStore.vault.config.lease.renewal.interval.sec | Optional. Seconds to wait before checking for leases that need renewal. Default is 60. |
credentialStore.vault.config.lease.expiration.buffer.sec | Optional. Buffer for expiring leases. Data Collector renews leases that expire in less
than the specified number of seconds. Default is 120. |
credentialStore.vault.config.open.timeout | Optional. Timeout to establish an HTTP connection to Vault in milliseconds. Default is 0 for no limit. |
credentialStore.vault.config.proxy.address | Optional. Proxy URL. Configure to use a proxy to access Vault. |
credentialStore.vault.config.proxy.port | Optional. Proxy port. Configure to use a proxy to access Vault. |
credentialStore.vault.config.proxy.username | Optional. Proxy username. Configure to use a proxy to access Vault. |
credentialStore.vault.config.proxy.password | Optional. Proxy password. Configure to use a proxy to access Vault. |
credentialStore.vault.config.read.timeout | Optional. Milliseconds to wait for data before timing out. Default is 0 for no limit. |
credentialStore.vault.config.ssl.enabled.protocols | Optional. SSL/TLS-enabled protocols. Versions TLSv1.2 or later are
recommended. Default is TLSv1.2,TLSv1.3. |
credentialStore.vault.config.ssl.truststore.file | Optional. Path to a Java truststore file. Required when using a private CA or certificates not trusted by the Java default truststore. |
credentialStore.vault.config.ssl.truststore.password | Optional. Password for the truststore file. |
credentialStore.vault.config.ssl.verify | Optional. Whether to verify that the Vault server hostname matches its
certificate. Default is true. False is not recommended. |
credentialStore.vault.config.ssl.timeout | Optional. Timeout for the SSL/TLS handshake in milliseconds. Default is 0 for no limit. |
credentialStore.vault.config.timeout | Optional. Timeout to read from Vault in milliseconds, after a connection has been
established. Default is 0 for no limit. |
Use the credential:get() or credential:getWithOptions() function in pipeline stage properties to retrieve credential values from Vault.
Use the credential functions in any stage property that displays the key icon next to it. For example:
If working with Control Hub, specify the group using the required naming convention: <group ID>@<organization ID>. To grant access to all users, specify the default "all" group when working only with Data Collector or the default "all@<organization ID>" group when working with Control Hub.
Use the following format to specify an option:
"<option>=<option>"
"delay=1000"
${credential:getwithOptions("vault", "devops", "/secret/databases/oracle&password", "delay=1000")}