Azure Container Apps는 안전한 컨테이너화된 애플리케이션을 빌드하는 데 도움이 되는 몇 가지 기본 제공 보안 기능을 제공합니다. 이 가이드에서는 관리 ID, 비밀 관리 및 토큰 저장소를 비롯한 주요 보안 원칙을 살펴보고 안전하고 확장 가능한 애플리케이션을 설계하는 데 도움이 되는 모범 사례를 제공합니다.
관리되는 아이덴티티
관리 ID는 Microsoft Entra ID에 자동으로 관리 ID를 제공하여 코드 또는 구성에 자격 증명을 저장할 필요가 없습니다. 컨테이너 앱은 이러한 ID를 사용하여 Azure Key Vault, Azure Storage 또는 Azure SQL Database와 같은 Microsoft Entra 인증을 지원하는 모든 서비스에 인증할 수 있습니다.
관리 ID 형식
Azure Container Apps는 다음 두 가지 유형의 관리 ID를 지원합니다.
시스템 할당 ID: 컨테이너 앱의 수명 주기를 사용하여 자동으로 만들어지고 관리됩니다. 앱이 삭제되면 ID가 삭제됩니다.
사용자 할당 ID: 독립적으로 만들어지고 여러 컨테이너 앱에 할당될 수 있으므로 리소스 간에 ID 공유를 허용합니다.
Azure Container Apps 관리 ID의 보안 이점
- 애플리케이션 코드에서 자격 증명을 관리하고 회전할 필요가 없습니다.
- 구성 파일에서 자격 증명 노출 위험을 줄입니다.
- Azure RBAC를 통해 세분화된 액세스 제어 제공
- 필요한 권한만 부여하여 최소 권한 원칙을 지원합니다.
시스템 할당 ID와 사용자 할당 ID 중에서 선택
다음과 같은 워크로드에 시스템 할당 ID 를 사용합니다.
- 단일 리소스 내에 포함됨
- 독립 ID 필요
다음과 같은 워크로드에 사용자 할당 ID 를 사용합니다.
- 단일 ID를 공유하는 여러 리소스에서 실행
- 리소스를 보호하려면 사전 인증이 필요합니다.
이미지 가져오기를 위한 관리 ID
일반적인 보안 패턴은 관리 ID를 사용하여 Azure Container Registry의 프라이빗 리포지토리에서 이미지를 끌어오는 것입니다. 이 방법은 다음과 같습니다.
- 레지스트리에 관리 자격 증명을 사용하지 않도록 방지
- ACRPull 역할을 통해 세분화된 액세스 제어 제공
- 시스템 할당 ID와 사용자 할당 ID를 모두 지원합니다.
- 특정 컨테이너에 대한 액세스를 제한하도록 제어할 수 있습니다.
자세한 내용은 애플리케이션에 대한 관리 ID 설정 방법과, 관리 ID를 사용하여 Azure Container Registry에서 이미지를 끌어오는 방법에 대해 Managed identities 및 Image pull from Azure Container Registry with managed identity를 참조하세요.
비밀 관리
Azure Container Apps는 연결 문자열, API 키 및 인증서와 같은 중요한 구성 값을 안전하게 저장하고 액세스하는 기본 제공 메커니즘을 제공합니다.
주요 비밀 관리 기능
- 비밀 격리: 비밀을 애플리케이션 수준으로 범위 지정하고 특정 수정 버전에서 격리합니다.
- 환경 변수 참조: 컨테이너에 비밀을 환경 변수로 노출합니다.
- 볼륨 탑재: 시크릿을 컨테이너 안에 파일로 탑재합니다.
- Key Vault 통합: Azure Key Vault에 저장된 비밀을 참조합니다.
비밀 관리에 대한 모범 사례
- 프로덕션 환경용 Container Apps에 직접 비밀을 저장하지 마세요.
- 중앙 집중식 비밀 관리에 Azure Key Vault 통합을 사용합니다.
- 비밀에 대한 액세스 권한을 부여할 때 최소 권한을 구현합니다.
- 하드 코딩 값 대신 환경 변수에서 비밀 참조를 사용합니다.
- 적절한 경우 볼륨 탑재를 사용하여 비밀을 파일로 액세스합니다.
- 적절한 비밀 순환 관행을 구현합니다.
자세한 내용은 Azure Key Vault 인증서를 사용하여 애플리케이션에 대한 비밀 관리를 설정하는 방법을 알아봅니다.
인증 보안을 위한 토큰 저장소
토큰 저장소 기능은 애플리케이션 코드와 독립적으로 인증 토큰을 관리하는 안전한 방법을 제공합니다.
인증 토큰 저장소의 작동 방식
- 시스템은 Azure Blob Storage 토큰을 저장하여 애플리케이션 코드와 별도로 유지합니다.
- 연결된 사용자만 캐시된 토큰에 액세스할 수 있습니다.
- Container Apps는 토큰 새로 고침을 자동으로 처리합니다.
- 이 기능은 사용자 지정 토큰 관리 코드를 제거하여 공격 노출 영역을 줄입니다.
자세한 내용은 애플리케이션에 대한 토큰 저장소를 설정하는 방법에 대한 자세한 내용은 인증 토큰 저장소 사용을 참조하세요.
네트워크 보안
적절한 네트워크 보안 조치를 구현하면 무단 액세스 및 잠재적 위협으로부터 워크로드를 보호할 수 있습니다. 또한 앱과 다른 서비스 간의 보안 통신을 가능하게 합니다.
Azure Container Apps의 네트워크 보안에 대한 자세한 내용은 다음 문서를 참조하세요.
- WAF Application Gateway 구성
- UDR(사용자 정의 경로) 사용
- 규칙 기반 라우팅
기밀 컴퓨팅(미리 보기)
Azure Container Apps 하드웨어 기반 TEE(신뢰할 수 있는 실행 환경) 내에서 컨테이너화된 워크로드를 실행하는 기밀 컴퓨팅 워크로드 프로필을 포함합니다. 기밀 컴퓨팅은 코드 실행 전에 메모리 암호화 및 환경 증명을 통해 사용 중인 데이터를 보호하여 미사용 및 전송 중인 Azure 암호화를 보완합니다. 이 기능은 클라우드 운영자의 액세스를 포함하여 중요한 워크로드에 대한 무단 액세스의 위험을 줄이는 데 도움이 됩니다.
애플리케이션이 규제되거나 매우 중요한 데이터를 처리하고 증명 기반 보증이 필요한 경우 기밀 컴퓨팅 워크로드 프로필을 사용합니다. 지원되는 지역 및 플랫폼 기능에 대한 개요는 Azure 기밀 컴퓨팅 참조하세요.
구성에 대한 자세한 내용은 Azure Container Apps의 기밀 컴퓨팅을(를) 참조하세요.
클라우드용 Microsoft Defender의 서버리스 컨테이너 보안 상태(미리 보기)
클라우드용 Microsoft Defender에는 Azure Container Apps용 CSPM에 서버리스 컨테이너 상태 관리 기능이 포함됩니다. 이러한 기능은 보안 팀이 컨테이너 앱 환경에서 위험을 식별하고 우선 순위를 지정할 수 있도록 Azure Container Apps 워크로드에 대한 인벤토리, 자세 평가 및 공격 경로 분석을 제공합니다. 온보딩 지침 및 기능 세부 정보는 서버리스 보호를 참조하세요.