제로 트러스트 DevOps 플랫폼 환경 보호
이 문서는 DevOps 팀 구성원으로서 최소 권한의 제로 트러스트 원칙을 구현하고 DevOps 플랫폼 환경을 보호하는 데 도움이 됩니다. 보안 엔터프라이즈 DevOps Environments eBook의 콘텐츠를 제공하고 비밀 및 인증서 관리에 대한 모범 사례를 강조 표시합니다.
최신 기업은 개발자가 생산성을 높이는 데 필요한 파이프라인 및 프로덕션 환경을 포함하여 배포를 위해 DevOps 플랫폼을 사용합니다. 과거에 애플리케이션 보안 방법은 현재 파이프라인 및 프로덕션 환경에서 노출하는 공격 노출 영역을 고려하지 않았습니다. 해커가 왼쪽으로 이동하고 업스트림 도구를 대상으로 할 때 DevOps 플랫폼 환경을 보호하기 위한 혁신적인 접근 방식이 필요합니다.
다음 다이어그램에서는 DevOps 플랫폼 환경이 애플리케이션 환경과 CI/CD(지속적인 통합 및 지속적인 업데이트 ) 파이프라인 확장에 연결됩니다.
CI/CD 파이프라인 확장은 해커에게 애플리케이션 환경에서 권한 상승에 참여할 수 있는 기회를 제공합니다. 확장 및 통합은 공격 노출 영역 취약성을 증가합니다. 맬웨어 침입 위협을 방어하는 것이 중요합니다.
공격자가 파이프라인을 대상으로 하는 방법 및 이유
파이프라인 및 프로덕션 환경은 표준 애플리케이션 보안 사례 및 프로세스와 독립적일 수 있습니다. 일반적으로 공격자에게 깊고 의미 있는 액세스를 제공할 수 있는 높은 수준의 액세스 자격 증명이 필요합니다.
공격자가 시스템을 손상시키는 새로운 방법을 찾는 동안 파이프라인에 대한 가장 일반적인 공격 벡터는 다음과 같습니다.
- 런타임 변수 및 인수 삽입 추출
- 파이프라인에서 서비스 원칙 또는 자격 증명을 검색하는 스크립트입니다.
- 키가 있는 모든 사용자가 DevOps 플랫폼 환경에 액세스할 수 있도록 하는 개인용 액세스 토큰이 잘못 구성되었습니다.
- 코드에 액세스해야 하는 통합 도구의 취약성 및 잘못된 구성(종종 읽기 전용이지만 때로는 쓰기 액세스). 통합 도구에는 테스트 프레임워크, SAST(정적 애플리케이션 보안 테스트) 및 DAST(동적 애플리케이션 보안 테스트)가 포함될 수 있습니다.
비밀 및 인증서 관리에 대한 모범 사례
치명적인 위반을 방지하는 것은 효과적인 비밀 관리만큼 간단할 수 있습니다. 다음 다이어그램에서는 유효 비밀, 암호, 액세스 토큰 및 인증서 관리의 예를 보여 줍니다.
위의 다이어그램에 표시된 것처럼 개발자는 고객 요청에 대한 빌드를 시작합니다. 그런 다음 GitHub는 자격 증명 모음 앱 역할의 역할 ID 및 비밀 ID를 사용하여 실행기를 시작합니다. 신뢰할 수 있는 엔터티는 정기적으로 자격 증명 모음에서 새 비밀 ID를 요청하고 GitHub에서 GitHub 비밀 ID를 가져옵니다. 자격 증명 모음은 GitHub 비밀 역할 ID 및 비밀 ID를 사용하여 로그인하고 코드 서명 자산을 가져옵니다. Runner는 모바일 앱을 사용자 지정하고 코드 서명합니다.
다음 모범 사례는 비밀 및 매개 변수 노출을 최소화하는 보안 설정을 빌드하는 데 도움이 됩니다.
- 각 애플리케이션 수명 주기 단계에서 비밀 및 인증서에 대한 보안 스토리지를 제공합니다. 항상 오픈 소스 프로젝트인 것처럼 개발합니다. 팀이 코드나 팀 환경이 아닌 키 자격 증명 모음에 비밀을 저장하고 있는지 확인합니다. 비밀을 안전하게 저장하고 액세스하려면 Azure Key Vault 클라우드 서비스를 사용합니다.
- GitHub의 OIDC를 페더레이션 ID로 신뢰하도록 Azure를 구성합니다. OIDC(OpenID Connect)를 사용하면 GitHub Actions 워크플로 가 Azure 자격 증명을 수명이 긴 GitHub 비밀로 저장하지 않고도 Azure의 리소스에 액세스할 수 있습니다.
DevOps 환경 보안에 대한 더 많은 모범 사례
보안 인시던트를 방어하려면 다음 모범 사례를 검토하여 DevOps 플랫폼 환경을 강화합니다. 보안 엔터프라이즈 DevOps Environments eBook에서 이러한 권장 사항에 대한 자세한 설명을 확인하세요 .
- 모든 DevOps 플랫폼 환경에 감사 내역을 적용합니다. 감사 로그를 검토하여 액세스 권한을 얻은 사람, 발생한 변경 내용 및 활성 시스템의 날짜/시간을 추적 합니다. 특히 프로덕션으로 이동하는 CI/CD 파이프라인이 있는 DevOps 플랫폼을 포함합니다. DevOps 도구에 대한 감사 내역은 위협을 더 빠르게 수정하고, 의심스러운 활동을 찾아서 경고하고, 가능한 위반 또는 취약성에 대해 경고하고, 잠재적인 데이터 또는 권한 오용을 찾는 강력한 방법을 제공합니다. 각 환경에서 세분화된 제어 및 감사 내역을 사용할 수 있는지 확인합니다.
- 소프트웨어 공급망을 보호합니다. 코드베이스로 가져오는 모든 라이브러리를 사용하여 소프트웨어 공급망을 확장하고 각 오픈 소스 프로젝트 또는 도구에서 종속성을 상속합니다. 소프트웨어 공급망의 공격 표면을 줄이기 위해 불필요한 라이브러리 및 오픈 소스 구성 요소를 주의해서 제거합니다.
- IaC(Infrastructure-as-Code) 템플릿 검사를 자동화합니다. IaC 환경을 사용하면 구성 오류, 규정 준수 감사 및 정책 문제를 쉽게 검색할 수 있습니다. 규정 준수 검사 및 액세스 제어를 구현하면 전체 인프라의 보안 태세가 강화됩니다. 자동화 시스템 요구 사항을 충족하는 도구 통합의 보안을 확인합니다.
- 승인 워크플로를 자동화합니다. 코드를 프로덕션으로 푸시하는 승인 워크플로의 경우 특정 자동 또는 수동 검사는 각 요청의 보안, 비즈니스 가치, 상태 및 품질을 확인해야 합니다. 이러한 검사는 경고 플래그를 지정하거나 트리거하지 않고 서비스 거부 공격과 해커가 프로덕션 환경에 코드를 삽입하는 것을 방지하기 위해 개발과 프로덕션 간의 게이트로 작동합니다.
- 확인된 DevOps 도구 통합만 허용합니다. 개발자 환경에서와 마찬가지로 DevOps 도구에는 DevOps 팀을 효율적이고 안전하게 만들기 위한 확장 및 통합이 제공됩니다. 확인된 통합에 작업을 실행하는 데 가능한 최소 권한이 필요한지 확인합니다. 가능한 경우 최소 권한 액세스를 구현하고 올바른 수준의 읽기/쓰기 권한을 보장합니다. 조직에 대해 GitHub Actions를 사용하지 않도록 설정하거나 제한하는 방법을 알아봅니다.
다음 단계
- 개발자 환경을 보호하면 최소 권한, 분기 보안 및 신뢰할 수 있는 도구, 확장 및 통합에 대한 모범 사례를 사용하여 개발 환경에서 제로 트러스트 원칙을 구현할 수 있습니다.
- 개발자 워크플로에 제로 트러스트 보안을 포함하면 빠르고 안전하게 혁신할 수 있습니다.
- 제로 트러스트 보안 DevOps 환경은 해커가 개발자 상자를 손상시키지 않도록 방지하고, 악의적인 스크립트로 릴리스 파이프라인을 감염시키고, 테스트 환경을 통해 프로덕션 데이터에 액세스하는 제로 트러스트 접근 방식을 사용하여 DevOps 환경을 보호하는 모범 사례를 설명합니다.
- Microsoft Entra ID를 중앙 집중식 ID 관리 시스템으로 사용하여 각서 22-09(미국 행정 명령 14028, 국가 사이버 보안 개선 지원)에 설명된 대로 제로 트러스트 원칙을 구현합니다.
- 개발자에게 클라우드 환경에 가장 빠르고 가장 안전한 코드를 제공하는 도구를 사용하여 Azure DevOps 를 사용하여 코드를 가속화하고 보호합니다.