シークレット管理
シークレットとは、APIゲートウェイの操作に必要な機密情報です。シークレットはプラグインで使用される可能性のあるコアKong Gateway構成の一部、またはゲートウェイによって処理されるAPIに関連する構成の一部である可能性があります。
Kong Gatewayで使用される最も一般的なシークレットのタイプには以下のものが含まれます。
- PostgreSQL および Redis で使用するデータストアのユーザー名とパスワード
- プライベートX.509証明書
- API キー
- 一般的に認証、ハッシュ化、署名、暗号化に使用される機密性の高いプラグイン構成フィールド。
Kong Gateway では、特定の値を vault に保存します。
機密情報をシークレットとして保存することで、kong.conf
、
宣言型構成ファイル、ログ、または Kong Manager UI など、プラットフォーム全体でプレーンテキストで
表示されないようにします。代わりに、
vault
リファレンスを使用して各シークレットを参照することができます。
たとえば、次のリファレンスは、環境変数MY_SECRET_POSTGRES_PASSWORD
を解決します。
{vault://env/my-secret-postgres-password}
上記の方法でシークレット管理が一元化されます。
参照可能な値
シークレットリファレンスは文字列値を指します。他のデータタイプは現在サポートされていません。
Vaultバックエンドでは、関連するシークレットをオブジェクト内に複数保存することができますが、参照が指すのは常に文字列値に変換されるキーです。 たとえば、次の参照があるとします。
{vault://hcv/pg/username}
HashiCorp Vault内のpg
と呼ばれるシークレットオブジェクトを指し、次の値を返す可能性があります。
{
"username": "john",
"password": "doe"
}
Kongはペイロードを受信し、{vault://hcv/pg/username}
の秘密参照の"john"
の
"username"
値を抽出します。
識別子「pg/username
」を単一の値とするシークレットがある場合、参照に/
をサフィックスとして追加し、Vault APIに適切に送信されるようにします。
{vault://hcv/pg/username/}
シークレットとして保存できるもの
ほとんどのKongの構成の値は、pg_user
やpg_password
などのシークレットとして保存できます。
デフォルトの証明書をVaultに保存することもできます。例:
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
Kongライセンスは通常
KONG_LICENSE_DATA
環境変数で構成され、シークレットとして保存可能です。
Kong Admin API の証明書オブジェクトはシークレットとして保存できます。
参照可能なプラグインフィールド
一部のプラグインには、Vaultバックエンドにシークレットとして保存できる
フィールドがあります。これらのフィールドはreferenceable
とラベル付けされています。
以下のプラグインは特定のフィールドに対して Vault リファレンスをサポートしています。 各フィールドの詳細については、各プラグインのドキュメントを参照してください。
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.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 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
|
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
|
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
|
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 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.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 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
|
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
andvault_credentials
entities. For these entities, thevaults.vault_token
andvault_credentials.secret_token
parameters are referenceable.
サポートされているバックエンド
Kong Gatewayは以下の保管庫バックエンドをサポートしています:
- 環境変数
- AWS Secrets Manager
- GCP Secret Manager
- Azure Key Vault
- HashiCorp Vault
各オプションの詳細については、バックエンドの概要を参照してください。
使用開始
シークレット管理の詳細については、次のトピックを参照してください。