Microsoft AZ-500: 데이터, 스토리지 및 데이터베이스 보안 — 학습 가이드
다음의 일부입니다: Microsoft Azure Security Engineer Associate AZ-500 — 학습 가이드. 검증된 답안으로 연습하기: Microsoft 시험 허브, 또는 다음에서 시간 제한 모의고사 풀기: ExamRoll.io.
개요
Azure 데이터, 스토리지, 데이터베이스 보안의 핵심은 신뢰 최소화, 데이터 플레인 격리, 모든 구간 암호화, 그리고 감사 가능한 액세스 경로를 통한 최소 권한 원칙 운영에 있습니다. 이 섹션에서는 Azure Storage, Azure SQL, Azure Cosmos DB를 강화하고, 올바른 ID 및 키 전략을 선택하며, 데이터 유출을 방지하는 방법을 설명합니다. 설명된 모든 제어 방법에는 운영상의 근거가 함께 제공되므로, 프로덕션 환경에서 구성을 정당화하고 유지 관리할 수 있습니다.
Azure Storage 계정 및 데이터 액세스 보안
Storage 계정 권한 부여 및 공유
- Azure Storage용 Azure RBAC: Storage Blob Data Reader/Contributor와 같은 기본 제공 역할을 통해 Azure AD 기반 권한 부여(Blob 및 Queue)를 선호합니다. 근거: 조건부 액세스를 통한 토큰 기반의 시간 제한적 액세스이며, Entra ID에 로깅됩니다. 영구적인 계정 키 사용을 피하고 Just-In-Time 할당을 지원합니다.
- 공유 키: 계정의 기본/보조 키는 전체 데이터 플레인 권한을 부여합니다. 코드에서 키 사용을 비활성화하고 자주 순환시켜야 합니다. 근거: 공유 키는 사용자 바인딩이나 조건부 액세스(CA)가 없는 전달자 비밀(bearer secret)입니다. 유출 시 전체 데이터가 노출됩니다.
- SAS 유형:
- 서비스 SAS: 특정 리소스(blob, file, queue, table)에 대해 권한, IP, 프로토콜, 시간 제한이 있는 범위 지정 액세스를 부여합니다. 근거: AD 토큰을 사용할 수 없는 앱을 위한 정밀한 최소 권한 원칙을 적용할 수 있습니다.
- 계정 SAS: 더 넓은 범위(예: 여러 서비스에 걸쳐)를 가지므로 신중하게 사용해야 합니다. 근거: 유출 시 영향 반경(blast radius)이 확장됩니다.
- 사용자 위임 SAS: Blob에 대해 Azure AD와 사용자 위임 키를 사용하여 발급됩니다. 근거: Azure AD ID 및 조건부 액세스(CA)에 바인딩되어 감사 및 해지 기능이 우수합니다.
- 저장된 액세스 정책: 컨테이너/공유에서 SAS에 대한 재사용 가능한 제약 조건(만료, 권한)을 정의합니다. 정책을 해지하거나 업데이트하면 해당 정책에 따라 발급된 SAS가 무효화됩니다. 근거: 클라이언트에 내장된 토큰을 다시 생성하지 않고 중앙에서 해지할 수 있습니다.
예시: Azure AD로 blob에 대한 사용자 위임 SAS 생성하기
az storage blob generate-sas \
--account-name mystorage \
--container-name data \
--name report.csv \
--permissions r \
--expiry 2026-12-31T23:59Z \
--as-user \
--auth-mode login
유형별 서비스 보안
- Blob/Queue/Table: 지원되는 경우(Blob, Queue) Azure AD RBAC를 사용합니다. AllowBlobPublicAccess를 false로 설정하고, HTTPS를 요구하며, 버전 관리 및 일시 삭제(soft delete)를 활성화합니다. 근거: 익명 노출 경로를 제거하고 복구 가능성을 확보합니다.
- Azure Files: SMB에 대해 Entra ID(또는 AD DS 통합)와 함께 Azure AD Kerberos를 사용하고, 최소 권한의 공유/파일 권한을 강제합니다. SMB 암호화를 요구합니다. 근거: SMB를 통한 전송 보안을 갖춘 ID 기반 액세스이며, 사용자 공간에 공유 키가 없습니다.
- Table service: 엄격한 IP/시간 제약 조건이 있는 SAS를 사용하고 계정 SAS는 피합니다. 근거: 서비스 수준의 세분성이 풍부하지 않으므로, 범위를 적극적으로 좁혀야 합니다.
모든 스토리지 서비스를 위한 네트워크 격리
- Storage 방화벽 규칙: Private Link를 사용할 수 없는 경우에만 선택된 공용 IP 범위로 제한합니다. 근거: 공격 표면을 줄이지만 여전히 공용 인터넷을 통과합니다.
- 프라이빗 엔드포인트: Blob, Queue, Table, Files에 대해 Private Link를 선호합니다. 프라이빗 DNS 영역을 리소스별 이름에 매핑합니다. 공용 네트워크 액세스를 ‘사용 안 함(Disabled)‘으로 설정합니다. 근거: 트래픽이 Azure 백본에 유지되고, 프라이빗 DNS를 통해 리소스 ID가 검증되며, 유사 서비스로의 데이터 유출을 완화합니다.
- 서비스 엔드포인트 및 정책: Private Link를 사용할 수 없는 경우, 서비스 엔드포인트를 활성화하고 서비스 엔드포인트 정책을 적용하여 특정 스토리지 계정으로의 송신(egress)을 제한합니다. 근거: 가상 네트워크 송신을 통한 트래픽도 제한하여, 공격자가 소유한 계정으로 데이터가 전송될 위험을 줄입니다.
표준화할 운영 설정
- HTTPS만 강제하고, 최소 TLS 1.2를 적용합니다.
- AD를 사용하는 경우 Blob 및 Queue에 대한 공유 키 액세스를 비활성화합니다(기능 지원 여부에 따라 다름).
- 규제 준수 보존 및 랜섬웨어 복원력을 위해 중요한 컨테이너/공유에 불변성 정책을 적용합니다.
암호화 및 키 관리
미사용 데이터 암호화(Encryption at rest) 계층
- 서비스 관리형 키(SMK): Azure에서 관리하는 기본 서버 측 암호화입니다. 근거: 운영 오버헤드가 없으며 많은 워크로드에 적합합니다.
- 고객 관리형 키(CMK): Storage, SQL, Cosmos DB에 대해 Key Vault 또는 Managed HSM에 있는 키를 사용합니다. 근거: 신뢰 경계를 외부화하고, 고객이 순환/해지를 제어하며, 규정 준수 증거를 확보할 수 있습니다.
- 인프라 암호화(이중 암호화): 별도의 키를 사용하는 추가 암호화 계층입니다. 근거: 스토리지 미디어 암호화가 우회되거나 암호화 경계가 손상될 경우를 대비한 심층 방어(defense-in-depth)입니다.
키 순환 및 운영
- SMK는 자동으로 순환되므로 별도의 조치가 필요 없습니다.
- CMK는 새 키 버전을 만들고, 래핑/래핑 해제 권한을 부여한 후, 리소스가 최신 버전을 가리키도록 다시 지정하여 순환합니다(또는 버전 없는 키 참조가 지원되는 경우 사용). 근거: 감사 가능한 변경을 통한 무중단 순환이 가능합니다.
- Key Vault의 일시 삭제(soft delete) 및 제거 방지(purge protection)로 키를 보호합니다. RBAC를 통해 관리자를 제어하고, 액세스 정책 또는 RBAC(Managed HSM의 경우 RBAC 사용)를 통해 데이터 플레인을 제어합니다. 근거: 파괴적인 키 손실을 방지하고 최소 권한 원칙을 강제합니다.
예시: 스토리지 계정에 CMK 설정하기
az storage account update \
--name mystorage \
--resource-group rg-secure \
--encryption-key-source Microsoft.Keyvault \
--encryption-key-vault /subscriptions/<subId>/resourceGroups/rg-secure/providers/Microsoft.KeyVault/vaults/mykv \
--encryption-key-name stor-cmk
암호화 범위
- 서로 다른 데이터 세트에 별개의 키가 필요한 경우, Storage에서 컨테이너별 암호화 범위를 사용합니다. 근거: 영향 반경을 분할하고 차등적인 키 수명 주기를 활성화합니다.
데이터베이스 플랫폼 보안: Azure SQL 및 Azure Cosmos DB
Azure SQL 인증 및 액세스
- Microsoft Entra 인증: 서버 수준 Azure AD 관리자를 생성하고, 포함된 데이터베이스 사용자(CREATE USER FROM EXTERNAL PROVIDER)를 사용합니다. 근거: SQL 로그인/암호를 피하고 조건부 액세스 및 PIM을 활성화할 수 있습니다.
- 포함된 사용자: ID가 master가 아닌 데이터베이스에 존재합니다. 근거: 로그인을 다시 프로비저닝할 필요 없이 지역 복원 및 장애 조치를 단순화합니다.
- 방화벽 규칙: 광범위한 클라이언트 IP 규칙을 피하고, 공용 네트워크 액세스가 비활성화된 Private Link를 선호합니다. IP 규칙이 필요한 경우, 정확한 주소로 범위를 지정하고 검토를 자동화합니다. 근거: 공격 표면을 좁히고 공용 엔드포인트를 통한 검색 가능성을 줄입니다.
- 프라이빗 엔드포인트: 모든 데이터 평면 트래픽을 프라이빗 DNS를 사용하여 VNet을 통해 라우팅합니다. 근거: 노출을 제거하고 데이터 반출 방지를 단순화합니다.
- 인증 패턴: 토큰을 얻기 위해 Active Directory 통합(도메인 가입 장치용) 또는 대화형/장치 코드를 사용합니다. 서비스 워크로드는 관리 ID를 사용해야 합니다. 근거: 암호를 제거하고 토큰 수명/정책을 활성화합니다.
데이터 보호 기능
- 투명한 데이터 암호화(TDE): 기본적으로 켜져 있으며, 데이터/로그/백업을 암호화합니다. 근거: 앱 변경 없이 미사용(at-rest) 미디어를 보호합니다. 외부화된 제어를 위해 CMK와 함께 TDE를 사용합니다.
- Always Encrypted: Key Vault에 키를 보관하고 민감한 열에 대한 클라이언트 측 암호화입니다. 근거: SQL 운영자나 엔진이 평문(plaintext)을 볼 수 없도록 방지하며, PII/PCI 필드에 사용합니다.
- 동적 데이터 마스킹(DDM): 권한 없는 사용자에 대한 쿼리 결과를 난독화합니다. 근거: 우발적인 데이터 노출을 줄이지만 보안 경계는 아니므로 RBAC와 결합하여 사용합니다.
- 감사: Log Analytics, Event Hubs 또는 Storage로 전송합니다. 근거: 조사 및 규정 준수를 위한 불변의 추적 기록을 생성합니다.
예시: 서버 수준 감사를 Log Analytics로 활성화
az sql server audit-policy update \
--name sql-secure \
--resource-group rg-secure \
--state Enabled \
--log-analytics-workspace /subscriptions/<subId>/resourceGroups/rg-secure/providers/Microsoft.OperationalInsights/workspaces/la-secure
Microsoft Defender for SQL
- 취약성 평가(VA): 스키마/구성의 기준을 설정하고 스캔합니다. 스토리지로 내보내고 DevSecOps 게이트와 통합합니다. 근거: 명확한 해결 지침을 통해 지속적인 위생 관리 및 드리프트 감지를 수행합니다.
- 위협 탐지: SQL 삽입, 비정상적인 로그인, 익숙하지 않은 위치에서의 로그인, 권한 남용을 탐지합니다. 근거: 운영 오버헤드가 낮은 관리형 탐지 기능이며, 네트워크 제어를 보완합니다.
- 경고 대응: Logic Apps, 이메일, SIEM으로 라우팅합니다. 분류, 사용자 비활성화, 토큰 해지, 방화벽 강화를 위한 플레이북을 생성합니다. 근거: 코드화된 대응은 평균 격리 시간(MTTC)을 줄입니다.
Azure Cosmos DB 보안
- 키 및 토큰: 기본/보조 키는 높은 권한을 가지므로 정기적으로 교체합니다. 데이터 평면 작업에는 Cosmos DB Built-in Data Contributor/Reader와 같은 역할을 사용하는 Azure AD RBAC를 선호합니다. 근거: CA 및 감사를 통한 ID 기반 액세스입니다.
- 네트워크 제어: 비상용으로 IP 방화벽 허용 목록을 사용하고, 기본 경로로 Private Endpoints를 사용합니다. 가능하다면 공용 액세스를 비활성화합니다. 근거: 보장된 경로 제어 및 엔드포인트 유효성 검사입니다.
- 암호화: 기본적으로 미사용 시 암호화(at-rest)되며, 추가 제어를 위해 CMK를 활성화합니다. 근거: 외부 암호화 요구 사항 및 직무 분리를 충족합니다.
- 진단 로그 및 메트릭: DataPlaneRequests, ControlPlaneRequests 및 API별 카테고리(예: MongoRequests)를 활성화합니다. 근거: 액세스 패턴, 스로틀링, 비정상적인 요청에 대한 엔드투엔드 가시성을 확보합니다.
모니터링, 분류 및 유출 제어
Key Vault 기반 암호 및 연결 문자열
- 런타임에 암호/키를 검색하려면 관리형 ID를 사용하고, 코드나 설정에 암호를 절대 저장하지 마십시오. 이유: 앱에서 자격 증명 확산과 암호 순환 작업을 제거합니다.
- App Service/Functions Key Vault 참조
ConnectionStrings__Sql=@Microsoft.KeyVault(SecretUri=https://mykv.vault.azure.net/secrets/sql-connstr/)
- 가능한 경우 암호 기반 연결 문자열 대신 SQL에 대한 Azure AD 액세스 토큰을 선호하십시오. 이유: 더 강력한 정책 및 해지 기능을 제공합니다.
정보 보호 및 데이터 분류
- Microsoft Purview Information Protection 민감도 레이블: 문서 및 이메일에 암호화 및 사용 권한이 포함된 레이블을 적용하고, 자동 레이블링과 통합합니다. 이유: 스토리지 경계를 넘어 지속적인 보호를 제공합니다.
- SQL Information Protection (Azure SQL): 내장된 데이터 검색 및 분류 기능을 사용하고, 열에 레이블을 권장하며, Purview로 내보냅니다. 이유: 중앙 집중식 거버넌스와 데이터 자산 전반에 걸친 일관된 정책을 적용할 수 있습니다.
데이터 유출 제어 및 보안 액세스 패턴
- Private Link 우선: Storage, SQL, Cosmos DB에 대해 사용합니다. 퍼블릭 엔드포인트를 비활성화하십시오. 이유: 공용 인터넷에서의 액세스를 방지하고 승인된 VNet에서 트래픽이 시작되도록 강제합니다.
- 송신(Egress) 필터링: FQDN 태그와 DNAT 규칙이 있는 Azure Firewall을 사용하여 필요한 Azure 엔드포인트만 허용하고, Private Link가 비실용적인 경우 서비스 엔드포인트 정책을 추가합니다. 이유: 아웃바운드 허용 목록(allow-listing)을 통해 공격자가 제어하는 엔드포인트로의 데이터 유출을 차단합니다.
- 리소스 인스턴스 규칙: Storage 방화벽의 경우, 특정 신뢰할 수 있는 리소스 인스턴스(예: Synapse 작업 영역)만 액세스하도록 허용합니다. 이유: 네트워크뿐만 아니라 알려진 생산자/소비자에게 액세스를 바인딩합니다.
- SAS 강화: 가능한 경우 사용자 위임 SAS를 사용하고, HTTPS로 제한하며, IP를 제한하고, 최소한의 권한과 가장 짧은 수명을 설정합니다. 해지를 위해 저장된 액세스 정책에 연결합니다. 이유: 토큰 오용을 줄이고 비상 시 무효화를 단순화합니다.
- AKS 및 서비스 엔드포인트: 서비스 엔드포인트에 의존하는 경우, Azure CNI를 사용하여 파드(pod)가 VNet IP를 받고 엔드포인트 액세스를 상속하도록 합니다. 이유: 컨테이너 트래픽을 VNet 네이티브 제어에 연결합니다. 그렇지 않으면 엔드포인트가 NAT된 파드 트래픽에 적용되지 않습니다.
- 로깅 및 분석: Storage, SQL, Cosmos DB 진단 로그를 Log Analytics로 보내도록 활성화하고, 비정상적인 데이터 볼륨, SAS 발급 급증, 빈번한 403 오류에 대한 경고를 생성합니다. 이유: 데이터 유출 시도를 조기에 탐지할 수 있습니다.
실제 문제 시나리오
Spotify는 CI/CD 파이프라인이 통합 테스트를 실행할 수 있도록 하면서, 개발자 서브넷 및 AKS 워크로드에서 승인되지 않은 Storage 및 SQL 엔드포인트로의 데이터 유출을 방지해야 합니다.
모든 프로덕션 Storage 계정 및 Azure SQL 서버에 대해 퍼블릭 네트워크 액세스를 비활성화하고 Private Endpoint를 생성합니다. 이유: 모든 데이터 플레인 흐름을 Private Link를 통해 강제하여 퍼블릭 인그레스/이그레스를 제거하고, VNet 및 프라이빗 DNS를 통해 엄격한 출처 강제를 활성화합니다.
스토리지 및 데이터베이스 리소스 FQDN을 프라이빗 엔드포인트 IP에 매핑하는 A 레코드로 프라이빗 DNS 영역을 구성하고, 필요한 모든 VNet을 연결합니다. 이유: 퍼블릭 엔드포인트로의 DNS 유출을 방지하고 클라이언트가 의도한 프라이빗 리소스로 확인되도록 보장합니다.
Storage 방화벽에서 프로덕션 AKS 클러스터 및 빌드 에이전트 스케일셋 ID에 대해서만 리소스 인스턴스 규칙을 추가하고, 기본 작업을 거부(deny)로 설정합니다. 이유: 동일한 VNet 내에서도 승인된 리소스 ID만 계정에 액세스할 수 있으므로, 신뢰할 수 없는 워크로드로부터의 측면 이동(lateral movement) 및 데이터 유출을 방지합니다.
AKS에 Azure CNI를 강제 적용하고, 서비스 엔드포인트 정책과 함께 서비스 엔드포인트를 활성화하여 개발 네임스페이스가 전용 비-프로덕션 스토리지 계정에만 도달하도록 허용합니다. 이유: 개발 파드가 VNet IP를 얻어 네트워크 정책이 적용되도록 합니다. 엔드포인트 정책은 프라이빗이 아닌 모든 트래픽을 승인된 계정으로 엄격하게 제한합니다.
앱 코드에서 Blob 및 Queue에 대한 공유 키를 Azure AD RBAC로 대체합니다. 테스트를 위해 공유가 불가피한 경우, 저장된 액세스 정책과 1시간 만료 시간을 가진 사용자 위임 SAS를 발급합니다. 이유: ID에 바인딩된 토큰은 감사 및 해지가 가능합니다. 수명이 짧은 SAS는 빌드 로그에 토큰이 노출될 경우의 위험을 최소화합니다.
위협 탐지 및 취약성 평가 기능이 있는 Defender for SQL을 활성화합니다. 경고 및 SQL 감사 로그를 중앙 Log Analytics 작업 영역으로 라우팅하고, 자동화된 Logic Apps를 사용하여 분류(사용자 비활성화, 세션 해지, 임시 방화벽 거부 추가)합니다. 이유: 관리형 탐지 기능은 SQL 인젝션 및 비정상적인 액세스의 봉쇄를 가속화하고, 플레이북은 대응을 표준화하고 속도를 높입니다.
TDE 및 Storage 암호화 범위를 보호하는 CMK에 Key Vault를 사용합니다. 일시 삭제(soft delete) 및 제거 방지(purge protection)를 활성화하고, 분기별로 키를 순환하며 리소스 참조를 최신 키 버전으로 업데이트합니다. 이유: 안전한 순환 기능을 갖춘 외부화된 암호화 제어는 규정 준수를 충족하고 운영 오류 위험을 줄입니다.
SQL Information Protection을 사용하여 Azure SQL의 민감한 열을 분류하고 Microsoft Purview에 온보딩합니다. 다운스트림 내보내기에 MIP 민감도 레이블을 적용합니다. 이유: 영구적인 레이블링은 데이터 추출물과 함께 이동하여 오용을 제한하고, DLP 도구가 여러 도구와 장치에 걸쳐 제어를 강제할 수 있도록 합니다.
Azure Firewall을 사용하여 빌드/테스트에 필요한 Azure 서비스로만 송신(egress)을 제한합니다. Storage 및 SQL에 FQDN 태그를 사용하고 와일드카드 아웃바운드 HTTP(S)를 거부합니다. 이유: 포지티브 보안 모델은 트래픽이 승인된 엔드포인트에만 도달하도록 보장하여 데이터가 공격자 도메인으로 유출되는 것을 방지합니다.
이 순서는 퍼블릭 액세스를 방지하고, 데이터에 접근할 수 있는 주체와 대상을 모두 제한하며, 액세스를 암호가 아닌 ID에 바인딩하고, 모니터링 및 신속한 대응을 운영화합니다. 이 모든 과정에서 범위가 지정되고 시간이 제한된 예외를 통해 개발자 속도를 유지합니다.
이 문제 연습하기 → · ExamRoll.io에서 시간 제한 연습 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
시험 합격하기 →