Skip to main content

Overview

Legacy Native Users define the upstream credentials used by Resources that have not migrated to new Native Users.
A new version of Native Users is available with Formal Connector version 2.17.0 or later. See the migration guide for configuration steps.
Legacy Native Users use identity links and a default flag. Native Users replace these assignments with a Resource-level CEL expression.

How legacy selection works

A legacy Native User contains an upstream username, secret, and optional default setting. You can assign one Native User directly to a Formal User or Group. Group members inherit the Group’s assignment. A Formal User with a direct assignment cannot join a Group that also has an assignment. Remove the direct assignment first. Clients can request a specific Native User with the @<native_user> connection username suffix.

Create a legacy Native User

  1. Go to Resources and open the Resource.
  2. Select Authentication.
  3. Confirm that the page shows the legacy Native Users interface.
  4. Click Add User.
  5. Select an authentication method.
  6. Enter the upstream username and credential values.
  7. Set Use as Default when this user should handle unmatched sessions.
  8. Click Create.
Verify: Confirm that the user appears in the list. Check that the Default indicator matches your configuration.

Reference a Connector environment variable

Set the secret to ENV:<VARIABLE_NAME>:
The Connector reads DB_READONLY_PASSWORD when it resolves the credential.
Define the environment variable in every Connector deployment serving this Resource.

Use legacy IAM authentication

Legacy Native Users encode cloud authentication in the secret field:For AWS database authentication, the username is the IAM-enabled database user. The Connector identity needs rds-db:connect permission for that user.For GCP Cloud SQL, use the service account email without the .gserviceaccount.com suffix as the username.For Azure Database, use the Microsoft Entra principal provisioned as the database login.

Configure a legacy Snowflake key pair

Create a Password Native User and store the PEM-encoded private key in its secret field. The Connector detects the PEM format and uses SNOWFLAKE_JWT.Snowflake clients must also select the SNOWFLAKE_JWT authenticator.

Configure legacy HTTP credentials

Legacy HTTP Native Users store a JSON document in the secret field.Use this shape for HTTP Basic authentication:
Use this shape for a header API key:
Use this shape for a bearer token:
Native Users replace these documents with typed credential fields.

Configure a legacy SSH certificate

Legacy SSH certificate authentication stores a JSON document in the secret:
Native Users provide separate private key and certificate fields.

Assign a legacy Native User

  1. Select the Native User from the Authentication tab.
  2. Find Linked Identities.
  3. Click Add beside Formal Users or Formal Groups.
  4. Select the identities and click Add.
The assignment overrides the Resource’s default Native User.Verify: Connect as an assigned identity and confirm the expected upstream username appears in session logs.

Request a legacy Native User

Append @<native_user> to the Formal username:
For example:
For legacy users, the requested value is the configured upstream username.

Use legacy values in policies

input.native_user contains the upstream username. The input.native_user_assignment value can be: This policy blocks a privileged legacy username:
See policy evaluation for more policy examples.

Migrate to new Native Users

A new version of Native Users is available with typed credentials, hooks, and default Native User selection. This guide explains how to configure it.
New Native Users require Connector version 2.17.0 or later. Upgrade every Connector serving this Resource before opting in.
1

Preview and create new Native Users

Click the Preview button to add new Native Users. Previewed changes are saved, but Connectors continue using legacy credentials. Formal does not copy legacy secrets into the replacements.Create one replacement for each legacy Native User:For an ENV:<NAME> secret, choose Environment Variable and enter <NAME>. Do not include the ENV: prefix.
New Native Users use labels for explicit Native User selection, rather than usernames. If you rely on a specific username for selection, match the new label to the legacy username.
2

Replace identity links with a default selection

Legacy identity links do not migrate automatically. Recreate their behavior in Default Native User with CEL.Place specific User rules before Group rules, then return the legacy default:
You can retrieve native user IDs by clicking the respective row in the Native Users table.See select a default Native User for supported identity fields and more examples.
3

Review policies

New Native Users expose their label through input.native_user. Preserve legacy usernames as labels to keep these comparisons stable.Update policies that inspect input.native_user_assignment. New Native Users return cel or user-requested instead of legacy assignment values.
4

Activate and verify

Click Opt in, enter confirm, and complete these checks:
  1. Connect without a label and confirm the expected default selection.
  2. Connect as an identity with a User or Group rule.
  3. Connect with @<label> if clients request Native Users explicitly.
  4. Confirm the upstream identity and policy result in session logs.
Legacy Native Users remain stored after activation, if a rollback is needed.
5

Roll back if needed

To roll back, click Roll back and enter confirm. The Resource resumes using its stored legacy configuration.New Native Users and their selection remain stored. Fix the configuration, then opt in again.