개발자 워크플로에 제로 트러스트 보안 포함
개발자는 빠르게 움직이기 위해 자신감과 안전을 느껴야 합니다. 코드를 복제하는 즉시 보안에 대한 필요성이 시작됩니다. 이 문서에서는 빠르고 안전하게 혁신할 수 있도록 제로 트러스트 원칙을 사용하여 개발하는 방법을 알아봅니다. 애플리케이션을 디자인하고 구현하기 위한 제로 트러스트 보안 전략 및 접근 방식은 다음과 같은 원칙으로 구성됩니다.
- 명시적으로 확인. 항상 사용 가능한 모든 데이터 포인트를 기반으로 인증하고 권한을 부여합니다.
- 최소 권한 액세스를 사용합니다. JIT/JEA(Just-In-Time and Just-Enough-Access), 위험 기반 적응 정책 및 데이터 보호를 사용하여 사용자 액세스를 제한합니다.
- 위반을 가정합니다. 미치는 영향 및 세그먼트 액세스를 최소화합니다. 엔드투엔드 암호화를 확인하고, 분석을 사용하여 가시성을 확보하고, 위협 탐지를 추진하고, 방어를 향상시킵니다.
워크플로에 보안을 포함하면 다음을 수행할 수 있습니다.
- 보안 취약성을 더 빠르게 파악합니다.
- 보다 안전한 개발자 도구를 제공합니다.
- 연결을 만들어 보안 및 개발 팀 간의 협업을 개선합니다.
코드를 만들 때 워크플로 혁신 및 보안
다음 다이어그램에 설명된 Microsoft의 통합 솔루션은 코드-클라우드 개발을 가속화하고 보호하는 데 도움이 되는 DevOps 및 SecOps 팀을 연결합니다.
DevOps를 보호하기 위한 솔루션은 개발자에게 혁신을 위한 도구를 제공하고 개발자가 코드를 만들 때 개발자 워크플로를 보호하는 두 가지 주요 구성 요소를 사용합니다. Microsoft Build 2022의 클라우드 개발 세션 가속화 및 보안을 통해 이러한 구성 요소가 개발 환경을 보호하는 방법을 알아봅니다.
개발 솔루션을 보호하기 위해 Azure 및 GitHub에서 함께 작동하는 다음 모범 사례를 구현합니다.
- 개발자가 코드를 복제할 때 보안이 시작되므로 Azure 및 GitHub 를 사용하여 DevSecOps를 사용하도록 설정하여 DevOps 및 SecOps 팀을 연결하고 개발 환경을 보호합니다.
- Visual Studio 및 Visual Studio Code를 사용하여 모든 개발자, 언어 및 스택에 유연하고 강력한 개발자 도구를 제공합니다.
- GitHub Codespaces 및 Microsoft Dev Box를 사용하여 클라우드의 전체 개발 수명 주기 도구를 사용하여 새 개발자 온보딩 및 공동 작업을 간소화합니다.
- 더 이상 여러 위치에 분산되지 않는 코드에 대한 기본 제공 지적 재산권 보호를 포함합니다. 팀이 GitHub Actions 및 Azure Pipelines를 사용하여 원하는 위치에 코드를 공동 작업, 개발, 자동화 및 배포할 수 있도록 지원합니다.
- GitHub Advanced Security를 사용하여 코드 검사, 비밀 검사 및 종속성 검토를 통해 개발자 워크플로 내에서 보안 지침 및 지속적인 보안 피드백을 가져옵니다.
- Microsoft Entra ID의 ID 관리 서비스를 사용하여 조직 전체에 제로 트러스트 보안을 적용합니다 .
개발 수명 주기에 제로 트러스트 보안 맞춤
사전 커밋부터 배포를 통한 커밋, 운영 및 모니터링까지 모든 개발 수명 주기 단계에서 보안 솔루션이 필요합니다.
사전 커밋 단계
- 위협 모델링
- IDE 보안 플러그 인
- 사전 커밋 후크
- 보안 코딩 표준
- 피어 검토
코드 결함의 85%는 개발 사전 커밋 단계에서 주로 사람의 오류로 인해 나타납니다. Visual Studio Code, Visual Studio 또는 GitHub Codespaces에서 코드를 작성하여 코드를 커밋하기 전에 보안에 집중하여 취약성을 식별하고 코드를 보호합니다. 피어 검토를 사용하여 보안 코딩 사례를 장려합니다.
커밋(CI) 단계
- 정적 코드 분석
- 보안 단위 테스트
- 종속성 관리
- 자격 증명 검사
커밋 단계에서 광범위한 보안 방법을 사용하여 코드(정적 코드 분석 포함)를 검토하고 소스 제어에 체크 인할 때 코드를 검사합니다. 자격 증명 검사(비밀 검색 또는 토큰 검색이라고도 함)를 사용하여 실수로 코드베이스에 도입할 수 있는 자격 증명을 노출합니다. 종속성 검토를 사용하여 환경에 적용하기 전에 안전하지 않은 종속성을 파악합니다.
배포(CD) 단계
- IaC(Infrastructure as Code) 검사
- 동적 보안 검사
- 클라우드 구성 검사
- 보안 승인 테스트
배포 단계에서 코드베이스의 전반적인 상태를 확인하고 높은 수준의 보안 검사를 수행하여 위험을 식별합니다. 클라우드 구성 검사, 인프라 코드 검사 및 보안 승인 테스트를 수행하여 조직의 보안 목표에 부합하는지 확인합니다.
작동 및 모니터링 단계
- 연속 모니터링
- 위협 인텔리전스
- 비난하지 않는 사후 분석
운영 및 모니터링 단계에서 지속적인 모니터링 및 위협 인텔리전스를 사용하여 시간이 지남에 따라 상속할 수 있는 전반적인 종속성 취약성을 완화합니다. 사후 분석을 수행하여 학습된 교훈을 제거하고 DevOps 주기를 계속 반복합니다.
종속성, 코드 및 비밀 검사 구현
개발자가 코드를 보다 쉽게 보호하려면 네이티브 및 자동화된 기능을 사용하여 개발 수명 주기 내내 지속적인 보안 기능으로 지속적인 피드백을 제공합니다. GitHub Advanced Security 종속성 검사, 코드 검사 및 비밀 검사를 통해 개발자와 커뮤니티에 전반적인 보안을 제공합니다.
종속성 검사
- 종속성 통합 검토
- 경고 및 보안 업데이트
지속적인 종속성 검사를 사용하여 코드베이스의 취약한 종속성에 대한 위험 수준의 종속성 및 자동화된 수정을 가져옵니다. 연속 프로세스로서 개발자는 친숙하고 눈에 거슬리지 않는 방식으로 올바른 방향으로 이동합니다.
코드 검사
- 코드 검색을 위한 확장 가능한 프레임워크
- 개발자 워크플로 내에 통합
- 업계 최고의 CodeQL 엔진에 의해 뒷받침됨
별도의 위치에서 실행할 다른 단계가 없는 코드를 생성할 때 코드 검사를 구현합니다. 친숙한 GitHub 사용자 환경에서 검사 결과를 확인하여 개발 수명 주기 초기에 쉽게 수정할 수 있습니다.
비밀 검사
- 퍼블릭 및 프라이빗 리포지토리에서 유출된 비밀 검색
- 40개 이상의 공급자와의 파트너십
- 푸시 보호
- 수정에서 방지로 이동
- 신뢰도가 높은 비밀 확인
- 하나의 선택으로 보호 사용
비밀 검색을 사용하여 코드에서 하드 코딩된 자격 증명 및 토큰을 검색합니다. 코드베이스로 푸시하기 전에 비밀 및 토큰에 대한 보호 검사를 푸시합니다. 개발자가 코드를 푸시할 때 신뢰도가 높은 비밀을 확인하여 GitHub가 비밀을 식별할 때 푸시를 차단합니다.
워크로드 ID 관리 및 보안
- 수명 주기 관리
- 액세스 거버넌스
- 보안 적응 액세스
워크로드 ID의 활동을 파악하고 주기적인 정리를 사용하도록 설정합니다. 워크로드 ID를 소유한 사용자와 조직 변경 내용에서 이 정보를 최신 상태로 유지하는 방법을 결정합니다. 마지막으로 워크로드 ID를 사용한 시기, 마지막으로 토큰을 발급한 시기 및 토큰이 만료되는 시기를 추적합니다.
유출된 비밀 및 자격 증명의 가능성을 완화하려면 정기적으로 액세스 검토를 수행합니다. 사용자가 워크로드 ID를 검토하고 불필요한 액세스 권한을 제거하도록 요구합니다. 사용자에게 권한이 초과되고 사용 권한이 미달된 액세스 권한을 보고하게 합니다. 워크로드 ID를 위반으로부터 보호하는 방법에 대해 설명합니다. 필요한 리소스에서 액세스가 시작되도록 조건부 액세스를 사용하도록 설정합니다.
GitHub OIDC 및 Microsoft Entra 워크로드 ID 페더레이션을 사용하여 ID 보호
조직을 더욱 안전하게 보호하려면 Microsoft Entra 워크로드 ID 페더레이션과 함께 GitHub OIDC(OpenID Connect)를 사용하고 비밀을 저장하고 액세스할 필요성을 최소화합니다. Azure 서버 보안 주체 비밀 및 기타 수명이 긴 클라우드 자격 증명 리소스를 안전하게 관리하여 만료된 자격 증명으로 인한 서비스 가동 중지 시간을 최소화합니다. GitHub Actions와 같은 개발자 플랫폼과 통합하여 앱을 안전하게 빌드합니다.
다음 다이어그램에 나와 있는 권장 워크로드 ID 페더레이션 워크플로는 6단계로 구성됩니다.
- Microsoft Entra ID에 대한 신뢰를 설정하고 토큰을 요청합니다.
- 작업이 토큰을 가져올 수 있도록 GitHub 워크플로를 구성합니다.
- GitHub 워크플로는 Azure ID에 요청을 보냅니다.
- Microsoft Entra ID는 애플리케이션에 대한 트러스트의 유효성을 검사하고 키를 가져와 토큰의 유효성을 검사합니다.
- Microsoft Entra ID는 토큰에 액세스하고 발급합니다.
- 배포 작업은 Microsoft Entra 액세스 토큰을 사용하여 Azure의 리소스에 배포합니다.
선임 클라우드 옹호자이자 DevOps 연습 책임자인 April Edwards가 워크로드 ID 페더레이션 워크플로를 시연하는 모습을 지켜보세요. 데모는 Microsoft Build 2022 세션 의 19:14 마크에서 시작하여 코드를 클라우드 개발에 가속화하고 보호합니다.
다음 단계
- Azure에서 시작하는 데 걸리는 시간을 가속화하는 오픈 소스 도구인 Azure 개발자 CLI에 등록합니다.
- GitHub의 OIDC를 페더레이션 ID로 신뢰하도록 Azure를 구성합니다. OIDC(OpenID Connect)를 사용하면 GitHub Actions 워크플로 가 Azure 자격 증명을 수명이 긴 GitHub 비밀로 저장하지 않고도 Azure의 리소스에 액세스할 수 있습니다.
- Microsoft Entra ID를 중앙 집중식 ID 관리 시스템으로 사용하여 각서 22-09(미국 행정 명령 14028, 국가 사이버 보안 개선 지원)에 설명된 대로 제로 트러스트 원칙을 구현합니다.
- 개발자에게 클라우드 환경에 가장 빠르고 가장 안전한 코드를 제공하는 도구를 사용하여 Azure DevOps 를 사용하여 코드를 가속화하고 보호합니다.
- 개발자 환경을 보호하면 최소 권한, 분기 보안 및 신뢰할 수 있는 도구, 확장 및 통합에 대한 모범 사례를 사용하여 개발 환경에서 제로 트러스트 원칙을 구현할 수 있습니다.
- 제로 트러스트 보안 DevOps 환경은 해커가 개발자 상자를 손상시키는 것을 방지하고, 악성 스크립트로 릴리스 파이프라인을 감염시키고, 테스트 환경을 통해 프로덕션 데이터에 액세스하는 데 사용할 수 있도록 DevOps 환경을 보호하는 모범 사례를 설명합니다.
- 토큰 사용자 지정은 Microsoft Entra 토큰에서 받을 수 있는 정보를 설명합니다. 최소 권한으로 애플리케이션 제로 트러스트 보안을 강화하면서 유연성과 제어를 향상시키기 위해 토큰을 사용자 지정하는 방법을 설명합니다.
- 토큰 에서 그룹 클레임 및 앱 역할을 구성하면 앱 역할 정의를 사용하여 앱을 구성하고 앱 역할에 보안 그룹을 할당하는 방법을 보여 줍니다. 이러한 방법은 최소한의 권한으로 애플리케이션 제로 트러스트 보안을 강화하면서 유연성과 제어를 개선하는 데 도움이 됩니다.