功能 6:云密钥管理器集成

概述

Semaphore 目前将所有凭据存储在自己的数据库中。使用云平台的组织需要一种方式,在运行时直接从其云提供商的密钥管理服务中获取密钥,从而避免凭据重复并利用现有的轮换策略。此功能添加了与 AWS Secrets Manager 和 Azure Key Vault 的原生集成,作为 Enterprise 专属功能。

动机

详细规范

Enterprise

6.1 AWS Secrets Manager 集成

**目标:**在运行时从 AWS Secrets Manager 获取密钥,允许团队利用其现有的 AWS 密钥基础设施,而无需在 Semaphore 的数据库中复制凭据。

要求:

{
  "name": "Production AWS",
  "type": "aws_secrets_manager",
  "region": "us-east-1",
  "auth_method": "iam_role",
  "role_arn": "arn:aws:iam::123456789:role/semaphore-secrets",
  "external_id": "optional-external-id"
}
{
  "type": "external",
  "backend": "aws_secrets_manager",
  "secret_name": "production/db_password",
  "field": "password",
  "aws_config_id": 1
}

相关 issues:#2248

6.2 Azure Key Vault 集成

**目标:**在运行时从 Azure Key Vault 获取密钥,使使用 Azure 的组织能够集中管理和轮换凭据,而无需将其存储在 Semaphore 中。

要求:

{
  "name": "Production Azure",
  "type": "azure_key_vault",
  "vault_url": "https://my-vault.vault.azure.net",
  "auth_method": "managed_identity",
  "tenant_id": "...",
  "client_id": "..."
}
{
  "type": "external",
  "backend": "azure_key_vault",
  "secret_name": "db-password",
  "version": "latest",
  "azure_config_id": 1
}

相关 issues:#2248#3170

6.3 统一外部密钥引用

**目标:**提供一种通用的密钥库条目类型,指向任何受支持的云提供商中的密钥。

要求:

6.4 密钥缓存

**目标:**通过在内存中缓存已解析的密钥来减少对云提供商的 API 调用。

要求:

数据库架构变更

新增表:

修改的表:

API Endpoints

配置

新增配置选项:

Key Env Var Default 描述
secret_cache_ttl SEMAPHORE_SECRET_CACHE_TTL 5m 已解析外部密钥的默认内存缓存 TTL
secret_resolve_timeout SEMAPHORE_SECRET_RESOLVE_TIMEOUT 10s 解析密钥时等待云提供商 API 响应的最大时间

You might also like