본문으로 건너뛰기

원격 스토리지에서 시크릿 동기화

Semaphore는 HashiCorp Vault, OpenBao, AWS Secrets Manager, Azure Key Vault 또는 Devolutions Server (DVLS) 같은 외부 시크릿 관리자에 연결하여 시크릿을 키 저장소로 자동으로 가져올 수 있습니다. 자격 증명을 수동으로 Semaphore에 복사하고 최신 상태로 유지하는 대신, Semaphore가 원격 스토리지를 가리키도록 하면 로컬 미러가 자동으로 유지됩니다.

동기화 경로는 원격 스토리지에서 어떤 시크릿을 가져올지, 그리고 가져온 후 어떻게 이름을 지정할지를 Semaphore에 알려주는 규칙입니다. 시크릿 관리자에는 여러 폴더에 걸쳐 수천 개의 시크릿이 있을 수 있습니다. 동기화 경로를 사용하면 관심 있는 하위 트리만 선택하고 생성되는 키의 이름 지정 방식을 제어할 수 있습니다.

핵심 개념

  • 원격 스토리지 — 외부 시크릿 관리자에 대한 구성된 연결로, 주소와 Semaphore가 읽기에 사용하는 자격 증명을 포함합니다.
  • 동기화 — 원격 스토리지에서 시크릿을 읽고 Semaphore에 저장된 키와 조정하는 과정입니다.
  • 동기화 경로경로, 접두사, 구분자로 구성된 단일 가져오기 규칙입니다.

동기화 경로의 작동 방식

각 동기화 경로에는 세 개의 필드가 있습니다:

  • 경로 — 가져올 원격 스토리지 내의 위치입니다. Semaphore가 나열하고 읽는 기본 폴더, 접두사 또는 하위 트리입니다. 그 아래에서 발견된 모든 항목이 가져오기 후보가 됩니다.
  • 접두사 — 생성되는 모든 키 이름 앞에 추가되는 문자열입니다. 가져온 시크릿에 네임스페이스를 부여하여 다른 경로나 다른 스토리지의 키와 충돌하지 않도록 하는 데 사용합니다(예: prod-).
  • 구분자 — 시크릿의 원격 위치 조각들을 하나의 키 이름으로 결합하는 데 사용되는 문자입니다. 원격 시크릿은 여러 폴더 깊이에 있을 수 있으므로, 구분자는 해당 계층 구조가 하나의 읽기 쉬운 이름으로 평탄화되는 방식을 결정합니다.

동기화가 실행되면 Semaphore는 경로를 순회하고, 발견한 각 시크릿에 대해 시크릿의 위치를 구분자로 결합하고 접두사를 앞에 붙여 키 이름을 만듭니다. 생성되는 키의 유형(SSH 키, 로그인/비밀번호 또는 일반 시크릿 문자열)은 원격 시크릿의 형태에서 자동으로 추론됩니다.

단일 스토리지에 여러 동기화 경로를 정의할 수 있습니다. 각 경로는 독립적으로 가져오므로, 동일한 시크릿 관리자의 서로 관련 없는 여러 영역에서 가져오면서 각각에 고유한 접두사와 이름 지정 스타일을 부여할 수 있습니다.

제공자별로 적절한 기본값이 적용됩니다. 예를 들어 HashiCorp Vault, OpenBao, AWS Secrets Manager는 구분자로 /를, Azure Key Vault는 -를, Devolutions Server는 \를 기본값으로 사용하므로, 대부분의 경우 경로만 입력하면 됩니다.

동기화 실행

동기화는 두 가지 방식으로 실행됩니다:

  1. 수동. 스토리지를 열고 지금 동기화 작업을 사용합니다. Semaphore는 구성된 동기화 경로에 따라 해당 스토리지를 즉시 조정합니다. 첫 가져오기나 변경 사항을 즉시 반영할 때 유용합니다.
  2. 일정에 따라 자동. 스토리지에 대해 키 동기화를 활성화하고 동기화 간격을 분 단위로 설정합니다. 그러면 Semaphore가 백그라운드에서 해당 주기로 동기화를 다시 실행합니다. 간격을 0으로 설정하면 자동 동기화가 비활성화되고 수동 옵션만 남습니다.

각 스토리지는 마지막 동기화 시점과 마지막 시도의 실패 여부를 기록하므로 미러의 상태를 항상 확인할 수 있습니다.

노트

고가용성 배포에서는 자동 동기화가 노드 간에 조정되므로, 특정 동기화는 한 번에 하나의 노드에서만 실행됩니다. 중복 가져오기가 발생하지 않습니다.

동기화가 키에 미치는 영향

동기화는 일회성 복사가 아닌 완전한 미러입니다. 매 실행마다 Semaphore는 원격 스토리지를 이전에 가져온 키와 조정합니다:

  • 동기화 경로 아래에서 발견된 시크릿은 키로 생성됩니다.
  • 기존에 가져온 키는 현재 원격 값과 일치하도록 업데이트됩니다.
  • 이전에 가져왔지만 원격 스토리지에 더 이상 존재하지 않는 키는 제거됩니다.

Semaphore가 가져온 키만 영향을 받습니다. 수동으로 생성한 키는 동기화에 의해 수정되거나 삭제되지 않습니다.

경고

가져온 키는 원격 시크릿의 관리되는 사본이므로, 스토리지를 삭제하거나 동기화를 비활성화하면 해당 스토리지에서 가져온 키도 제거됩니다.

두 가지 범위: 공유 키와 환경 변수

동기화 경로는 두 곳에서 구성할 수 있습니다:

  • 스토리지 수준 — 가져온 시크릿은 프로젝트 전체에서 키가 사용되는 모든 곳에서 사용할 수 있는 공유 키가 됩니다.
  • 환경 수준변수 그룹이 스토리지와 그 동기화 경로를 가리켜 시크릿을 해당 그룹 범위의 환경 변수로 가져올 수 있습니다.

작동 방식은 동일하며, 가져온 시크릿의 대상만 다릅니다.

참고 사항 및 제한

  • 동기화는 외부 스토리지 유형(HashiCorp Vault, OpenBao, AWS Secrets Manager, Azure Key Vault, Devolutions Server)에서만 지원됩니다. 내장 데이터베이스 스토리지는 시크릿을 자체적으로 보관하므로 동기화할 것이 없습니다.
  • 원격 스토리지 자격 증명 자체(Semaphore가 인증에 사용하는 token 또는 키)는 가져오는 시크릿과 별도로 안전하게 저장됩니다.
  • 동기화가 꺼져 있고 남은 경로가 없으면 해당 스토리지의 동기화 구성이 초기화됩니다.