Secret Management

In Instill VDP, certain components require the configuration of credential data, such as passwords, API keys, and tokens. The protection and privacy of these credentials are paramount. To prevent potential exposure of sensitive data, VDP not only prohibits users from setting credential data as plaintext within the recipe but also stores all credential data in a specified secret space. This approach ensures that sensitive data is kept secure and inaccessible to unauthorized individuals. Users can manage their secrets by navigating to Console > Settings > Secrets.

#Secret Object

In the all APIs in Manage Secrets, all endpoints follow a consistent structure for request and response bodies. Below are the key fields:

  • id: The version of this release.
  • uid: The immutable UID of the release.
  • name: The full resource name of the release.
  • description: A brief description of the release.
  • value: This is the secret value. Note that it is a request-only field and will not be included in the response.

For additional details, please refer to the API reference.

Example Secret Object:


{
"name": "users/test/secrets/my-secret-1",
"uid": "89fccd1b-eba6-4597-9462-ad0ddd18902b",
"id": "my-secret-1",
"value": "the-secret-value",
"createTime": "2024-10-01T07:34:36.956689Z",
"updateTime": "2024-10-01T07:34:36.956689Z",
"description": "A secret"
}

#Manage Secrets via API

#List Secrets

This endpoint returns a paginated list of secrets associated with a specific namespace.

cURL
Python

export INSTILL_API_TOKEN=********
curl -X GET 'https://api.instill.tech/v1beta/namespaces/NAMESPACE_ID/secrets' \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $INSTILL_API_TOKEN"

#Create Secret

cURL
Python

export INSTILL_API_TOKEN=********
curl -X POST 'https://api.instill.tech/v1beta/namespaces/NAMESPACE_ID/secrets' \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $INSTILL_API_TOKEN" \
--data '{
"id": "Your secret ID",
"description": "A brief description of your secret",
"value": "The secret value"
}'

#Get Secret

This endpoint allows for getting a secret.

cURL
Python

export INSTILL_API_TOKEN=********
curl -X GET 'https://api.instill.tech/v1beta/namespaces/NAMESPACE_ID/secrets/SECRET_ID' \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $INSTILL_API_TOKEN"

#Update Secret

This endpoint allows for updating a secret with a new value.

cURL
Python

export INSTILL_API_TOKEN=********
curl -X PATCH 'https://api.instill.tech/v1beta/namespaces/NAMESPACE_ID/secrets/SECRET_ID' \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $INSTILL_API_TOKEN" \
--data '{
"description": "A brief description of your secret",
"value": "The secret value"
}'

#Delete Secret

This endpoint enables the deletion of a specified secret.

cURL
Python

export INSTILL_API_TOKEN=********
curl -X DELETE 'https://api.instill.tech/v1beta/namespaces/NAMESPACE_ID/secrets/SECRET_ID' \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $INSTILL_API_TOKEN"

The NAMESPACE_ID and SECRET_ID path parameter must be replaced by the secret owner's ID (namespace) and the secret ID.

For more details, please refer to the API Reference.

#Manage Secrets via Console

  1. Access the Secrets page:

    • Proceed to Console > Settings > Secrets.
    • This section provides a user-friendly interface for managing all your credential data.
  2. Create a new secret:

    • Press the Create Secret button.
    • Input a unique key and the corresponding credential data.
    • Press the Create Secret button to save the secret to make it available for pipeline configurations.
  3. Delete a secret:

    • Locate the secret you want to delete.
    • Press the Delete button to delete the secret.

By complying with these practices, Instill VDP ensures that all credential data is managed securely, minimizing the risk of unauthorized access and potential breaches. This method allows users to concentrate on constructing and deploying robust data processing pipelines without jeopardizing security.

#Reference Secret in Recipe

When setting up a pipeline, users can refer to stored secrets within component configurations using a specific syntax. Rather than incorporating plaintext credentials, users can securely load secret data by employing the following syntax:


${secret.my-secret-key}

This method ensures that the actual credential data is never exposed in the pipeline configuration, maintaining the integrity and security of the system.