Semaphore는 현재 모든 자격 증명을 자체 데이터베이스에 저장합니다. 클라우드 플랫폼을 사용하는 조직은 런타임에 클라우드 공급자의 시크릿 관리 서비스에서 시크릿을 직접 가져오는 방법이 필요합니다. 이를 통해 자격 증명 중복을 방지하고 기존 교체 정책을 활용할 수 있습니다. 이 기능은 AWS Secrets Manager 및 Azure Key Vault와의 네이티브 통합을 Enterprise 전용 기능으로 추가합니다.
목표: AWS Secrets Manager에서 런타임에 시크릿을 가져와 팀이 Semaphore의 데이터베이스에 자격 증명을 복제하지 않고도 기존 AWS 시크릿 인프라를 활용할 수 있도록 합니다.
요구 사항:
aws_secrets_manager.field 선택자를 사용한 JSON 구조 시크릿 지원으로 개별 값을 추출할 수 있습니다 (예: {"username": "admin", "password": "..."} → password 추출).{
"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
}
관련 이슈: #2248
목표: Azure Key Vault에서 런타임에 시크릿을 가져와 Azure를 사용하는 조직이 Semaphore에 저장하지 않고도 자격 증명을 중앙에서 관리하고 교체할 수 있도록 합니다.
요구 사항:
azure_key_vault.{
"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
}
목표: 지원되는 모든 클라우드 공급자의 시크릿을 가리키는 공통 키 스토어 항목 타입을 제공합니다.
요구 사항:
목표: 해석된 시크릿을 메모리에 캐싱하여 클라우드 공급자에 대한 API 호출을 줄입니다.
요구 사항:
cache_ttl 필드 (예: "cache_ttl": "5m").새로운 테이블:
secret_backend — 클라우드 공급자 구성을 저장 (project_id, type, name, config JSON, created_at, updated_at)변경되는 테이블:
access_key — 컬럼 추가:
external_backend_id (integer, nullable, FK to secret_backend) — 클라우드 공급자 구성에 대한 링크external_reference (JSON, nullable) — 시크릿 포인터를 저장 (ARN, vault URL, 시크릿 이름, field, 버전)GET/POST /api/project/{id}/secret-backends — 백엔드 구성 목록/생성PUT/DELETE /api/project/{id}/secret-backends/{backend_id} — 백엔드 업데이트/삭제POST /api/project/{id}/secret-backends/{backend_id}/test — 연결 및 인증 테스트POST /api/project/{id}/secret-backends/{backend_id}/resolve — 시크릿 참조 해석 (유효성 검사용)새로운 구성 옵션:
| Key | Env Var | Default | 설명 |
|---|---|---|---|
secret_cache_ttl |
SEMAPHORE_SECRET_CACHE_TTL |
5m |
해석된 외부 시크릿의 기본 메모리 내 캐시 TTL |
secret_resolve_timeout |
SEMAPHORE_SECRET_RESOLVE_TIMEOUT |
10s |
시크릿 해석 시 클라우드 공급자 API 응답의 최대 대기 시간 |