Skip to main content

Integrating Snowflake

Capabilities

Cyera's Snowflake integration provides the following capabilities:

ProductCapability
Cyera Privacy
Request TypesAccess, Deletion, Do Not Sell/Share, Identifiers
Identifier CategoriesAny
Live Data MapData Discovery

Before You Start

To successfully configure this integration, please ensure you have sufficient privileges:

  • Snowflake User Role: Admin
  • Secrets Manager: Write Access

Configure Key-Pair Authentication

Utilizing key-pair authentication with Snowflake requires a public and private key to be generated using the following steps. For more information, see Snowflake's documentation.

  1. Generate the private key:

    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
  2. Generate the public key:

    openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
  3. Assign public key to user within Snowflake:

    ALTER USER {user} SET RSA_PUBLIC_KEY={public_key};
  4. Base64 encode the private key:

    openssl base64 -in rsa_key.p8 -out encoded_rsa_key.p8
  5. Use the Base64 encoded private key when creating the credentials below.

Connecting with RM Agent

The Cyera Privacy Agent allows you to automate Data Subject Requests by connecting to internal systems within your network, and without requiring ingress from the public network.

The Agent connects to your Snowflake instance using least privileged credentials that you will create and store in a secrets manager. When configuring the Snowflake integration in Cyera, only the location of that secrets manager entry will be referenced (e.g., AWS Secrets Manager ARN), which ensures that no secrets are shared directly with Cyera.

Prerequisites

Before you can connect to Snowflake, ensure the following:

  • RM Agent is deployed and connected in Cyera.
  • Network is configured to allow the Agent to connect with the Snowflake instance.

Create and Store Credentials

  1. In Snowflake, create a new user for the agent. Only grant the minimum necessary permissions for executing the request.

  2. Configure the following JSON key-value pairs:

    {
    "user": "<agent user>",
    "private_key": "<base64 encoded private key>",
    "account": "<Snowflake Account, e.g. EXA*****>",
    "warehouse": "<Snowflake Warehouse, e.g. COMPUTE_WH>",
    "database": "<Snowflake DB, e.g. SNOWFLAKE_SAMPLE_DATA>"
    }
  3. Store the JSON value in your secrets manager with an entry name like cyera.rm-agent.snowflake.

  4. Ensure that the agent is configured to retrieve the value of this secrets manager entry.

Add the Agent Integration

  1. In Cyera, navigate to Agents and select your Agent.
  2. In the top right, select Add New Integration and search for Snowflake.
  3. Under Enabled Capabilities and Enabled Identifiers, select only those that will be used for this integration.
  4. Enter the Credentials Location (e.g. AWS Secrets Manager ARN).
  5. Select the Data Retrieval behavior for deletion requests.
    warning

    When using Retrieve Data, the data reviewed may not be exactly what is deleted due to the access and deletion logic executing separately!

  6. Under Agent Query Configuration, add request logic to be executed within Snowflake for all enabled request types.
    Query Parameter Format

    Use pyformat paramstyle when formatting query parameters with identifiers (e.g., email, user_id).

    Example:

    SELECT * FROM users WHERE email = %(email)s
  7. Finally, select Configure Integration. Wait a few moments to ensure that the connection is successful. For failed connections, review the Agent container logs for additional details.

 

Need help?
If you have any questions, please reach out to your dedicated Customer Success Engineer or contact us at support@cyera.io.

Disclaimer: The information contained in this message does not constitute as legal advice. We would advise seeking professional counsel before acting on or interpreting any material.