Azure 및 GitHub와 함께 DevSecOps 사용

보안 DevOps라고도 하는 DevSecOps는 DevOps의 원칙을 기반으로 하지만 전체 애플리케이션 수명 주기의 중심에 보안을 배치합니다. 이 개념을 “시프트 레프트 보안”이라고 합니다. 즉, 보안 업스트림을 프로덕션만 신경 쓰던 데서 계획 및 개발의 초기 단계를 포괄하도록 이동합니다. 애플리케이션에서 작업하는 모든 팀과 사용자는 보안을 고려해야 합니다.

Microsoft 및 GitHub는 프로덕션에서 실행하는 코드에 대한 신뢰를 구축하는 솔루션을 제공합니다. 이러한 솔루션은 코드를 검사하고 네트워크 항목까지의 추적 가능성을 허용하며 사용 중인 타사 구성 요소에 대한 인사이트를 제공합니다.

GitHub로 코드 보호

개발자는 코드 검색 도구를 사용하여 GitHub 리포지토리의 코드를 자동으로 신속하게 분석하여 보안 취약성과 코딩 오류를 찾을 수 있습니다.

코드를 검색하여 기존 문제에 대한 픽스를 찾고 심사하고 우선순위를 지정할 수 있습니다. 코드 검사를 통해 개발자는 새로운 문제가 발생하지 않도록 방지할 수도 있습니다. 특정 날짜 및 시간에 검사를 예약하거나 푸시처럼 리포지토리에 특정 이벤트가 발생하는 경우 검색을 트리거할 수 있습니다. GitHub에서 취약한 종속성을 검색할 때 리포지토리의 종속성을 추적하고 보안 경고를 받을 수도 있습니다.

Azure Boards를 사용하여 작업 추적

Teams는 Azure Boards 웹 서비스를 사용하여 소프트웨어 프로젝트를 관리할 수 있습니다. Azure Boards는 스크럼 및 Kanban에 대한 기본 지원, 사용자 지정 가능한 대시보드 및 통합 보고를 비롯한 다양한 기능을 제공합니다.

Azure Pipelines를 사용하여 컨테이너 빌드 및 배포

Azure Pipelines 및 Kubernetes 클러스터를 쉽게 통합합니다. 동일한 YAML 문서를 사용하여 연속 통합 및 지속적인 업데이트 모두에 대해 코드로서 다중 스테이지 코드형 파이프라인(pipelines-as-code)을 빌드할 수 있습니다.

Azure Pipelines는 컨테이너 이미지를 추적하는 메타데이터(커밋 해시 및 Azure Boards의 이슈 번호)를 통합하여 자신 있게 애플리케이션을 검사할 수 있도록 해줍니다.

YAML 파일을 사용하여 배포 파이프라인을 만들고 소스 제어에 저장하는 기능은 명확하고 읽기 쉬운 문서를 사용하여 개발 팀과 운영 팀 간에 더욱 긴밀한 피드백 루프를 작동하도록 도와줍니다.

Bridge to Kubernetes를 사용하여 컨테이너 실행 및 디버그

Kubernetes 애플리케이션 개발은 힘든 작업일 수 있습니다. Docker 및 Kubernetes 구성 파일이 필요합니다. 로컬에서 애플리케이션을 테스트하고 다른 종속 서비스를 조작하는 방법을 파악해야 합니다. 개발자 팀과 함께 한 번에 여러 서비스를 개발하고 테스트해야 할 수 있습니다.

Bridge to Kubernetes를 사용하면 나머지 애플리케이션 또는 서비스가 포함된 Kubernetes 클러스터에 연결된 상태로 개발 컴퓨터에서 코드를 실행하고 디버그할 수 있습니다. 코드를 엔드투엔드로 테스트하고, 클러스터에서 실행 중인 코드의 중단점을 적중하고, 팀 멤버 간에 간섭 없이 개발 클러스터를 공유할 수 있습니다.

컨테이너용 Microsoft Defender 및 Azure Policy로 컨테이너 보안 적용

컨테이너용 Microsoft Defender는 컨테이너 보호를 위한 클라우드 네이티브 솔루션입니다.

Microsoft ID 플랫폼을 사용하여 ID 및 액세스 관리

Microsoft ID 플랫폼은 Azure AD(Azure Active Directory) 개발자 플랫폼의 발전된 형태입니다. 이 플랫폼을 사용하면 개발자가 모든 Microsoft ID에 로그인하고, Microsoft Graph와 같은 Microsoft API 또는 개발자가 빌드한 API를 호출하기 위한 토큰을 가져오는 애플리케이션을 빌드할 수 있습니다.

Azure AD B2C는 비즈니스-고객 ID를 서비스로 제공합니다. 고객은 기본 설정 소셜, 엔터프라이즈 또는 로컬 계정 ID를 사용하여 애플리케이션 및 API에 대한 Single Sign-On 액세스 권한을 얻습니다.

클라우드 리소스의 액세스 관리는 클라우드를 사용하는 모든 조직에서 중요한 기능입니다. Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure 리소스에 액세스할 수 있는 사용자, 해당 리소스로 수행할 수 있는 작업 및 액세스할 수 있는 영역을 관리하는 데 도움을 줍니다.

Microsoft ID 플랫폼을 사용하여 Azure DevOps 내의 기본 지원과 GitHub Enterprise와의 통합을 비롯하여 나머지 DevOps 도구로 인증할 수 있습니다.

현재 AKS(Azure Kubernetes Service) 클러스터(특히 Kubernetes 클라우드 공급자)가 Azure의 부하 분산 장치, 관리 디스크처럼 추가 리소스를 만들려면 ID가 필요합니다. 이 ID는 관리 ID 또는 서비스 주체일 수 있습니다. 서비스 주체를 사용하는 경우 서비스 주체를 하나 제공해야 하거나, AKS에서 사용자를 대신하여 서비스 주체를 하나 만듭니다. 관리 ID를 사용하는 경우 AKS에서 자동으로 생성합니다. 서비스 주체를 사용하는 클러스터의 경우 클러스터를 계속 작동하려면 서비스 주체를 결국 갱신해야 합니다. 서비스 주체 관리는 더 복잡하므로 대신 관리 ID를 사용하기가 더 쉽습니다. 서비스 주체와 관리 ID에는 둘 다 동일한 권한 요구 사항이 적용됩니다.

관리 ID는 기본적으로 서비스 주체의 래퍼이며 관리를 간단하게 만듭니다.

Azure Key Vault를 사용하여 키 및 비밀 관리

Azure Key Vault는 토큰, 암호, 인증서, API 키, 기타 비밀에 대한 액세스를 안전하게 저장하고 제어하는 데 사용할 수 있습니다. Azure Key Vault에서 애플리케이션 비밀의 스토리지를 중앙 집중화하면 배포를 제어할 수 있습니다. Key Vault를 사용하면 비밀이 우발적으로 유출될 가능성이 대폭 감소합니다. Key Vault를 사용하는 경우 애플리케이션 개발자가 더 이상 애플리케이션에 보안 정보를 저장할 필요가 없으므로 이 정보를 코드의 일부로 만들 필요가 없습니다. 예를 들어 애플리케이션이 데이터베이스에 연결해야 할 수 있습니다. 연결 문자열을 앱 코드에 저장하는 대신 Key Vault에 안전하게 저장할 수 있습니다.

애플리케이션 모니터링

Azure Monitor를 사용하여 애플리케이션과 인프라를 실시간으로 모니터링하여 코드의 이슈, 잠재적으로 의심스러운 활동과 변칙을 식별할 수 있습니다. Azure Monitor는 Azure Pipelines의 릴리스 파이프라인과 통합되어 품질 게이트의 자동 승인 또는 모니터링 데이터를 기반으로 릴리스 롤백 기능을 사용하도록 설정합니다.

Azure Application Insights 및 Azure Monitor를 사용하여 애플리케이션과 인프라를 모니터링하는 방법을 알아봅니다.

올바른 아키텍처 빌드

보안은 아키텍처에서 가장 중요한 요소입니다. 보안은 고의적인 공격 및 중요한 데이터 및 시스템의 남용에 대한 기밀성, 무결성 및 가용성 보증을 제공합니다. 이러한 보증을 잃으면 비즈니스 운영 및 수익뿐만 아니라 마켓플레이스에서 조직의 평판에 부정적인 영향을 미칠 수 있습니다.