다음을 통해 공유


DevOps에서 Azure로의 엔드투엔드 거버넌스

이 문서에서는 역할 기반 액세스 제어 권한과 같이 건전한 팀 거버넌스 사례를 신중하게 관리하고 구현하는 방법을 설명합니다.

Azure Portal 및 Azure CLI를 통한 액세스를 제한하는 ARM 템플릿(Azure Resource Manager 템플릿)에 대한 Azure RBAC(역할 기반 액세스 제어) 모델을 계획하고 구현하는 것으로는 충분하지 않습니다.

DevOps 자동화를 위해 이 모델을 미러링하지 않으면 조직에서 보안 백도어를 열어 둘 수 있습니다. 개발자가 ARM 템플릿을 통해 액세스할 수 없지만 애플리케이션 코드 또는 IaC(Infrastructure as Code)를 변경하고 자동화 워크플로를 트리거할 수 있는 충분한 권한이 있는 예제를 고려해 보세요. 개발자는 DevOps 통해 간접적으로 ARM 템플릿에 액세스하고 파괴적인 변경을 수행할 수 있습니다.

Microsoft Entra 그룹이 있는 단일 ID 관리 평면

첫 번째 단계는 Microsoft Entra ID를 통합하여 ID 관리 모범 사례별로 Single Sign-On을 사용하는 것입니다.

Azure DevOps와 같은 Azure 자사 CI 제품을 사용하지 않는 경우 공급업체가 Microsoft Entra 통합을 제공하는지 검사.

두 번째 단계는 ARM 템플릿 RBAC 모델에 이미 사용 중인 동일한 그룹인 Microsoft Entra 그룹을 사용하는 것입니다. 개인이 아닌 Microsoft Entra 그룹에 역할을 할당하는 것이 가장 좋습니다. 엔드투엔드 거버넌스 모델을 만들려면 ARM 템플릿 및 DevOps에 대해 이 단계를 수행해야 합니다.

Azure DevOps는 Microsoft Entra 그룹 멤버 자격을 포함하여 Microsoft Entra ID와 긴밀하게 통합되어 있으므로 동일한 Microsoft Entra 그룹에 역할 할당을 쉽게 적용할 수 있습니다.

참고 항목

다른 CI 공급업체를 사용하는 경우 그룹 멤버 자격을 관리하기 위한 중간 논리 컨테이너가 있을 수 있으며, Microsoft Entra 그룹 멤버 자격이 동기화되지 않은 경우에도 기본 확인해야 합니다.

다음 다이어그램에서는 Microsoft Entra ID를 단일 ID 관리 평면으로 사용하는 방법을 보여 줍니다. ARM 템플릿 및 DevOps 도구(이 예제의 Azure DevOps)에서는 멤버 자격이 아닌 역할 할당만 관리하면 되며, Microsoft Entra ID에서 관리해야 합니다. 리소스 이름은 Azure 리소스에 대한 권장 명명 규칙약어를 따릅니다.

Diagram of end-to-end governance and how to access to your Azure resources, both from ARM templates and CI/CD workflows

예제 시나리오: 단일 단계로 계약자 액세스 제거, Microsoft Entra 멤버 자격

엔드투엔드 거버넌스를 구체화하기 위해 예제 시나리오를 통해 이점을 살펴보겠습니다.

Microsoft Entra ID를 단일 ID 관리 평면으로 사용하는 경우 Microsoft Entra 그룹 멤버 자격을 조정하여 한 가지 작업으로 개발자의 Azure 리소스 액세스를 제거할 수 있습니다. 예를 들어 프로젝트 완료 시 계약자의 액세스 권한을 취소해야 하는 경우 관련 Microsoft Entra 그룹에서 계약자의 멤버 자격을 제거하면 ARM 템플릿 및 Azure DevOps에 대한 액세스가 제거됩니다.

역할 할당을 사용하는 RBAC 모델 미러링

적절하게 계획되면 CI 도구의 RBAC 모델이 Azure RBAC 모델을 긴밀하게 미러링합니다. 위의 다이어그램에 있는 Microsoft Entra 그룹 이름 예제는 보안 규칙을 의미하지만 멤버 자격만으로는 보안을 적용하지 않습니다. RBAC는 역할 할당을 만들어야만 적용되는 보안 주체, 정의 및 범위의 조합입니다.

Diagram of Microsoft Entra ID as a single identity management plane in Azure DevOps

  • 다이어그램은 단일 Microsoft Entra 그룹에 contoso-admins-group대한 역할 할당을 보여 줍니다.
  • 이 Microsoft Entra 그룹에는 여러 구독 범위에서 Azure ARM 템플릿에 대한 소유자 역할이 할당됩니다.
    • contoso-dev-sub 구독
    • contoso-prod-sub 구독
  • contoso-admins-group단일 프로젝트 범위의 Azure DevOps에 대한 프로젝트 관리자 그룹에 추가됩니다.

Microsoft Entra 그룹에는 ARM 템플릿과 DevOps 모두에 대해 비슷한 권한의 역할이 있습니다. 이 논리에 따라 ARM 템플릿에 대한 기여자 역할이 할당된 개발자 그룹이 있는 경우 DevOps에 대한 프로젝트 관리자 그룹에 속하지 않을 것으로 예상됩니다.

이제 ARM 템플릿 및 DevOps 워크플로를 보호해야 하는 필요성을 이해했으므로 다음을 수행해야 합니다.

  • RBAC 모델을 검토하고 ARM 템플릿에 대해 정의한 역할 및 책임이 CI/CD 워크플로와 어떻게 일치하는지 생각해 보세요.
  • CI 플랫폼의 ID 관리 솔루션을 검토하고 Microsoft Entra ID를 통합합니다. 이상적으로는 Microsoft Entra 그룹 멤버 자격을 포함하려고 합니다.
  • CI 도구에서 제공하는 역할 및 액세스 수준을 검토하고 Azure RBAC 모델과 비교합니다. 역할 및 액세스 수준은 일대일로 매핑되지 않습니다. 구성을 확인합니다. 개발자가 ARM 템플릿에 대한 액세스 권한이 없는 경우 DevOps에 대한 액세스 권한이 없어야 합니다. 가장 간단한 예제에서 프로덕션 리소스에 대한 쓰기 권한이 없는 개발자는 프로덕션 파이프라인 실행을 트리거하기 위한 직접 액세스 권한이 없어야 합니다.

거버넌스 디자인 및 권한에 대한 자세한 내용은 다음을 참조하세요.

다음 단계

ARM 템플릿 및 DevOps 워크플로를 보호해야 할 필요성을 이해했으므로 이제 안전한 방식으로 비밀을 관리하는 방법을 알아봅니다.