보안 모델

보안 모델

HCP Vault Radar는 미관리 시크릿과 유출된 시크릿을 감지해서 DevOps 및 보안 팀이 시크릿 노출 위험에 대응할 수 있도록 도와줘요. 이 문서의 정보는 HashiCorp Cloud Platform (HCP) 보안 모델의 확장이에요.

출처: 문서

본문

ID 모델과 페르소나

HCP는 접근 제어 관리를 제공하기 위해 사전 구성된 권한을 가진 역할 그룹을 일반적으로 갖고 있어요. Vault Radar는 HCP의 조직 수준 역할 및 권한 정의에 정의된 다양한 역할 유형을 사용해요. 서로 다른 페르소나는 서로 다른 Vault Radar 사용 사례를 가지므로 각 페르소나에 적절한 HCP 역할을 할당해야 해요.

일반적으로 admin은 리소스 온보딩, 구성 변경, 알림 활성화, 이벤트 보기를 포함해 Vault Radar 프로젝트를 구성할 수 있어요. contributor는 이벤트를 보고 이벤트 수정 상태를 업데이트할 수 있어요. viewer는 이벤트를 볼 수 있어요. 자세한 내용은 Vault Radar 권한 구성을 참고하세요.

보안 운영

보안 운영(SecOps) 팀원은 데이터 소스를 온보딩하고, 알림을 설정하고, 보안 스프롤을 파악하고, 보고서를 생성하며, 수정 작업을 할당해요. 이러한 작업을 수행하려면 각 구성원에게 admin 역할을 할당하세요. admin 역할은 광범위한 읽기/쓰기 기능을 부여하고 새 사용자 온보딩, 프로젝트 삭제, 플랫폼 수준 설정 구성 기능을 제공해요.

개발자

Vault Radar가 데이터 소스에서 시크릿을 식별하면 개발자는 알림을 받아요. 개발자는 Vault Radar를 사용해 자신의 워크플로(예: 풀 리퀘스트에 비밀번호나 API 토큰 커밋)에서 잠재적 위험을 식별해요. 개발자에게는 일반적으로 contributor 역할이 부여되며, 이 역할로 이벤트를 보고 수정 상태를 업데이트할 수 있어요.

Vault Radar 에이전트와 CLI

Vault Radar 에이전트와 CLI는 머신 간(machine-to-machine) 방식으로 Vault Radar와 통신하며, HCP와 인증하기 위해 service principal을 사용해요. 이 서비스 주체에 적절하게 범위가 지정된 API 접근을 제공하는 세밀한 역할을 할당하세요. 자세한 내용은 Vault Radar 에이전트 개요 문서를 참고하세요.

에이전트는 Vault Radar 서비스 내에서 Vault Radar Agent 역할을 사용하고, CLI는 Vault Radar 서비스 내에서 Vault Radar CLI User 역할을 사용해요. 구성된 경우 에이전트는 connect on demand 시스템에 접근할 수 있는 내부 역할도 보유해요.

Vault Radar IDE 확장

Vault Radar IDE 확장은 HCP Vault Radar 서비스와 독립적으로 동작하며 서비스와 통신하지 않아요. 확장은 개발자 머신이든 원격 개발 환경이든 IDE 환경에서 로컬로 실행돼요.

IDE 확장은 HashiCorp Vault와 통합해 두 가지 핵심 기능을 수행해요.

  • 감지된 위험과 로컬로 상호 연관 짓기 위해 KVv2 시크릿을 색인해요.
  • 수정을 위해 Radar에서 감지된 위험을 Vault로 복사해요.

Vault 색인

생성된 Vault 색인은 VS Code 확장의 글로벌 저장 경로를 사용해 로컬에 저장돼요. 색인에는 자격 증명이 포함되지 않고, IDE 편집기에서 로컬로 찾은 값을 상호 연관 짓는 데 사용할 수 있는 자격 증명의 해시만 포함돼요. 확장은 표시 목적으로 색인된 값의 위치에 대한 일부 메타데이터도 저장해요. 확장은 선택적으로 구성된 Vault 클러스터 외부 서비스로 시크릿 데이터를 보내지 않아요.

텔레메트리

확장은 VS Code 텔레메트리 지침에 따라 Azure Application Insights에 익명 사용 데이터를 보고해요. IDE 설정을 통해 텔레메트리 수집 설정을 off로 지정할 수 있어요. VS Code 확장 텔레메트리 문서를 참고하세요.

GitHub Copilot 수정

확장은 발견된 시크릿에 대한 메타데이터가 포함된 프롬프트를 GitHub Copilot에 보내요. 이 메타데이터는 문서 내 시크릿의 위치와 Vault에서의 시크릿 위치를 포함해요. 시크릿 값은 포함하지 않아요.

높은 수준의 아키텍처

Vault Radar는 HCP에서 실행되는 멀티 테넌트 SaaS(software-as-a-service) 애플리케이션이며, 고객이 제공한 타사 리소스의 데이터를 스캔하기 위한 적절한 보안 경계를 갖추고 있어요.

Vault Radar 아키텍처

모든 고객 상호작용은 먼저 로드 밸런서를 거치며, 로드 밸런서는 요청을 Vault Radar 서비스를 실행하는 오케스트레이터로 분산해요. 요청은 스캔 인프라를 활성화하는 서비스 집합으로 전달되기 전에 인증 및 권한 부여 프로세스를 거쳐 서명된 토큰을 받아요.

사용자는 HCP 프로젝트(“테넌트”라고도 함)의 범위 내에서 인증해요. Vault Radar는 HCP의 역할 기반 접근 제어 (RBAC)를 활용해 할당된 역할에 따라 사용자가 접근할 수 있는 대상을 제한해요.

Vault Radar 제품은 GitHub Cloud, Confluence 등 공개적으로 접근 가능한 데이터 소스에서 위험을 스캔할 수 있어요. 이러한 스캔은 단기 수명의 테넌트 범위 워커를 사용해 수행하며, 테넌트당 발견된 위험에 대한 메타데이터만 저장하고 위험 자체는 절대 저장하지 않아요.

Vault Radar가 고객 데이터 스캔을 수행할 때 스캔 수행 방법에 대한 구성을 조립하고 스캔을 적절한 파이프라인에 넣어요. 그런 다음 Vault Radar는 작업을 수행할 스캔 워커를 프로비저닝하고 워커에 구성을 제공해요. 구성에는 Vault Radar의 시크릿 매니저에서 가져온 접근 토큰/자격 증명이 포함돼요. 워커는 그런 다음 적절한 고객 데이터 소스에서 스캔할 관련 콘텐츠를 가져와요.

소스 코드 저장소를 스캔할 때 Vault Radar는 최소한의 데이터를 임시 디렉터리에 클론해요. 스캔이 완료되면 클론된 저장소를 삭제해요. Vault Radar는 적절할 때 다른 리소스를 메모리 내에서 직접 스캔해요.

하이브리드 에이전트 아키텍처

하이브리드 에이전트 아키텍처는 일반적으로 Vault Radar 아키텍처와 유사해요. 두드러진 예외는 스캔 작업이 에이전트 풀을 통해 고객의 네트워크 내부에서 발생한다는 점이에요. 에이전트 풀은 데이터 소스 자격 증명을 로컬에 저장해요(Vault Radar는 접근할 수 없어요).

에이전트 풀은 특별한 권한이 필요한 API를 활용해요. Vault Radar 서비스는 에이전트 풀에 권한을 제공하는 특별한 서비스 주체를 프로비저닝해요. 서비스 주체는 Vault Radar 에이전트 API에 접근을 허용하는 세밀한 역할을 사용해요.

일부 작업은 에이전트가 고객 네트워크 내 타사 데이터 소스(예: GitHub Enterprise 또는 Confluence)에 대한 Vault Radar 서비스의 API 요청 프록시 역할을 해야 해요. 이러한 API 요청은 에이전트가 로컬에서 시행하는 허용 목록(allow list)의 적용을 받으며, HCP가 이를 재정의할 수 없어요. 허용 목록이 허용하지 않는 모든 요청은 자동으로 거부돼요. 이러한 요청은 종종 인증 자격 증명이 필요하므로, Vault Radar 서비스가 프록시하는 요청에 인증 자격 증명을 포함하거나 저장하지 않는다는 점이 중요해요. 대신 에이전트가 필요한 자격 증명을 대상 서비스로 보내기 전에 로컬에서 요청에 주입해요.

에이전트는 Vault Radar와 통신하기 위해 두 가지 모델을 사용해요.

  • Poll and report: 에이전트가 완료할 작업을 Vault Radar 서비스에 폴링해요. 작업을 수행하고 결과를 Vault Radar에 업로드하면 사용자가 UI를 통해 데이터와 상호작용할 수 있어요.이 모델에서 Vault Radar는 에이전트에게 무엇을 할지 알려줘요. 에이전트는 고객 네트워크에서 호출해 수행할 작업을 모은 다음 호출해 결과를 보고해요.Vault Radar는 모든 스캔 유형 작업에 이 모델을 사용해요.
  • Connect on demand: 에이전트가 Vault Radar에 지속적인 아웃바운드 연결을 형성해요. 요청은 이 장기 수명의 지속 연결을 통해 에이전트로 라우팅돼요. 이 모델은 poll and report 모델보다 대기 시간이 훨씬 적을 수 있어요.Connect on demand는 UI 상호작용을 차단할 수 있는 저지연 작업(예: 데이터소스 자동 검색)에 유용해요. 이 시스템에는 추가 안전장치가 내장되어 있어요:TLS 외에도 각 메시지는 수신 에이전트가 개별적으로 인증하고 권한을 부여해요각 메시지는 짧은 수명(TTL)을 가져요

리소스 스캔

Vault Radar는 리소스를 스캔한 다음 발견된 모든 위험을 분석하고 분류해요. Vault Radar는 잠재적으로 민감한 자료(예: 시크릿)를 포함하는 각 위험을 Argon2id로, 고객별 N비트 무작위 생성 솔트와 함께 해시해요. 그런 다음 Vault Radar는 위험이 위치한 곳에 대한 메타데이터를 이 초기 Argon2id 해시와 함께 Vault Radar 서비스에 업로드해요.

스캔을 마무리하는 동안 모든 Argon2id 해시는 별도의 프로젝트별 프라이빗 키로 HMAC 처리돼요. 따라서 원본 민감 데이터의 복구는 원본 소스 자료에 접근할 수 있을 때에만 가능해요. Vault Radar는 스캔 결과물의 원시 시크릿 값을 저장하지 않아요.

데이터 저장

위에서 언급했듯이 Vault Radar는 원시 시크릿 값을 저장하지 않아요. 단, 발견된 위험에 대한 다양한 메타데이터는 저장해요.

객체 저장 위치 암호화
버전 제어 시스템 메타데이터 Vault Radar 데이터베이스 AES-256
딥 링크 URL Vault Radar 데이터베이스 AES-256
시크릿 컨텍스트 Vault Radar 데이터베이스 AES-256
통합 메타데이터 Vault Radar 데이터베이스 AES-256
통합 자격 증명 HashiCorp Vault AES-256

이 목록이 Vault Radar가 저장하는 모든 데이터를 포함하는 것은 아니에요.

위협 모델

Vault Radar, 에이전트, Vault Radar가 사용하는 타사 시스템 간 통신의 기밀성과 무결성은 종단 간 TLS 암호화를 사용해 보호돼요.

Vault Radar UI 또는 API(Vault Radar CLI 포함)를 통한 데이터와 작업에 대한 권한 부여 시행은 세밀한 역할이 있는 RBAC를 사용하며 모든 호출이 권한을 부여받아요.

Vault Radar는 모든 사용자 작업(그리고 대부분의 자동화 작업)을 감사해요. Vault Radar는 HCP의 감사 로그를 통해 플랫폼 수준 로깅을 상속해요. Vault Radar 에이전트는 kubectl(또는 다른 배포 방법의 로그에 접근하는 방식)을 통해 접근할 수 있는 로컬의 상세 운영 로그를 제공해요. 리소스 스캔 기록은 Vault Radar UI(Radar >> Resources >> Select a resource >> Scans)에서 확인할 수 있어요.

클라우드 스캔은 프로젝트별, 일시적, 격리된 컨테이너 안에서 실행돼요.

Vault Radar는 발견된 시크릿을 저장하지 않지만, 해시한 후 HMAC 해시한 값과 그 메타데이터는 저장해요.

Vault Radar는 관계형 데이터베이스와 시크릿 매니저에 AES-256 저장 시 암호화로 데이터를 저장해요. Radar는 시크릿 매니저를 시크릿(HCP Radar용 데이터 소스 자격 증명 등)에, 데이터베이스를 위험 메타데이터, 대기 작업 등에 사용해요.

에이전트 스캔은 로컬에서 실행되며 모든 자격 증명이 로컬에 있고, 시크릿은 Vault Radar 서비스로 전송되지 않아요.

안전한 사용을 위한 권장 사항

  • HCP 계정, 상위 시스템 또는 하위 시크릿 매니저 모두에 최소 권한 원칙을 적용하세요.
  • 네트워크 수준 허용 목록 구성을 구현하세요(에이전트에는 기본 허용 목록이 포함되어 있음을 참고하세요).
  • Vault Radar 사전 커밋 훅을 활성화해 시크릿이 git 저장소로 전송되지 않게 하세요.
  • HCP 감사 로그를 중앙 집중식 위치로 보내세요(감사 로그 스트리밍 참고).

더 알아보기 (Learn more)