Skip to content
Kong Logo | Kong Docs Logo
  • Docs
    • Explore the API Specs
      View all API Specs View all API Specs View all API Specs arrow image
    • Documentation
      API Specs
      Kong Gateway
      Lightweight, fast, and flexible cloud-native API gateway
      Kong Konnect
      Single platform for SaaS end-to-end connectivity
      Kong AI Gateway
      Multi-LLM AI Gateway for GenAI infrastructure
      Kong Mesh
      Enterprise service mesh based on Kuma and Envoy
      decK
      Helps manage Kong’s configuration in a declarative fashion
      Kong Ingress Controller
      Works inside a Kubernetes cluster and configures Kong to proxy traffic
      Kong Gateway Operator
      Manage your Kong deployments on Kubernetes using YAML Manifests
      Insomnia
      Collaborative API development platform
  • Plugin Hub
    • Explore the Plugin Hub
      View all plugins View all plugins View all plugins arrow image
    • Functionality View all View all arrow image
      View all plugins
      AI's icon
      AI
      Govern, secure, and control AI traffic with multi-LLM AI Gateway plugins
      Authentication's icon
      Authentication
      Protect your services with an authentication layer
      Security's icon
      Security
      Protect your services with additional security layer
      Traffic Control's icon
      Traffic Control
      Manage, throttle and restrict inbound and outbound API traffic
      Serverless's icon
      Serverless
      Invoke serverless functions in combination with other plugins
      Analytics & Monitoring's icon
      Analytics & Monitoring
      Visualize, inspect and monitor APIs and microservices traffic
      Transformations's icon
      Transformations
      Transform request and responses on the fly on Kong
      Logging's icon
      Logging
      Log request and response data using the best transport for your infrastructure
  • Support
  • Community
  • Kong Academy
Get a Demo Start Free Trial
Kong Gateway
3.10.x (latest)
  • Home icon
  • Kong Gateway
  • Kong Enterprise
  • Secrets Management
  • Secrets Management
github-edit-pageEdit this page
report-issueReport an issue
  • Kong Gateway
  • Kong Konnect
  • Kong Mesh
  • Kong AI Gateway
  • Plugin Hub
  • decK
  • Kong Ingress Controller
  • Kong Gateway Operator
  • Insomnia
  • Kuma

  • Docs contribution guidelines
  • 3.10.x (latest)
  • 3.9.x
  • 3.8.x
  • 3.7.x
  • 3.6.x
  • 3.5.x
  • 3.4.x (LTS)
  • 3.3.x
  • 2.8.x (LTS)
  • Archive (3.0.x and pre-2.8.x)
  • Introduction
    • Overview of Kong Gateway
    • Support
      • Version Support Policy
      • Third Party Dependencies
      • Browser Support
      • Vulnerability Patching Process
      • Software Bill of Materials
    • Stability
    • Release Notes
    • Breaking Changes
      • Kong Gateway 3.10.x
      • Kong Gateway 3.9.x
      • Kong Gateway 3.8.x
      • Kong Gateway 3.7.x
      • Kong Gateway 3.6.x
      • Kong Gateway 3.5.x
      • Kong Gateway 3.4.x
      • Kong Gateway 3.3.x
      • Kong Gateway 3.2.x
      • Kong Gateway 3.1.x
      • Kong Gateway 3.0.x
      • Kong Gateway 2.8.x or earlier
    • Key Concepts
      • Services
      • Routes
      • Consumers
      • Upstreams
      • Plugins
      • Consumer Groups
    • How Kong Works
      • Routing Traffic
      • Load Balancing
      • Health Checks and Circuit Breakers
    • Glossary
  • Get Started with Kong
    • Get Kong
    • Services and Routes
    • Rate Limiting
    • Proxy Caching
    • Key Authentication
    • Load-Balancing
  • Install Kong
    • Overview
    • Kubernetes
      • Overview
      • Install Kong Gateway
      • Configure the Admin API
      • Install Kong Manager
    • Docker
      • Using docker run
      • Build your own Docker images
    • Linux
      • Amazon Linux
      • Debian
      • Red Hat
      • Ubuntu
    • Post-installation
      • Set up a data store
      • Apply Enterprise license
      • Enable Kong Manager
  • Kong in Production
    • Deployment Topologies
      • Overview
      • Kubernetes Topologies
      • Hybrid Mode
        • Overview
        • Deploy Kong Gateway in Hybrid mode
        • Incremental Configuration Sync
      • DB-less Deployment
      • Traditional
    • Running Kong
      • Running Kong as a non-root user
      • Securing the Admin API
      • Using systemd
    • Access Control
      • Start Kong Gateway Securely
      • Programatically Creating Admins
      • Enabling RBAC
      • Workspaces
    • Licenses
      • Overview
      • Download your License
      • Deploy Enterprise License
      • Using the License API
      • Monitor Licenses Usage
    • Networking
      • Default Ports
      • DNS Considerations
      • Network and Firewall
      • CP/DP Communication through a Forward Proxy
      • PostgreSQL TLS
        • Configure PostgreSQL TLS
        • Troubleshooting PostgreSQL TLS
    • Kong Configuration File
    • Environment Variables
    • Serving a Website and APIs from Kong
    • Secrets Management
      • Overview
      • Getting Started
      • Secrets Rotation
      • Advanced Usage
      • Backends
        • Overview
        • Environment Variables
        • AWS Secrets Manager
        • Azure Key Vaults
        • Google Cloud Secret Manager
        • HashiCorp Vault
      • How-To
        • Securing the Database with AWS Secrets Manager
      • Reference Format
    • Keyring and Data Encryption
    • Monitoring
      • Overview
      • Prometheus
      • StatsD
      • Datadog
      • Health Check Probes
      • Expose and graph AI Metrics
    • Tracing
      • Overview
      • Writing a Custom Trace Exporter
      • Tracing API Reference
    • Resource Sizing Guidelines
    • Blue-Green Deployments
    • Canary Deployments
    • Clustering Reference
    • Performance
      • Performance Testing Benchmarks
      • Establish a Performance Benchmark
      • Improve performance with Brotli compression
    • Logging and Debugging
      • Log Reference
      • Dynamic log level updates
      • Customize Gateway Logs
      • Debug Requests
      • AI Gateway Analytics
      • Audit Logging
    • Configure a gRPC service
    • Use the Expressions Router
    • Outage Handling
      • Configure Data Plane Resilience
      • About Control Plane Outage Management
    • Upgrade and Migration
      • Upgrading Kong Gateway 3.x.x
      • Backup and Restore
      • Upgrade Strategies
        • Dual-Cluster Upgrade
        • In-Place Upgrade
        • Blue-Green Upgrade
        • Rolling Upgrade
      • Upgrade from 2.8 LTS to 3.4 LTS
      • Migrate from OSS to Enterprise
      • Migration Guidelines Cassandra to PostgreSQL
      • Migrate to the new DNS client
      • Breaking Changes
    • FIPS 140-2
      • Overview
      • Install the FIPS Compliant Package
    • Authenticate your Kong Gateway Amazon RDS database with AWS IAM
    • Verify Signatures for Signed Kong Images
    • Verify Build Provenance for Signed Kong Images
  • Kong AI Gateway
    • Overview
    • Get started with AI Gateway
    • LLM Provider Integration Guides
      • OpenAI
      • Cohere
      • Azure
      • Anthropic
      • Mistral
      • Llama2
      • Vertex/Gemini
      • Amazon Bedrock
    • LLM Library Integration Guides
      • LangChain
    • AI Gateway Analytics
    • Expose and graph AI Metrics
    • AI Gateway Load Balancing
    • AI Gateway plugins
  • Kong Manager
    • Overview
    • Enable Kong Manager
    • Get Started with Kong Manager
      • Services and Routes
      • Rate Limiting
      • Proxy Caching
      • Authentication with Consumers
      • Load Balancing
    • Authentication and Authorization
      • Overview
      • Create a Super Admin
      • Workspaces and Teams
      • Reset Passwords and RBAC Tokens
      • Basic Auth
      • LDAP
        • Configure LDAP
        • LDAP Service Directory Mapping
      • OIDC
        • Configure OIDC
        • OIDC Authenticated Group Mapping
        • Migrate from previous configurations
      • Sessions
      • RBAC
        • Overview
        • Enable RBAC
        • Add a Role and Permissions
        • Create a User
        • Create an Admin
    • Networking Configuration
    • Workspaces
    • Create Consumer Groups
    • Sending Email
    • Troubleshoot
    • Strengthen Security
  • Develop Custom Plugins
    • Overview
    • Getting Started
      • Introduction
      • Set up the Plugin Project
      • Add Plugin Testing
      • Add Plugin Configuration
      • Consume External Services
      • Deploy Plugins
    • File Structure
    • Implementing Custom Logic
    • Plugin Configuration
    • Accessing the Data Store
    • Storing Custom Entities
    • Caching Custom Entities
    • Extending the Admin API
    • Writing Tests
    • Installation and Distribution
    • Proxy-Wasm Filters
      • Create a Proxy-Wasm Filter
      • Proxy-Wasm Filter Configuration
    • Plugin Development Kit
      • Overview
      • kong.client
      • kong.client.tls
      • kong.cluster
      • kong.ctx
      • kong.ip
      • kong.jwe
      • kong.log
      • kong.nginx
      • kong.node
      • kong.plugin
      • kong.request
      • kong.response
      • kong.router
      • kong.service
      • kong.service.request
      • kong.service.response
      • kong.table
      • kong.telemetry.log
      • kong.tracing
      • kong.vault
      • kong.websocket.client
      • kong.websocket.upstream
    • Plugins in Other Languages
      • Go
      • Javascript
      • Python
      • Running Plugins in Containers
      • External Plugin Performance
  • Kong Plugins
    • Overview
    • Authentication Reference
    • Allow Multiple Authentication Plugins
    • Plugin Queuing
      • Overview
      • Plugin Queuing Reference
    • Dynamic Plugin Ordering
      • Overview
      • Get Started with Dynamic Plugin Ordering
    • Redis Partials
    • Datakit
      • Overview
      • Get Started with Datakit
      • Datakit Configuration Reference
      • Datakit Examples Reference
  • Admin API
    • Overview
    • Declarative Configuration
    • Enterprise API
      • Information Routes
      • Health Routes
      • Tags
      • Debug Routes
      • Services
      • Routes
      • Consumers
      • Plugins
      • Certificates
      • CA Certificates
      • SNIs
      • Upstreams
      • Targets
      • Vaults
      • Keys
      • Filter Chains
      • Licenses
      • Workspaces
      • RBAC
      • Admins
      • Consumer Groups
      • Event Hooks
      • Keyring and Data Encryption
      • Audit Logs
      • Status API
  • Reference
    • kong.conf
    • Injecting Nginx Directives
    • CLI
    • Key Management
    • The Expressions Language
      • Overview
      • Language References
      • Performance Optimizations
    • Rate Limiting Library
    • WebAssembly
    • Event Hooks
    • FAQ
On this pageOn this page
  • Referenceable values
  • What can be stored as a secret?
    • Referenceable plugin fields
  • Supported backends
  • Get started

Secrets Management

A secret is any sensitive piece of information required for API gateway operations. Secrets may be part of the core Kong Gateway configuration, they may be used in plugins, or they might be part of configuration associated with APIs serviced by the gateway.

Some of the most common types of secrets used by Kong Gateway include:

  • Data store usernames and passwords, used with PostgreSQL and Redis
  • Private X.509 certificates
  • API keys
  • Sensitive plugin configuration fields, generally used for authentication, hashing, signing, or encryption.

Kong Gateway lets you store certain values in a vault. By storing sensitive values as secrets, you ensure that they are not visible in plaintext throughout the platform, in places such as kong.conf, in declarative configuration files, logs, or in the Kong Manager UI. Instead, you can reference each secret with a vault reference.

For example, the following reference resolves to the environment variable MY_SECRET_POSTGRES_PASSWORD:

{vault://env/my-secret-postgres-password}

In this way, secrets management becomes centralized.

Referenceable values

A secret reference points to a string value. No other data types are currently supported.

The vault backend may store multiple related secrets inside an object, but the reference should always point to a key that resolves to a string value. For example, the following reference:

{vault://hcv/pg/username}

Would point to a secret object called pg inside a HashiCorp Vault, which may return the following value:

{
  "username": "john",
  "password": "doe"
}

Kong receives the payload and extracts the "username" value of "john" for the secret reference of {vault://hcv/pg/username}.

If you have a single value secret with identifier pg/username, you need to add / as a suffix to a reference so that it is properly sent to the vault API:

{vault://hcv/pg/username/}

What can be stored as a secret?

Most of the Kong configuration values can be stored as a secret, such as pg_user and pg_password.

You can even store the default certificates in vaults, e.g.:

SSL_CERT=$(cat cluster.crt) \
SSL_CERT_KEY=$(cat cluster.key) \
KONG_SSL_CERT={vault://env/ssl-cert} \
KONG_SSL_CERT_KEY={vault://env/ssl-cert-key} \
kong prepare

The Kong license, usually configured with a KONG_LICENSE_DATA environment variable, can be stored as a secret.

The Kong Admin API certificate object can be stored as a secret.

Referenceable plugin fields

Some plugins have fields that can be stored as secrets in a vault backend. These fields are labelled as referenceable.

The following plugins support vault references for specific fields. See each plugin’s documentation for more information on each field:

Plugin Referenceable fields
ACME config.account_email config.eab_kid config.eab_hmac_key config.storage_config.redis.username config.storage_config.redis.password config.storage_config.consul.token config.storage_config.vault.token
AI Azure Content Safety config.content_safety_url config.content_safety_key
AI Proxy config.auth.header_name config.auth.header_value config.auth.param_name config.auth.param_value config.auth.azure_client_id config.auth.azure_client_secret config.auth.azure_tenant_id config.auth.gcp_service_account_json config.auth.aws_access_key_id config.auth.aws_secret_access_key
AI Proxy Advanced config.embeddings.auth.header_name config.embeddings.auth.header_value config.embeddings.auth.param_name config.embeddings.auth.param_value config.embeddings.auth.azure_client_id config.embeddings.auth.azure_client_secret config.embeddings.auth.azure_tenant_id config.embeddings.auth.gcp_service_account_json config.embeddings.auth.aws_access_key_id config.embeddings.auth.aws_secret_access_key config.vectordb.redis.username config.vectordb.redis.password config.vectordb.redis.sentinel_username config.vectordb.redis.sentinel_password config.vectordb.pgvector.user config.vectordb.pgvector.password config.targets.auth.header_name config.targets.auth.header_value config.targets.auth.param_name config.targets.auth.param_value config.targets.auth.azure_client_id config.targets.auth.azure_client_secret config.targets.auth.azure_tenant_id config.targets.auth.gcp_service_account_json config.targets.auth.aws_access_key_id config.targets.auth.aws_secret_access_key
AI RAG Injector config.embeddings.auth.header_name config.embeddings.auth.header_value config.embeddings.auth.param_name config.embeddings.auth.param_value config.embeddings.auth.azure_client_id config.embeddings.auth.azure_client_secret config.embeddings.auth.azure_tenant_id config.embeddings.auth.gcp_service_account_json config.embeddings.auth.aws_access_key_id config.embeddings.auth.aws_secret_access_key config.vectordb.redis.username config.vectordb.redis.password config.vectordb.redis.sentinel_username config.vectordb.redis.sentinel_password config.vectordb.pgvector.user config.vectordb.pgvector.password
AI Rate Limiting Advanced config.redis.username config.redis.password config.redis.sentinel_username config.redis.sentinel_password
AI Request Transformer config.llm.auth.header_name config.llm.auth.header_value config.llm.auth.param_name config.llm.auth.param_value config.llm.auth.azure_client_id config.llm.auth.azure_client_secret config.llm.auth.azure_tenant_id config.llm.auth.gcp_service_account_json config.llm.auth.aws_access_key_id config.llm.auth.aws_secret_access_key
AI Response Transformer config.llm.auth.header_name config.llm.auth.header_value config.llm.auth.param_name config.llm.auth.param_value config.llm.auth.azure_client_id config.llm.auth.azure_client_secret config.llm.auth.azure_tenant_id config.llm.auth.gcp_service_account_json config.llm.auth.aws_access_key_id config.llm.auth.aws_secret_access_key
AI Semantic Cache config.embeddings.auth.header_name config.embeddings.auth.header_value config.embeddings.auth.param_name config.embeddings.auth.param_value config.embeddings.auth.azure_client_id config.embeddings.auth.azure_client_secret config.embeddings.auth.azure_tenant_id config.embeddings.auth.gcp_service_account_json config.embeddings.auth.aws_access_key_id config.embeddings.auth.aws_secret_access_key config.vectordb.redis.username config.vectordb.redis.password config.vectordb.redis.sentinel_username config.vectordb.redis.sentinel_password config.vectordb.pgvector.user config.vectordb.pgvector.password
AI Semantic Prompt Guard config.embeddings.auth.header_name config.embeddings.auth.header_value config.embeddings.auth.param_name config.embeddings.auth.param_value config.embeddings.auth.azure_client_id config.embeddings.auth.azure_client_secret config.embeddings.auth.azure_tenant_id config.embeddings.auth.gcp_service_account_json config.embeddings.auth.aws_access_key_id config.embeddings.auth.aws_secret_access_key config.vectordb.redis.username config.vectordb.redis.password config.vectordb.redis.sentinel_username config.vectordb.redis.sentinel_password config.vectordb.pgvector.user config.vectordb.pgvector.password
AWS Lambda config.aws_key config.aws_secret config.aws_assume_role_arn
Azure Functions config.apikey config.clientid
Confluent config.cluster_api_key config.cluster_api_secret config.confluent_cloud_api_key config.confluent_cloud_api_secret
Confluent Consume config.cluster_api_key config.cluster_api_secret config.confluent_cloud_api_key config.confluent_cloud_api_secret
Datadog config.host
Forward Proxy Advanced config.auth_username config.auth_password
GraphQL Proxy Caching Advanced config.redis.username config.redis.password config.redis.sentinel_username config.redis.sentinel_password
GraphQL Rate Limiting Advanced config.redis.username config.redis.password config.redis.sentinel_username config.redis.sentinel_password
HTTP Log config.http_endpoint config.headers
Kong JWT Signer config.access_token_keyset_client_username config.access_token_keyset_client_password config.access_token_jwks_uri_client_username config.access_token_jwks_uri_client_password config.channel_token_keyset_client_username config.channel_token_keyset_client_password config.channel_token_jwks_uri_client_username config.channel_token_jwks_uri_client_password
Kafka Consume config.authentication.user config.authentication.password
Kafka Log config.authentication.user config.authentication.password
Kafka Upstream config.authentication.user config.authentication.password
LDAP Authentication Advanced config.ldap_password config.bind_dn
Loggly config.key
OAuth 2.0 Introspection config.authorization_value
OpenID Connect config.client_id config.client_secret config.client_jwk.k config.client_jwk.d config.client_jwk.p config.client_jwk.q config.client_jwk.dp config.client_jwk.dq config.client_jwk.qi config.client_jwk.oth config.client_jwk.r config.client_jwk.t config.login_redirect_uri config.logout_redirect_uri config.scopes config.introspection_headers_values config.session_secret config.redis.username config.redis.password config.redis.sentinel_username config.redis.sentinel_password config.http_proxy_authorization config.https_proxy_authorization config.cluster_cache_redis.username config.cluster_cache_redis.password config.cluster_cache_redis.sentinel_username config.cluster_cache_redis.sentinel_password
OpenTelemetry config.traces_endpoint config.logs_endpoint config.headers
Proxy Caching Advanced config.redis.username config.redis.password config.redis.sentinel_username config.redis.sentinel_password
Rate Limiting config.redis.username config.redis.password
Rate Limiting Advanced config.redis.username config.redis.password config.redis.sentinel_username config.redis.sentinel_password
Request Callout config.callouts.request.http_opts.proxy.auth_username config.callouts.request.http_opts.proxy.auth_password config.cache.redis.username config.cache.redis.password config.cache.redis.sentinel_username config.cache.redis.sentinel_password
Request Transformer Advanced config.rename.body config.rename.headers config.rename.querystring config.replace.body config.replace.headers config.replace.querystring config.add.body config.add.headers config.add.querystring config.append.body config.append.headers config.append.querystring
Response Rate Limiting config.redis.username config.redis.password
SAML config.idp_certificate config.response_encryption_key config.request_signing_key config.request_signing_certificate config.session_secret config.redis.username config.redis.password config.redis.sentinel_username config.redis.sentinel_password
Service Protection config.redis.username config.redis.password config.redis.sentinel_username config.redis.sentinel_password
Session config.secret
Standard Webhooks config.secret_v1
Upstream OAuth config.oauth.token_headers config.oauth.token_post_args config.oauth.client_id config.oauth.client_secret config.oauth.username config.oauth.password config.cache.redis.username config.cache.redis.password config.cache.redis.sentinel_username config.cache.redis.sentinel_password

Note: The Vault plugin interacts with the vaults and vault_credentials entities. For these entities, the vaults.vault_token and vault_credentials.secret_token parameters are referenceable.

Supported backends

Kong Gateway supports the following vault backends:

  • Environment variables
  • AWS Secrets Manager
  • GCP Secret Manager
  • Azure Key Vaults
  • HashiCorp Vault

See the backends overview for more information about each option.

Get started

For further information on secrets management, see the following topics:

  • Get started with secrets management
  • Secrets rotation
  • Backends overview
  • Reference format
  • Advanced usage
Thank you for your feedback.
Was this page useful?
Too much on your plate? close cta icon
More features, less infrastructure with Kong Konnect. 1M requests per month for free.
Try it for Free
  • Kong
    Powering the API world

    Increase developer productivity, security, and performance at scale with the unified platform for API management, service mesh, and ingress controller.

    • Products
      • Kong Konnect
      • Kong Gateway Enterprise
      • Kong Gateway
      • Kong Mesh
      • Kong Ingress Controller
      • Kong Insomnia
      • Product Updates
      • Get Started
    • Documentation
      • Kong Konnect Docs
      • Kong Gateway Docs
      • Kong Mesh Docs
      • Kong Insomnia Docs
      • Kong Konnect Plugin Hub
    • Open Source
      • Kong Gateway
      • Kuma
      • Insomnia
      • Kong Community
    • Company
      • About Kong
      • Customers
      • Careers
      • Press
      • Events
      • Contact
  • Terms• Privacy• Trust and Compliance
© Kong Inc. 2025