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 002: GCP Key Management Service 사용

컨텍스트

ADR 001: Use envelope encryption에서의 내용에 이어서, 우리는 각 보그에 속한 비대칭 키를 안전하게 저장할 수 있는 솔루션을 찾아야 합니다.

결정

우리는 GitLab Secrets Manager 보그에서 사용되는 비대칭 키를 관리하기 위해 Google Cloud Platform (GCP) Key Management Service (KMS)에 의존하기로 결정했습니다.

GCP를 사용하는 것에는 몇 가지 이점이 있습니다:

  1. 암호화 키의 안전한 리포지터리를 직접 구현할 필요가 없습니다.
  2. 하드웨어 보안 모듈(Hardware Security Modules, HSM) 지원.
sequenceDiagram participant A as 클라이언트 participant B as GitLab Rails participant C as GitLab Secrets 서비스 participant D as GCP Key Management Service Note over B,D: 프로젝트/그룹/조직을 위한 보그 초기화 B->>C: 보그 초기화 - 키페어 생성 Note over D: 키페어 당 비용 발생 C->>D: 새로운 비대칭 키 생성 D->>C: 공개 키 반환 C->>B: 보그 공개 키 반환 B->>B: 보그 공개 키 저장 Note over A,C: 새로운 시크릿 생성 A->>B: 새로운 시크릿 생성 B->>B: 새로운 대칭 데이터 키 생성 B->>B: 시크릿을 데이터 키로 암호화 B->>B: 데이터 키를 보그 공개 키로 암호화 B->>B: 엔벨롭(암호화된 시크릿 + 암호화된 데이터 키) 저장 B-->>B: 평문 데이터 키 폐기 B->>A: 성공 Note over A,D: 시크릿 검색 A->>B: 시크릿 가져오기 B->>B: 엔벨롭(암호화된 시크릿 + 암호화된 데이터 키) 검색 B->>C: 데이터 키 복호화 Note over D: 각 복호화 요청 당 비용 발생 C->>D: 데이터 키 복호화 D->>C: 평문 데이터 키 반환 C->>B: 평문 데이터 키 반환 B->>B: 시크릿 복호화 B-->>B: 평문 데이터 키 폐기 B->>A: 시크릿 반환

보안을 위해, GCP KMS에서 키를 보호하기 위해 하드웨어 보안 모듈 (HSM)을 사용하기로 결정했습니다.

결과

인증

GCP KMS에 저장된 키로 인해, GCP KMS에 구성된 식별자와 GitLab에 정의된 식별자 간의 디멀티플렉싱이 필요하며, 이를 통해 복호화 요청을 적절하게 인증할 수 있습니다.

비용

GCP KMS 사용으로 인해, 다음 비용을 고려해야 합니다:

  1. 필요한 키 수
  2. 키 작업 수
  3. HSM 보호 수준

필요한 키 수는 이 기능을 사용하는 프로젝트, 그룹 및 조직의 수에 따라 달라질 것입니다. 각 프로젝트, 그룹 또는 조직당 단일 비대칭 키가 필요합니다.

각 암호화 키 작업은 비용이 발생하며, 보호 수준에 따라 다를 것입니다. 위에서 제안된 설계에 따라, 이는 각 비밀 복호화 요청마다 비용이 발생할 것입니다.

우리는 다양한 사용자를 위해 다른 보호 유형을 지원하는 멀티 티어 보호 수준을 구현할 수 있습니다.

GCP KMS의 가격표는 여기에서 확인할 수 있습니다.

Self-Managed형 고객을 위한 기능 가용성

백엔드로 GCP KMS를 사용하는 것은 이 솔루션이 Self-Managed형 환경에 배포될 수 없다는 것을 의미합니다. Self-Managed형 고객을 위해 이 기능을 사용할 수 있도록 하려면, 이 기능을 GitLab 클라우드 커넥터 기능으로 만들어야 합니다.

대안

우리는 GitLab Secrets Service 내에서 개인 키를 생성하고 저장하는 것을 고려했지만, 이는 FIPS 규정을 충족시키지 못할 것입니다.

반면에, GCP HSM 키는 FIPS 140-2 레벨 3을 준수합니다.