Azure Well-Architected Framework는 뛰어난 아키텍처의 핵심 요소를 통해 솔루션에 액세스하는 데 사용될 수 있는 안내 테넌트 세트입니다.
이 문서는 이 시리즈의 마지막 문서입니다. 소개를 읽어보세요.
이 시리즈에서 제공하는 이 지침은 모든 디자인 선택에 Well-Architected 원칙을 통합합니다. 이 문서에서는 이러한 선택 사항을 요약합니다. GitHub: 규제된 워크로드에 대한 AKS(Azure Kubernetes Service) 기준 클러스터에서는 이러한 원칙을 보여 줍니다(해당하는 경우).
PCI DSS 3.2.1 워크로드는 잘 설계된 솔루션의 엄격함을 요구합니다. 인프라를 PCI 요구 사항에 맞추는 것이 중요하지만 호스팅 인프라에서 규정을 준수해야 합니다. 핵심 요소, 특히 보안을 해결하지 않으면 규정 준수가 어려워질 수 있습니다. 잘 설계된 솔루션은 인프라와 워크로드 관점을 모두 결합하여 엄격한 규정 준수 요구 사항을 해결합니다.
보안
보안 디자인 원칙에 제공된 기본 지침을 따릅니다. 규제 환경 모범 사례는 다음 섹션에 요약되어 있습니다.
거버넌스
거버넌스 구현은 PCI-DSS 3.2.1의 규정 준수 요구 사항에 따라 결정됩니다. 이는 구분 유지 관리, 리소스 액세스, 취약성 검색 및 가장 중요한 고객 데이터 보호에 대한 기술 컨트롤에 영향을 줍니다.
엔터프라이즈 구분 전략
완전한 격리를 유지하려면 독립 실행형 구독에 규제된 인프라를 배포하는 것이 좋습니다. 규정 준수에 필요한 구독이 여러 개 있으면 범위 내 구독에서 관련 Azure 정책을 균일하게 적용하는 관리 그룹 계층 구조로 그룹화하는 것이 좋습니다. 구독 내에서 관련 Azure 정책을 구독 수준에서 적용하여 CDE(카드 소유자 데이터 환경)의 모든 클러스터에 적용해야 하는 다양한 정책을 캡처합니다. 리소스 그룹 수준에서 관련 Azure 정책을 적용하여 특정 클러스터 인스턴스에 적용되는 정책을 캡처합니다. 이러한 정책은 랜딩 존의 핵심 가드 레일을 빌드합니다.
PCI 워크로드(범위 내)를 작업 및 연결 측면에서 다른(범위 외) 워크로드에서 격리합니다. 별도의 클러스터를 배포하여 격리를 만들 수 있습니다. 또는 구분 전략을 사용하여 분리를 유지합니다. 예를 들어 클러스터는 워크로드가 노드 VM(가상 머신)을 공유하지 않도록 별도의 노드 풀을 사용합니다.
정책 적용
Azure 정책을 사용하여 보안 제어를 적용합니다. 예를 들어 이 규제 아키텍처에서 잘못된 카드 소유자 데이터 환경 구성을 방지할 수 있습니다. VM 노드에서 공용 IP 할당을 허용하지 않는 Azure 정책을 적용할 수 있습니다. 이러한 할당이 검색되어 보고되거나 차단됩니다.
AKS에 사용할 수 있는 정책에 대한 자세한 내용은 Azure Kubernetes Service에 대한 Azure Policy 기본 제공 정의를 참조하세요.
Azure는 대부분의 서비스에 몇 가지 기본 제공 정책을 제공합니다. 이러한 Azure Policy 기본 제공 정책 정의를 검토하고 적절하게 적용합니다.
규정 준수 모니터링
규정 준수는 체계적으로 모니터링되고 유지되어야 합니다. 정기적인 규정 준수 증명이 수행됩니다. 클라우드 리소스가 규정을 준수하는지 여부를 알면 증명과 감사를 준비하는 데 도움이 됩니다.
클라우드용 Microsoft Defender의 규정 준수 대시보드를 활용합니다. 대시보드를 지속적으로 모니터링하여 워크로드의 규정 준수 상태를 추적할 수 있습니다.
네트워크 보안
허브 스포크 토폴로지에서 엔터티마다 별도의 가상 네트워크가 있으면 네트워킹 공간의 기본 구분이 제공됩니다. 각 네트워크는 서브넷으로 추가 구분됩니다.
AKS 클러스터는 CDE의 핵심을 형성합니다. 공용 IP 주소에서 액세스할 수 없으며 연결을 보호해야 합니다. CDE 내외부의 일반적인 흐름은 다음과 같이 분류될 수 있습니다.
- 클러스터에 대한 인바운드 트래픽
- 클러스터에서 아웃바운드 트래픽
- 클러스터 내 Pod 간 트래픽
규제된 환경의 요구 사항을 충족하기 위해 클러스터는 프라이빗 클러스터로 배포됩니다. 이 모드에서는 공용 인터넷을 오가는 트래픽이 제한됩니다. AKS 관리되는 Kubernetes API 서버와의 통신도 비공개입니다. 엄격한 네트워크 컨트롤과 IP 방화벽 규칙을 통해 보안이 더욱 강화되었습니다.
- NSG(네트워크 보안 그룹)를 사용하면 네트워크 내 리소스 간의 통신을 보호할 수 있습니다.
- Azure Firewall을 사용하여 클라우드 리소스, 인터넷 및 온-프레미스 간의 아웃바운드 트래픽을 필터링합니다.
- Azure Application Gateway는 Azure Web Application Framework와 통합되어 Azure Application Gateway에서 가로채는 인터넷의 모든 인바운드 트래픽을 필터링합니다.
- Kubernetes NetworkPolicy는 클러스터 내 Pod 간의 특정 경로만 허용합니다.
- Azure Private Link는 운영 작업에 사용되는 Azure Key Vault 및 Azure Container Registry와 같은 다른 Azure PaaS(Platform as a Service) 서비스에 연결됩니다.
모니터링 프로세스는 트래픽이 예상대로 흐르고 변칙이 검색되고 보고되는지 확인하기 위해 마련되었습니다.
네트워크 보안에 대한 자세한 내용은 네트워크 구분을 참조하세요.
데이터 보안
PCI-DSS 3.2.1을 사용하려면 전송 중 또는 저장 중 여부에 관계없이 모든 CHD(카드 소유자 데이터)가 절대로 명확하지 않아야 합니다.
이 아키텍처와 구현은 워크로드가 아닌 인프라에 집중하므로 데이터 관리는 표시되지 않습니다. 다음은 잘 설계된 권장 사항 중 일부입니다.
미사용 데이터
데이터는 업계 표준 암호화 알고리즘을 통해 암호화되어야 합니다.
- 카드 소유자 환경에 데이터를 저장하지 마세요.
- 스토리지 레이어 외부에서 암호화합니다.
- 암호화된 데이터만 스토리지 매체에 씁니다.
- 스토리지 레이어에 키를 저장하지 마세요.
Azure Storage의 모든 데이터는 강력한 암호화를 통해 암호화되고 암호 해독됩니다. 자체 관리형 암호화 키가 선호됩니다.
데이터를 임시 저장해야 하는 경우 해당 데이터에 동일한 고려 사항을 적용합니다. AKS의 호스트 암호화 기능을 사용하는 것이 좋습니다. 기본 제공 Azure 정책을 사용하여 임시 데이터 암호화를 적용할 수 있습니다.
스토리지 기술을 선택할 때 보존 기능을 살펴봅니다. 구성된 시간이 만료되면 모든 데이터가 안전하게 제거되었는지 확인합니다.
또한 표준에서는 SAD(중요한 인증 데이터)가 저장되지 않도록 요구합니다. 데이터가 로그, 파일 이름, 캐시 및 기타 데이터에 노출되지 않았는지 확인합니다.
전송 중 데이터
CDE와 상호 작용하는 엔터티와의 모든 통신은 암호화된 채널을 통해 수행해야 합니다.
- HTTPS 트래픽만 CDE로 흐를 수 있어야 합니다. 이 아키텍처에서 Azure Application Gateway는 포트 80을 통해 모든 트래픽을 거부합니다.
- CDE 외부에서 데이터를 암호화하고 암호 해독하지 않는 것이 좋습니다. 이 경우 해당 엔터티를 CDE의 일부로 간주합니다.
- CDE 내에서 mTLS를 사용하여 Pod 간에 보안 통신을 제공합니다. 이를 위해 서비스 메시를 구현할 수 있습니다.
- 보안 암호화와 TLS 1.2 이상만 허용합니다.
ID
액세스 정책을 디자인할 때 다음 보안 원칙을 따릅니다.
- Zero-Trust 정책부터 시작합니다. 필요에 따라 예외를 만듭니다.
- 작업을 완료하는 데 충분한 최소 권한을 부여합니다.
- 고정 액세스를 최소화합니다.
Kubernetes RBAC(역할 기반 액세스 제어)는 Kubernetes API에 대한 권한을 관리합니다. AKS에서는 이러한 Kubernetes 역할을 지원합니다. AKS는 Microsoft Entra ID와 완전하게 통합되어 있습니다. 역할에 Microsoft Entra ID를 할당하고 다른 기능을 활용할 수도 있습니다.
Zero-Trust 액세스
Kubernetes RBAC, Azure RBAC 및 Azure 서비스는 기본적으로 모두 거부를 구현합니다. 해당 설정을 신중하게 재정의하여 필요한 엔터티에만 액세스할 수 있게 합니다. Zero-Trust를 구현할 수 있는 또 다른 영역은 클러스터 노드에 대한 SSH 액세스를 사용하지 않는 것입니다.
최소 권한
Azure 리소스와 Pod에 대한 관리 ID를 사용하고 범위를 예상 작업으로 지정할 수 있습니다. 예를 들어 Azure Application Gateway에는 Azure Key Vault에서 비밀(TLS 인증서)을 가져올 수 있는 권한이 있어야 합니다. 비밀을 수정할 수 있는 권한이 없어야 합니다.
고정 액세스 최소화
Just-In-Time Microsoft Entra 그룹 멤버 자격을 사용하여 고정 액세스를 최소화합니다. Microsoft Entra ID의 조건부 액세스 정책을 사용하여 컨트롤을 강화합니다. 이 옵션에서는 다단계 인증, Microsoft Entra 테넌트에서 관리하는 디바이스에 대한 인증 제한 또는 비정형 로그인 시도 차단과 같은 다양한 사용 사례를 지원합니다.
비밀 관리
CDE 외부에 비밀, 인증서, 키 및 암호를 저장합니다. 네이티브 Kubernetes 비밀 개체나 관리되는 키 저장소(예: Azure Key Vault)를 사용할 수 있습니다. 관리 저장소 사용은 키 회전 및 인증서 갱신과 같은 비밀 관리 작업에 도움이 됩니다.
키 저장소에 대한 액세스에서 네트워크 제어와 액세스 제어가 결합되어 있는지 확인합니다. 관리 ID를 사용하면 클러스터에서 액세스 권한을 가져오려면 Key Vault에 대해 자체적으로 인증해야 합니다. 또한 공용 인터넷을 통해 키 저장소에 연결해서는 안 됩니다. Private Link와 같은 프라이빗 네트워크를 사용합니다.
운영 효율성
운영 우수성 원칙에 제공된 기본 지침을 따릅니다. 규제 환경 모범 사례는 다음 섹션에 요약되어 있습니다.
역할 분리
규제 환경에 대한 의무를 명확하게 분리하는 것이 중요합니다. 워크로드의 요구 사항 및 CDE와의 상호 작용에 따라 역할과 책임을 정의합니다. 예를 들어 클러스터 및 종속 서비스와 관련된 작업에 인프라 운영자 또는 SRE(사이트 안정성 엔지니어) 역할이 필요할 수 있습니다. 이 역할은 보안, 격리, 배포 및 가시성을 유지해야 합니다. 이러한 정의를 공식화하고 해당 역할에서 필요한 권한을 결정합니다. 예를 들어 SRE에는 클러스터 액세스에 대한 높은 권한이 있지만 워크로드 네임스페이스에 대한 읽기 액세스 권한이 필요합니다.
워크로드 격리
PCI-DSS 3.2.1을 사용하려면 작업 측면에서 다른 워크로드로부터 PCI 워크로드를 격리해야 합니다. 이 구현에서는 범위 내 워크로드와 범위를 벗어난 워크로드가 개별 사용자 노드 풀 두 개로 분할됩니다. 범위 내 애플리케이션 개발자와 범위를 벗어난 워크로드의 개발자에게는 서로 다른 사용 권한 세트가 있을 수 있습니다. 또한 별도의 품질 제어가 있습니다. 예를 들어 범위 내 코드에는 규정 준수 및 증명이 적용되지만 범위를 벗어난 코드에는 적용되지 않습니다. 또한 별도의 빌드 파이프라인과 릴리스 관리 프로세스가 필요합니다.
운영 메타데이터
PCI DSS 3.2.1 표준의 요구 사항 12를 사용하려면 워크로드 인벤토리와 직원 액세스 문서에 대한 정보를 유지해야 합니다. Azure 리소스, 리소스 그룹 및 구독을 사용하여 환경 정보를 수집할 수 있으므로 Azure 태그를 사용하는 것이 좋습니다.
인프라와 워크로드의 일부인 승인된 솔루션에 대한 정보를 유지합니다. 여기에는 CDE로 가져오는 VM 이미지, 데이터베이스, 선택한 타사 솔루션의 목록이 포함됩니다. 서비스 카탈로그를 빌드하여 해당 프로세스를 자동화할 수도 있습니다. 특정 구성으로 승인된 솔루션을 사용하여 셀프 서비스 배포를 제공해 진행 중인 플랫폼 운영을 준수합니다.
가시성
요구 사항 10을 충족하려면 CDE에 대한 가시성이 규정 준수에 중요합니다. 활동 로그는 계정과 비밀 관리, 진단 설정 관리, 서버 관리와 관련된 작업과 기타 리소스 액세스 작업에 대한 정보를 제공합니다. 모든 로그는 날짜, 시간, ID 및 기타 자세한 정보와 함께 기록됩니다. Azure Monitor 로그에서 데이터 보존 및 보관 정책을 구성하여 최대 1년 동안 로그를 보존합니다.
로그가 필요한 역할에서만 로그에 액세스해야 합니다. Log Analytics 및 Microsoft Sentinel은 감사 내역 액세스를 관리하기 위한 다양한 역할 기반 액세스 제어를 지원합니다.
응답 및 수정
Azure 모니터링 서비스인 Azure Monitor 및 클라우드용 Microsoft Defender는 비정상 활동을 검색할 때 알림 또는 경고를 생성할 수 있습니다. 이러한 경고에는 심각도, 상태 및 활동 시간과 같은 컨텍스트 정보가 포함됩니다. 경고가 생성되면 수정 전략을 갖추고 진행 상황을 검토합니다. 데이터를 통합하면 풍부한 경고 컨텍스트를 제공할 수 있으므로 SIEM(보안 정보 및 이벤트 관리) 솔루션에서 데이터를 중앙 집중화하는 것이 좋습니다.
클라우드용 Microsoft Defender의 보안 경고 보기에서 클라우드용 Microsoft Defender가 리소스에서 검색하는 모든 경고에 액세스할 수 있습니다. 문제가 해결되도록 심사 프로세스를 마련합니다. 보안 팀과 협력하여 워크로드 소유자가 관련 경고를 사용할 수 있는 방법을 파악합니다.
성능 효율성
성능 효율성 원칙에 제공된 기본 지침을 따릅니다. 규제 환경 모범 사례는 다음 섹션에 요약되어 있습니다.
크기 조정
환경이 변화하는 요구 사항에 맞게 조정되는 방식을 관찰하면 부하가 높은 환경의 예상 런타임 동작이 나타냅니다. 워크로드의 리소스 자동 크기 조정은 CDE에서 사람 상호 작용을 최소화합니다. 추가된 보안 혜택은 항상 공격 노출 영역을 줄이는 것입니다. scale-to-zero 방식을 지원하는 리소스를 활용하여 혜택을 극대화할 수 있습니다. 예를 들어 AKS에서는 사용자 노드 풀을 0으로 축소할 수 있습니다. 자세한 내용은 사용자 노드 풀을 0으로 크기 조정을 참조하세요.
분할
분할은 규제된 워크로드의 성능 효율성에 대한 핵심 요소입니다. 특정 구성 요소를 사용하면 책임을 명확히 정의할 수 있으며 네트워크 정책과 같은 정밀한 제어에 도움이 됩니다. 구분 전략과 마찬가지로 분할은 구성 요소를 격리하고 예기치 않은 실패나 시스템 손상의 영향을 제어합니다.
공유 없음 아키텍처
공유 없음 아키텍처는 공동 배치된 워크로드 간의 경합을 제거하도록 설계되었습니다. 또한 단일 실패 지점을 제거하는 전략입니다. 규제 환경에서 구성 요소는 논리적 경계나 물리적 경계에 의해 격리되어야 합니다. 이는 공유 없는 아키텍처와 일치하므로 확장성 혜택이 제공됩니다. 또한 관련 보안 컨트롤을 대상으로 지정하고 다양한 구성 요소의 성능을 엄격하게 감사할 수 있습니다.
경량 워크로드
워크로드 복잡성을 문서화하고 감사하기가 어렵습니다. 성능상의 이점과 규제 기관 요구 사항 감사용이성 때문에 간소화되도록 노력합니다. 공격 노출 영역과 오용 또는 잘못된 구성 가능성이 증가하므로 필요 이상의 선택 사항을 재고합니다.
안정성
감사 목적으로 일관되게 설명할 수 있도록 규제된 환경의 안정성을 예측해야 합니다. 안정성 원칙에 제공된 기본 지침을 따릅니다. 규제 환경 모범 사례는 다음 섹션에 요약되어 있습니다.
복구 대상 및 재해 복구
규제된 워크로드에서 처리되는 데이터의 중요한 특성으로 인해 복구 대상과 RPO(복구 지점 목표)를 정의하는 것이 중요합니다. CHD의 허용 가능한 손실은 무엇인가요? CDE 내 복구 작업에는 여전히 표준 요구 사항이 적용됩니다. 실패를 예상하며 역할, 책임 및 정당화된 데이터 액세스에 부합하는 실패에 대한 명확한 복구 계획을 마련합니다. 라이브 사이트 문제는 규정에서 벗어나는 정당화가 아닙니다. 이는 특히 전체 재해 복구 상황에서 중요합니다. 요구 사항을 준수하고 예기치 않은 CDE 또는 CHD 액세스를 최소화하는 명확한 재해 복구 문서가 있어야 합니다. 복구 후에는 항상 복구 프로세스 단계를 검토하여 예기치 않은 액세스가 발생하지 않았는지 확인합니다. 이러한 인스턴스에 대한 비즈니스 타당성을 문서화합니다.
복구
아키텍처에 복원 전략과 복구 전략을 추가하면 CDE에 대한 임시 액세스 필요성을 방지할 수 있습니다. 시스템은 사람이 직접 개입할 필요 없이 정의된 RPO에서 자체 복구될 수 있어야 합니다. 이렇게 하면 긴급 액세스 권한이 부여된 개인에게도 CHD의 불필요한 노출을 제거할 수 있습니다. 복구 프로세스를 감사할 수 있어야 합니다.
보안 관련 위험 해결
보안 위험이 워크로드 가동 중지 시간 및 데이터 손실의 원인일 수 있으므로 이를 검토합니다. 보안에 대한 투자는 워크로드 안정성에도 영향을 미칩니다.
운영 프로세스
안정성은 CDE 내 및 인접한 모든 운영 프로세스로 확장됩니다. 이미지 빌드 및 점프 박스 관리 요소와 같은 문제에 대해 잘 정의되고 자동화되고 테스트된 프로세스를 잘 설계된 솔루션으로 전환합니다.
비용 최적화
비용 최적화 원칙에 제공된 기본 지침을 따릅니다.
규정 준수 요구 사항과 엄격한 보안 컨트롤로 인해 명확한 장단점은 비용이 됩니다. 가격 계산기를 사용하여 초기 예상치를 확인하는 것이 좋습니다.
다음은 이 아키텍처에서 사용하는 주요 리소스의 비용 영향에 대한 개략적인 표현입니다.
주 드라이버는 노드 풀과 Azure Firewall을 구성하는 가상 머신 확장 집합입니다. 또 다른 기여자는 Log Analytics입니다. 선택한 플랜에 따라 클라우드용 Microsoft Defender와 관련된 증분 비용도 있습니다.
서비스 가격 구성 요소를 명확하게 이해합니다. Azure는 계량된 사용량을 추적합니다. 이 아키텍처에 대한 Azure Firewall 드릴다운은 다음과 같습니다.
Azure Firewall과 같은 일부 리소스와 관련된 비용은 여러 사업부 또는 애플리케이션에 분산될 수 있습니다. 비용을 최적화하는 또 다른 방법은 조직 내에서 다중 테넌트 클러스터를 호스트하여 워크로드 다양성으로 밀도를 극대화하는 것입니다. 그러나 규제된 워크로드에는 이 방법을 사용하지 않는 것이 좋습니다. 항상 비용 혜택보다 규정 준수와 구분을 우선시합니다.
예산 제약 조건을 유지하기 위해 비용을 제어하는 몇 가지 방법에는 Azure Application Gateway 인프라 조정, 자동 크기 조정에 대한 인스턴스 수 설정, PCI-DSS 3.2.1에 필요한 감사 내역을 충족하는 한 로그 출력 감소 등이 있습니다. 항상 이러한 선택 사항을 SLA를 충족할 수 있는 디자인의 다른 측면에 대한 장단점과 평가합니다. 예를 들어, 여전히 트래픽 급증에 맞게 규모를 조정할 수 있나요?
Azure 리소스 그룹을 만들 때 비용을 추적할 수 있도록 태그를 적용합니다. Azure Advisor 및 Microsoft Cost Management 같은 비용 관리 도구를 사용하여 비용을 추적하고 분석합니다.
Kubernetes 특정 구문별로 세분화된 클러스터 인프라 비용 할당에 AKS 비용 분석을 사용하도록 설정하는 것이 좋습니다.