Which approach should I use?
Choose In-Platform Migration Tooling if you want to:- Migrate specific secrets, not everything at once
- Import secrets into existing Infisical projects
- Translate Vault policies to Infisical access controls
- Import Kubernetes authentication configurations
- Have more control over the migration process
- Migrate all secrets from Vault in one go
- Automatically create new Infisical projects from your Vault structure
- Perform a one-time migration when moving entirely from Vault to Infisical
In-Platform Migration Tooling
This migration approach lets you set up a connection to your Vault instance once, then import specific resources as needed throughout Infisical.Organization Admin Access Required: All in-platform migration features
(importing secrets, Kubernetes configurations, and policies from Vault) are
only accessible to organization admins.
Step 1: Set Up Your Vault Connection
1
Create a Vault policy
In your Vault instance, create a policy that allows Infisical to read your secrets, policies, and authentication configurations. This policy grants read-only access and doesn’t allow Infisical to modify anything in Vault.
Save this policy in Vault with the name
View the complete policy
View the complete policy
infisical-in-platform-migration.2
Create an App Connection in Infisical
In Infisical, navigate to Organization Settings > App Connections and create a new HashiCorp Vault connection.Follow the HashiCorp Vault App Connection documentation for detailed setup instructions. When configuring authentication (Token or AppRole), make sure it uses the
infisical-in-platform-migration policy you created.3
Add Vault Namespaces for Migration
Navigate to Organization Settings > External Migrations in Infisical.Under the “In-Platform Migration Tooling” section for HashiCorp Vault, click ”+ Add Namespace”.
Configure your namespace:
Configure your namespace:
- Namespace: Enter your Vault namespace path (e.g.,
admin/namespace1). If you intend to use the root namespace, set the namespace value to “root”. - Connection: Select the App Connection you created in the previous step.
You can add multiple namespaces with different connections if you have multiple Vault instances or namespaces to migrate from.
Step 2: Import Your Resources
Once your Vault connection is configured, you’ll see import options throughout Infisical wherever relevant. Here’s what you can import:Import Secrets into a Project
You can import secrets from Vault directly into a specific environment and secret path:- Navigate to your project and select a specific environment (e.g., Development, Production)
- In the secrets view, click the dropdown icon (caret) next to the ”+ Add Secret” button
-
Select “Add from HashiCorp Vault”
- Choose your Vault namespace and the secret path you want to import
- Click “Import Secrets”
Import Kubernetes Authentication Configurations
When setting up Kubernetes authentication for a machine identity, you can import the configuration from Vault:- Navigate to Access Control > Machine Identities and select an identity
- Click “Add Authentication Method” and choose Kubernetes Auth
-
In the configuration modal, click “Load from Vault”
- Select your Vault namespace and the Kubernetes role
-
Click “Load”
Sensitive values like service account JWTs cannot be retrieved from Vault and
must be manually provided in the form after importing the configuration.
Import Kubernetes Dynamic Secret Configurations
When creating a Kubernetes dynamic secret, you can import the configuration from a Vault Kubernetes secrets engine role:- Navigate to your project and select an environment
- Click ”+ Add Secret” dropdown and choose “Dynamic Secret”
- Select Kubernetes as the provider
-
Click “Load from Vault” at the top of the form
- Select your Vault namespace, Kubernetes secrets engine mount, and role
- Click “Load Configuration”
- Cluster URL and CA certificate
- Credential type (Static or Dynamic)
- Service account name or Kubernetes role settings
- Allowed namespaces
- Token TTL values
- Token audiences
Sensitive values like cluster tokens cannot be retrieved from Vault and must
be manually provided in the form after loading the configuration.
Import and Translate Access Control Policies
When configuring project role-based access control, you can import Vault HCL policies and automatically translate them to Infisical permissions.Policy translation is best-effort and provides a starting point based on your
Vault configuration. The translated permissions should be reviewed and
adjusted as needed since Vault and Infisical have different access control
models. Infisical will analyze path patterns and capabilities to suggest
equivalent permissions.
- Navigate to your project, then go to Access Control > Roles and create or edit a role
-
In the policy configuration, click “Add from HashiCorp Vault”
- Select your Vault namespace
-
Either choose an existing policy from the dropdown or paste your own HCL policy
- Review the automatically translated Infisical permissions
- Make any adjustments and save
How policy translation works:
- Vault path patterns are analyzed to identify KV secret engines and environments
- Vault capabilities (
read,list,create, etc.) are mapped to Infisical permissions - Wildcards in paths are converted to glob patterns
- Secret paths are preserved for granular access control
Bulk Data Import
This migration approach imports all secrets from your Vault instance in one operation and automatically creates new Infisical projects based on your Vault structure.Understanding Project Mapping
Before starting the bulk import, you need to decide how your Vault structure will map to Infisical projects:Namespace Mapping (One Project Per Namespace)
Namespace Mapping (One Project Per Namespace)
Each Vault namespace becomes a single Infisical project, with each KV secret engine becoming an environment within that project.Example: If you have a namespace with 3 KV secret engines (
dev-secrets, staging-secrets, prod-secrets):- Creates: 1 Infisical project
- Environments: 3 (
dev-secrets,staging-secrets,prod-secrets)
Key Vault Mapping (One Project Per KV Engine)
Key Vault Mapping (One Project Per KV Engine)
Each KV secret engine becomes its own Infisical project with a single
Production environment.Example: If you have 3 KV secret engines (dev-secrets, staging-secrets, prod-secrets):- Creates: 3 Infisical projects (
dev-secrets,staging-secrets,prod-secrets) - Each project has: 1 environment (
Production)
How to Perform a Bulk Import
1
Create a Vault policy for bulk import
In your Vault instance, create a policy that allows Infisical to read all secrets and metadata. This policy grants read-only access.
Save this policy in Vault with the name
View the bulk import policy
View the bulk import policy
infisical-bulk-migration.2
Generate an access token
Use the Vault CLI to generate an access token:Copy the
token value from the output - you’ll need it in the next step.3
Start the import in Infisical
In Infisical, navigate to Organization Settings > External Migrations.
Under the “Bulk Data Import” section, click ”+ Import”.
Under the “Bulk Data Import” section, click ”+ Import”.4
Select Vault as the source
Select HashiCorp Vault as the migration source and click Next.

5
Configure and start the migration
Fill in your Vault connection details:

- Vault URL: Your Vault instance URL (e.g.,
https://vault.example.com) - Vault Namespace: Optional - only needed if using Vault Enterprise namespaces
- Vault Access Token: The token you generated in step 2
- Project Mapping: Choose how to structure your Infisical projects (see Understanding Project Mapping)
The import runs in the background and may take several minutes. You’ll receive an email when it completes.