This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
proposed devops verify -

GitLab Secrets Manager ADR 004: Stateless Key Management Service

ADR-002에서 Google의 Cloud Key Management Service를 사용하기로 결정했습니다. 이를 통해 다양한 규정 요구를 더 쉽게 충족할 수 있게 될 것입니다.

이 ADR에서는 GitLab Secrets Management Service의 원하는 아키텍처를 설명하고, 상태가 없는 서비스로 만들어지며, 일시적인 로컬 리포지터리 외에 영구 데이터 리포지터리에 연결되지 않습니다.

맥락

결정

GitLab Secrets Management Service를 상태가 없는 애플리케이션으로 만들어, 관계형이나 NoSQL 데이터베이스와 같은 글로벌 데이터 리포지터리에 연결되지 않도록 합니다.

우리는 로컬 블록 리포지터리만 사용할 것이며, 아마도 캐싱 목적으로만 사용될 것입니다.

결합 비용을 현명하게 관리하기 위해 다층 보호 계층 및 인스턴스별 메모리 내 대칭 복호화 키 캐싱을 구현해야 하며, 캐시의 TTL은 보호 계층에 따라 달라집니다. Google의 Cloud KMS에서는 하드웨어 또는 소프트웨어 키를 사용할 수 있습니다.

결과

  1. 모든 개인 키는 Google의 Cloud KMS에 저장됩니다.
  2. 고도의 보호가 제공되는 더 높은 계층이 있는 다층 보호가 구현될 것입니다.
  3. 보호 계층은 GitLab Rails Service 측에서 기관별로 정의됩니다.
  4. 사용하는 보호 수준에 따라 대칭 복호화 키가 메모리에 캐시될 수 있습니다.
  5. 대칭 키의 캐시는 24시간을 초과해서는 안 됩니다.
  6. 최고 수준의 보호 계층은 하드웨어 보안 모듈을 사용하며 캐싱을 사용하지 않습니다.
  7. GitLab Secrets Management Service는 액세스 제어 메타데이터를 저장하지 않습니다.
  8. 식별자의 역 다중화는 GitLab Rails Service 측에서 발생합니다.
  9. 복호화 요청은 기관의 공개 키로 서명될 것입니다.
  10. 서비스는 서명을 확인하여 복호화 요청자의 식별을 확인합니다.

대안

관계형 데이터베이스나 NoSQL 데이터베이스, 클라우드 제공업체에서 관리되는 데이터베이스를 사용을 고려했지만, 이로 인해 많은 복잡성이 추가될 뿐 아니라 서비스의 보안 상태를 약화시킬 것으로 결론지었습니다.