in-toto

1 개의 포스트

Secure publication of Datadog Agent integrations with TUF and in-toto (새 탭에서 열림)

Datadog은 에이전트 통합 기능의 배포 주기를 에이전트 본체와 분리하여 자동화하는 동시에, 전체 공급망의 보안을 보장하기 위해 TUF(The Update Framework)와 in-toto를 도입했습니다. 기존의 TLS나 GPG 방식이 해결하지 못하는 인프라 침해 공격에 대응하기 위해, 개발자의 코드 커밋부터 최종 사용자의 설치 단계까지 모든 과정을 검증 가능한 구조로 설계했습니다. 이를 통해 Datadog은 자동화된 배포의 효율성과 '침해 저항성(Compromise-resilience)'을 갖춘 강력한 보안을 동시에 달성했습니다. ## 자동 배포의 필요성과 보안 과제 * **배포 주기 분리:** 수백 개의 통합 패키지를 에이전트 릴리스와 분리하여 독립적으로 업데이트함으로써 사용자에게 최신 기능을 신속하게 제공하고자 했습니다. * **기존 보안의 한계:** TLS 암호화나 단순 GPG 서명은 중간자 공격(MitM)은 방어할 수 있지만, 개발자와 사용자 사이의 인프라가 침해되어 코드가 변조되는 상황에는 취약합니다. * **침해 저항 시스템 구축:** 인프라의 일부가 장악되더라도 소프트웨어의 진본성과 무결성을 보호할 수 있는 CI/CD 시스템이 필요했습니다. ## in-toto를 통한 소프트웨어 공급망 검증 * **단계별 무결성 보장:** 소프트웨어 공급망을 코드 작성, 패키징(Wheel 파일 생성), 서명 등 일련의 고정된 단계로 정의하고 각 단계마다 입력과 출력에 대한 서명된 메타데이터를 생성합니다. * **최종 검증 과정:** Datadog 에이전트는 설치 시 서명된 메타데이터를 검사하여, 해당 패키지가 지정된 담당자에 의해 정의된 절차대로 생성되었는지 확인합니다. * **4단계 워크플로우:** 1. 개발자가 Python 소스 코드와 YAML 설정 파일을 작성합니다. 2. CI/CD 시스템이 소스 코드를 수신하여 Python Wheel(ZIP 파일)로 패키징합니다. 3. CI/CD 시스템이 동일한 Wheel 파일들에 대해 TUF 서명을 수행합니다. 4. 에이전트가 파일을 다운로드하여 개발자가 서명한 코드와 정확히 일치하는지 최종 확인합니다. ## TUF를 활용한 안전한 키 관리 및 전송 * **신뢰의 뿌리(Root of Trust):** in-toto가 공급망 단계를 검증한다면, TUF는 검증에 사용되는 공개키를 안전하게 배포, 취소, 교체하는 역할을 담당합니다. * **공격 방어:** 메타데이터의 일관성과 진본성을 보장하며, 공격자가 이전 버전으로 되돌리는 롤백(Rollback) 공격이나 무한 재생(Replay) 공격을 방지합니다. * **오프라인 부트스트래핑:** TUF를 통해 신뢰를 오프라인에서 구축하고 하드웨어 키로 개발자 서명 키를 보호함으로써 in-toto의 보안 보장을 더욱 공고히 합니다. ## Yubikey 기반의 하드웨어 보안 서명 * **키 유출 방지:** 개발자는 GPG 서명 키를 생성하고 저장할 수 있는 하드웨어 키(Yubikey)를 사용하며, 키는 장치 외부로 내보낼 수 없습니다. * **다중 보호 계층:** 서명 작업을 승인하기 위해서는 비밀번호(PIN) 입력과 장치에 대한 물리적인 터치가 반드시 필요합니다. * **사용 편의성:** CLI 도구를 통해 in-toto와 GPG 호출 과정을 투명하게 처리하여, 개발자의 업무 흐름을 방해하지 않으면서도 키 침해 위험을 최소화했습니다. ## 사용자 경험과 실용적 결론 * **투명한 보안:** 사용자는 평소와 다름없이 에이전트를 통해 통합 기능을 설치하지만, TUF나 in-toto가 공격을 감지하면 즉시 설치를 차단하고 상세한 오류 메시지를 표시합니다. * **업계 표준 지향:** Datadog은 이처럼 두 기술을 밀접하게 통합함으로써 보안 소프트웨어 배포가 단순히 '선택 사항'이 아닌 업계의 '표준'이 되도록 기여하고 있습니다. * **추천 사항:** 자동화된 CI/CD 환경에서 보안을 강화하려는 조직은 소프트웨어 공급망의 각 단계를 투명하게 기록하는 in-toto와 키 관리 체계를 담당하는 TUF의 조합을 검토할 필요가 있습니다.