다음을 통해 공유


개발자 워크플로에 제로 트러스트 보안 포함

개발자는 빠르게 움직이기 위해 자신감과 안전을 느껴야 합니다. 코드를 복제하는 즉시 보안에 대한 필요성이 시작됩니다. 이 문서에서는 빠르고 안전하게 혁신할 수 있도록 제로 트러스트 원칙을 사용하여 개발하는 방법을 알아봅니다. 애플리케이션을 디자인하고 구현하기 위한 제로 트러스트 보안 전략 및 접근 방식은 다음과 같은 원칙으로 구성됩니다.

  • 명시적으로 확인. 항상 사용 가능한 모든 데이터 포인트를 기반으로 인증하고 권한을 부여합니다.
  • 최소 권한 액세스를 사용합니다. JIT/JEA(Just-In-Time and Just-Enough-Access), 위험 기반 적응 정책 및 데이터 보호를 사용하여 사용자 액세스를 제한합니다.
  • 위반을 가정합니다. 미치는 영향 및 세그먼트 액세스를 최소화합니다. 엔드투엔드 암호화를 확인하고, 분석을 사용하여 가시성을 확보하고, 위협 탐지를 추진하고, 방어를 향상시킵니다.

워크플로에 보안을 포함하면 다음을 수행할 수 있습니다.

  • 보안 취약성을 더 빠르게 파악합니다.
  • 보다 안전한 개발자 도구를 제공합니다.
  • 연결을 만들어 보안 및 개발 팀 간의 협업을 개선합니다.

코드를 만들 때 워크플로 혁신 및 보안

다음 다이어그램에 설명된 Microsoft의 통합 솔루션은 코드-클라우드 개발을 가속화하고 보호하는 데 도움이 되는 DevOps 및 SecOps 팀을 연결합니다.

다이어그램은 통합 코드-클라우드 개발 솔루션을 구성하는 기술을 보여 줍니다.

DevOps를 보호하기 위한 솔루션은 개발자에게 혁신을 위한 도구를 제공하고 개발자가 코드를 만들 때 개발자 워크플로를 보호하는 두 가지 주요 구성 요소를 사용합니다. Microsoft Build 2022클라우드 개발 세션 가속화 및 보안을 통해 이러한 구성 요소가 개발 환경을 보호하는 방법을 알아봅니다.

개발 솔루션을 보호하기 위해 Azure 및 GitHub에서 함께 작동하는 다음 모범 사례를 구현합니다.

개발 수명 주기에 제로 트러스트 보안 맞춤

사전 커밋부터 배포를 통한 커밋, 운영 및 모니터링까지 모든 개발 수명 주기 단계에서 보안 솔루션이 필요합니다.

사전 커밋 단계

  • 위협 모델링
  • 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단계로 구성됩니다.

다이어그램은 워크로드 ID 페더레이션 워크플로 단계를 보여 줍니다.

  1. Microsoft Entra ID에 대한 신뢰를 설정하고 토큰을 요청합니다.
  2. 작업이 토큰을 가져올 수 있도록 GitHub 워크플로를 구성합니다.
  3. GitHub 워크플로는 Azure ID에 요청을 보냅니다.
  4. Microsoft Entra ID는 애플리케이션에 대한 트러스트의 유효성을 검사하고 키를 가져와 토큰의 유효성을 검사합니다.
  5. Microsoft Entra ID는 토큰에 액세스하고 발급합니다.
  6. 배포 작업은 Microsoft Entra 액세스 토큰을 사용하여 Azure의 리소스에 배포합니다.

선임 클라우드 옹호자이자 DevOps 연습 책임자인 April Edwards가 워크로드 ID 페더레이션 워크플로를 시연하는 모습을 지켜보세요. 데모는 Microsoft Build 2022 세션 의 19:14 마크에서 시작하여 코드를 클라우드 개발에 가속화하고 보호합니다.

다음 단계