Skip to content

Access Controls & Secrets (Coming Soon)

Note

Tecton Access Controls is currently available in private preview and not enabled by default. Contact Tecton support for more details.

Tecton protects data access across 3 main interfaces:

Untitled.png

  • Serving Access: ACLs define which Tecton users are allowed to fetch feature values for exploration, training, or serving
  • Config Access: ACLs define which Tecton users are allowed to update the features managed by Tecton
  • Raw Data Access: Protects Tecton's access to raw data sources (data warehouses, data lakes, streams, etc.) consumed by feature transformation pipelines

User Management

Access Controls are tied to a Tecton principal. A principal could be an individual user (Alice or Bob), a service (e.g. a microservice making API requests) or a group of users and services.

principals can be managed in Tecton's Web UI admin interface:

Untitled%201.png

Untitled%202.png

New users can be created directly in the Web UI. Alternatively, Tecton supports SSO integration via SAML. New services' API keys can be created using the Tecton CLI (e.g. tecton api-key create).

By default, every Tecton user has access to Tecton's Web UI, SDK and CLI. However, the workspaces they can interact with is defined by the access control lists defined on the individual workspaces.

Workspace-Centric Data Protection

Data Protection is configured on an individual workspace level. As described in more detail here, a workspace is an isolated environment used by teams or individuals to manage features.

Workspaces are configured with an independent feature configuration, access control lists and secrets. Similarly, materialized data is tied to a specific workspace and never shared between workspaces.

An example set of workspaces to support different teams and individuals:

Untitled%203.png

Secrets

A workspace's feature configuration defines raw data sources (see Data Sources) that provide raw data for feature transformation pipelines. Tecton supports IAM-role protected (e.g. Kinesis, S3), password-protected (e.g. Snowflake) and private-key protected (e.g. Kafka) data sources.

Tecton allows you to manage secrets using the CLI or Web UI. Secrets can be global or scoped to a specific workspace (a workspace secret with the same name as a global secret always takes precedence):

Untitled%204.png

Secrets can be referenced directly within a workspace's feature configuration. See the following sample VirtualDataSource that provides access to a Snowflake table:

from tecton import BatchDataSource, SnowflakeDSConfig, Secret

snowflake_url = Secret("SNOWFLAKE_URL").value
snowflake_user = Secret("SNOWFLAKE_USER").value
snowflake_password = Secret("SNOWFLAKE_PASSWORD").value

transaction_snowflake_ds = SnowflakeDSConfig(
  url=snowflake_url,
  user=snowflake_user,
  password=snowflake_password,
  database="SF_DB",
  schema="SAMPLE_EVENTS",
  warehouse="COMPUTE_WH",
  table="TRANSACTION_EVENTS",
  role="TECTON_ROLE"
)

transactions = BatchDataSource(
    name="transactions",
    batch_ds_config=transaction_snowflake_ds,
)

Note

Using secrets, you're able to use the same feature configuration across different workspaces which point at different data sources. For instance, you could apply the same feature configuration to a "production" workspace as well as to a "staging" workspace. The respective secrets of the workspaces can configure the URL, user and password for separate production and staging data sources.

Running tecton apply will fail if you reference a secret that does not exist.

If you change the IAM role of a workspace, Tecton's compute jobs will assume that IAM role for all materialization jobs. As a result, you have to ensure that the IAM role has adequate IAM permissions to access all data sources that your workspace's feature transformation pipelines depend on.

Access Control Lists

Every workspace is associated with an Access Control List (ACL). The ACL defines serving and config access for individual users, services or groups

ACLs can be configured directly in the Web UI:

Untitled%205.png

The following permissions can be granted to a principal:

  • Read Data gives a principal the right to fetch feature values for training or serving purposes
  • Update Config allows a principal to update the workspace's configuration using the tecton cli (e.g. run tecton apply)
  • Read Config allows a principal to view a workspace's configuration. When this is enabled, the workspace will show up for the principal in the Web UI. Further, the user can run tecton restore to retrieve a workspace's full configuration, including feature transformations
  • Admin allows a principal to delete a workspace and edit its secrets

The following shows a few sample multi-user and multi-team setups that are supported by Tecton's Access Controls:

Example Scenario: CI/CD-gated production rollout

A common setup for production deployments of Tecton allows only a CI/CD pipeline service to update a production workspace's configuration. Individual users work in a shared staging workspace, but only the CI/CD pipeline can apply to production.

Such a setup can be supported with the following ACLs:

Production Workspace ACL

Untitled%206.png

Staging Workspace ACL

Untitled%207.png

Example Scenario: Simple Test Setup

The most simple setup is to have just one workspace and the entire team is able to read data and make changes to the configuration:

Untitled%207.png

Example Scenario: Fully Isolated Multi-Team Setup

Sometimes, you will have many teams working on sensitive features that nobody in the company is allowed to have access to.

Using the ACLs it's easy to have two workspaces, "Team A" and "Team B" that only members of the respective Teams can see and access:

Team A Workspace ACL

Untitled%208.png

Example Scenario: Share Feature Config with another Team

Sometimes, a team may be comfortable sharing its feature transformation code with other teams. However, data access is strictly limited:

Team A Workspace ACL

Untitled%209.png

Example Scenario: Share Feature Data with another Team

In other cases, a team wants to make its feature data accessible to another team, but wants to keep the feature transformation logic private. This is possible with the following ACL configuration, allowing members of Team B to access feature data of Team A:

Team A Workspace ACL

Untitled%2010.png

If a member of Team B wants to define a FeatureService in its workspace that depends on a feature in Team A's workspace, this can be accomplished using a cross-workspace reference in the feature configuration. Sample FeatureService in Team B's feature configuration:

import tecton
from tecton import FeatureService
from feature_repo import transaction_features

# Cross workspace Feature Reference
team_a_workspace = tecton.Workspace("Team_A")
merchant_features = team_a_workspace.get_feature_view("merchant_features")

feature_service = FeatureService(
    name='transaction_feature_service',
    description='Feature service for transaction model',
    features=[
        merchant_features, # Remote Workspace features
        transaction_features # Local features
    ]
)

Note

With such a setup, you have to be aware that any member of Team A is by default able to break the FeatureService by modifying the merchant_features. Running tecton apply will raise a warning and indicate to the user that there are feature dependencies in other workspaces. However, that warning can be ignored and overwritten. It is possible to change Tecton's default behavior and not allow upstream workspaces to apply any configuration changes that would impact dependent downstream workspaces. Please talk to your support engineer to change this default behavior.