Microsoft Azure 환경에서 데이터의 영속성과 비즈니스 연속성을 보장하는 것은 시스템 관리자의 핵심 역할입니다. Azure는 포괄적인 백업 및 복구 솔루션을 제공하며, 주로 Azure Backup 서비스를 통해 가상 머신, 파일 데이터, SQL Server 데이터베이스, 그리고 지역 간 복구 등 다양한 시나리오를 지원합니다.
1. Azure 백업 및 복구 전략 개요
백업 전략의 핵심 요소
- 복구 서비스 자격 증명 모음 (Recovery Services Vault): 백업 데이터를 중앙에서 저장하고 관리하는 논리적 컨테이너입니다.
- 백업 정책 (Backup Policy): 백업 주기, 보존 기간, 스냅샷 시점을 정의하는 규칙의 집합입니다.
- 백업 대상 지역: 로컬 중복 저장소(LRS) 및 지역 중복 저장소(GRS)와 같은 복제 옵션을 지원하여 재해 복구 기능을 강화합니다.
기본 백업 정책 구성 예시
Azure CLI를 사용하여 백업 정책을 신속하게 생성하고 적용할 수 있습니다. 다음 명령은 가상 머신에 대해 매일 백업을 구성하고 30일 동안 보존하는 방법을 보여줍니다.
# 새 복구 서비스 자격 증명 모음 생성
az backup vault create \
--resource-group myWebAppRG \
--name webAppRecoveryVault \
--location koreacentral
# 매일 실행되고 30일 보존되는 백업 정책 정의
az backup policy set \
--vault-name webAppRecoveryVault \
--name DailyVMBackupPolicy \
--backup-management-type AzureIaasVM \
--policy '{
"schedulePolicy": {
"scheduleRunFrequency": "Daily",
"scheduleRunTimes": ["2024-03-15T03:00:00Z"]
},
"retentionPolicy": {
"dailySchedule": {
"retentionDuration": { "count": 30, "durationType": "Days" }
}
}
}'
위 코드 예제는 먼저 복구 서비스 자격 증명 모음을 생성한 다음, 매일 새벽 3시에 실행되고 30일 동안 백업 데이터를 보존하는 정책을 설정합니다. 이 정책은 Azure 포털 또는 CLI를 통해 모든 IaaS 가상 머신에 적용될 수 있습니다.
복구 작업 시 고려 사항
| 복구 방식 | 적합한 시나리오 | 복구 시간 목표 (RTO) |
|---|---|---|
| 전체 디스크 복원 | 가상 머신 전체 재해 복구 | 높음 (디스크 크기에 따라 변동) |
| 개별 파일 복원 | 실수로 삭제된 파일 복구 | 낮음 |
| 즉시 복원 (Instant Restore) | 스냅샷을 통한 빠른 마운트 필요 시 | 최저 |
Azure Backup은 모든 복구 지점에서 전체 가상 머신 또는 개별 파일 수준의 복구를 지원하며, 스냅샷과 장기 보관 저장소를 결합하여 유연한 복구 계층을 제공합니다.
2. Azure 가상 머신 백업 및 복구 실습
2.1 Azure Backup 서비스 아키텍처 이해
Azure Backup은 클라우드 기반 백업 솔루션으로, 여러 핵심 구성 요소가 협력하여 데이터 보호 및 복구를 수행합니다.
핵심 구성 요소
- 백업 자격 증명 모음 (Recovery Services Vault): 백업 데이터를 저장하고 백업 정책을 관리하는 논리적 컨테이너입니다.
- 백업 에이전트 (MARS Agent): 온프레미스 서버에 설치되어 데이터를 클라우드 자격 증명 모음으로 전송합니다.
- 백업 정책 (Backup Policy): 백업 빈도, 보존 기간 등 규칙을 정의합니다.
데이터 흐름 예시
다음 구성은 production-data-vault라는 이름의 자격 증명 모음이 매일 백업 정책을 적용하며 45일 동안 데이터를 보존함을 나타냅니다.
{
"vaultName": "production-data-vault",
"policyName": "daily-backup-45days",
"resourceType": "Azure Virtual Machine"
}
여기서 resourceType 매개변수는 보호 대상 리소스가 가상 머신임을 명시합니다. 데이터는 데이터 원본에서 백업 에이전트를 거쳐 네트워크 암호화 전송 후 Recovery Services 자격 증명 모음에 도달하며, 중복 저장소에 보관됩니다.
2.2 자동화된 백업 정책 구성 및 일시 삭제 보호 활성화
현대 데이터 보호 시스템에서 자동화된 백업 및 일시 삭제(Soft Delete) 메커니즘은 예기치 않은 데이터 손실을 방지하는 핵심 수단입니다. 적절한 정책 구성을 통해 데이터의 지속적인 보호와 빠른 복구를 달성할 수 있습니다.
자동화된 백업 정책 생성
Azure CLI를 사용하여 매일 자동 백업을 구성합니다:
az backup policy set \
--vault-name webAppRecoveryVault \
--name DailyVMBackupPolicy \
--backup-management-type AzureIaasVM \
--policy '{"schedulePolicy": {"scheduleRunFrequency":"Daily"}}'
이 명령은 DailyVMBackupPolicy라는 백업 정책을 설정하여 가상 머신이 매일 정해진 시간에 백업되도록 합니다.
일시 삭제 보호 활성화
백업 데이터의 악의적인 삭제를 방지하기 위해 일시 삭제 기능을 활성화해야 합니다:
- 복구 서비스 자격 증명 모음의 보안 설정으로 이동합니다.
- "일시 삭제" 옵션을 활성화합니다.
- 보존 기간을 설정합니다 (기본 14일).
일시 삭제가 활성화된 상태에서는 삭제 작업을 실행하더라도 백업 데이터가 지정된 보존 기간 동안 유지되어 안전한 복구를 지원하며, 데이터 손상 저항성을 크게 향상시킵니다.
2.3 복구 지점을 통한 전체 가상 머신 인스턴스 복원
재해 복구 시나리오에서 복구 지점을 기반으로 전체 가상 머신 인스턴스를 복원하는 것은 비즈니스 연속성을 보장하는 핵심 단계입니다. 스냅샷 또는 백업으로 생성된 복구 지점을 통해 가상 머신 상태를 특정 시점으로 정확하게 되돌릴 수 있습니다.
복원 작업 흐름
- 대상 복구 지점을 선택하고, 그 무결성과 일관성을 확인합니다.
- 필요한 리소스 할당량을 확인하고 저장소 위치 권한을 검증합니다.
- 복원 작업을 트리거하면, 시스템이 자동으로 가상 머신 구성 및 디스크 데이터를 재구성합니다.
API 호출 예시
{
"operation": "restore_vm",
"sourceVmId": "vm-appserver-prod",
"restorePointId": "rp-20240315_0200_GMT",
"targetResourceGroup": "restoredVMs",
"targetLocation": "koreasouth"
}
이 요청은 가상화 관리 플랫폼에 복원 명령을 제출하며, restorePointId 매개변수는 롤백 기준을 지정하고, targetResourceGroup 및 targetLocation은 배포 위치를 정의하여 리소스 격리 및 가용성을 보장합니다.
상태 모니터링
| 단계 | 예상 소요 시간 | 성공 지표 |
|---|---|---|
| 디스크 이미지 로드 | ~2분 | 가상 디스크 연결 완료 |
| 네트워크 구성 | ~30초 | IP 주소 바인딩 및 연결 확인 |
| 게스트 OS 부팅 및 초기화 | ~1분 | 운영 체제 가동 및 응답 |
2.4 파일 수준 복구 및 스냅샷 관리
개별 파일 수준 복구 과정에서 스냅샷 기술을 효과적으로 활용하는 것은 데이터 일관성과 복구 가능성을 보장하는 데 중요합니다. 정기적인 저장소 스냅샷 생성을 통해 서비스 중단 없이 과거 상태를 보존할 수 있습니다.
스냅샷 생성 및 복구 개념
스냅샷은 특정 시점의 데이터 상태를 기록한 읽기 전용 이미지입니다. 실수로 파일이 삭제되거나 손상되었을 경우, 해당 스냅샷을 마운트하여 필요한 파일을 추출할 수 있습니다.
# 파일 시스템 스냅샷 생성 (예: 클라우드 스냅샷 API 호출)
create_snapshot --volume-id "data_volume_id_123" --name "pre_update_snapshot"
# 스냅샷에서 특정 파일 복원 (예: 스냅샷 볼륨 마운트 후 복사)
mount_snapshot "pre_update_snapshot" /mnt/restore_point
cp /mnt/restore_point/important_file.txt /data/important_file.txt
unmount_snapshot /mnt/restore_point
위의 개념적 명령어는 데이터 볼륨의 스냅샷을 생성하고, 이후 해당 스냅샷을 마운트하여 특정 파일을 복원하는 과정을 보여줍니다. 스냅샷은 원본 데이터에 영향을 주지 않으므로 안전하게 복구 작업을 수행할 수 있습니다.
스냅샷 수명 주기 관리
- 스냅샷 보존 정책을 수립합니다 (예: 최근 7일간의 일일 스냅샷 유지).
- 스냅샷이 차지하는 공간을 모니터링하여 주 시스템 성능에 영향을 미치지 않도록 관리합니다.
- 정기적으로 복구 절차를 테스트하여 스냅샷의 유효성을 검증합니다.
2.5 지역 간 복구 시나리오에서의 중복 전략 설계
지역 간 재해 복구 아키텍처에서 중복 전략은 데이터 일관성과 장애 조치 효율성을 모두 고려해야 합니다. 고가용성을 달성하기 위해 일반적으로 다중 지역 비동기 복제와 쿼럼 메커니즘을 결합합니다.
데이터 동기화 메커니즘
핵심 데이터베이스는 비동기 지역 간 복제를 사용하여 주 지역 장애 시 보조 지역이 신속하게 인계받을 수 있도록 합니다. 다음은 일반적인 구성 예시입니다.
{
"replicationStrategy": {
"syncMode": "asynchronous",
"replicationRegions": ["eastus2", "westus2", "southcentralus"],
"minimumWriteQuorum": 2,
"recoveryPointObjectiveSeconds": 10
}
}
이 구성은 쓰기 작업이 최소 두 개 지역에서 확인되어야 하며, RPO를 10초 이내로 제어하여 성능과 데이터 손실 위험의 균형을 맞춥니다.
중복 토폴로지 구조
- 세 지역 배포: 프로덕션, 재해 복구, 쿼럼 노드를 지리적으로 분리합니다.
- 자동 장애 감지: 상태 프로브를 기반으로 장애 조치 프로세스를 트리거합니다.
- DNS 페일오버: 낮은 TTL(Time-To-Live) 값을 통해 트래픽을 다른 지역으로 리디렉션합니다.
3. Azure 파일 공유 및 데이터베이스 백업 방안
3.1 Azure Backup을 이용한 표준 파일 공유 데이터 보호
Azure Backup은 Azure 파일 공유에 대한 기본 지원을 제공하여 자동화된 암호화 백업 및 빠른 복구를 가능하게 합니다. 복구 서비스 자격 증명 모음을 구성함으로써 표준 저장소 계정의 파일 공유에 대한 지속적인 보호를 활성화할 수 있습니다.
백업 정책 구성
백업 정책을 생성할 때 일일 백업 시간과 보존 기간을 설정할 수 있습니다. 예를 들어, 다음 PowerShell 명령은 파일 공유를 자격 증명 모음에 등록합니다.
Register-AzRecoveryServicesBackupContainer `
-ResourceGroupName "myAppRG" `
-VaultName "webAppRecoveryVault" `
-StorageAccountName "appstorageshare" `
-ContainerType AzureStorage
이 명령은 저장소 계정을 백업 컨테이너로 등록하며, -VaultName은 대상 자격 증명 모음을 지정하고 -StorageAccountName은 파일 공유를 포함하는 저장소 계정입니다.
백업 및 복구 과정
- 백업 활성화 후, 첫 번째 백업은 전체 백업이고, 이후 백업은 증분 백업입니다.
- 백업 데이터는 자동으로 암호화되어 지역 중복 저장소의 복구 서비스 자격 증명 모음에 저장됩니다.
- 포털 또는 PowerShell을 통해 원본 또는 대체 위치로 복구할 수 있습니다.
3.2 Azure VM의 SQL Server 백업 통합 구성
Azure 가상 머신에 배포된 SQL Server 인스턴스는 Azure Backup 서비스를 통해 자동화된 보호를 구현할 수 있습니다. 먼저 VM이 속한 리소스 그룹을 복구 서비스 자격 증명 모음에 등록해야 합니다.
복구 서비스 자격 증명 모음 구성
Azure 포털 또는 CLI를 통해 복구 서비스 자격 증명 모음을 생성하고 연결합니다.
az backup vault create \
--resource-group mySQLResourceGroup \
--name sqlDatabaseVault \
--location koreacentral
이 명령은 백업 정책과 복구 지점을 저장하는 자격 증명 모음을 초기화합니다. --resource-group은 리소스 그룹을 지정하고, --location은 규정 준수를 위해 SQL VM과 동일해야 합니다.
SQL Server 백업 보호 활성화
Azure Backup 명령을 사용하여 SQL 데이터베이스를 보호합니다:
- SQL 인스턴스 검색:
az backup protectable-item list --workload-type SQLDataBase --vault-name sqlDatabaseVault - 보호 활성화:
az backup protection enable-for-vm --vault-name sqlDatabaseVault --policy-name SQLDailyPolicy --resource-group mySQLResourceGroup --vm-name mySQLVM --item-name 'SQLDatabaseName' --server-name 'SQLVMServerName'
시스템은 자동으로 Azure Backup 확장을 설치하여 애플리케이션 일관성 스냅샷 및 트랜잭션 로그 자르기(truncation)와 협력합니다.
| 구성 요소 | 역할 |
|---|---|
| SQL Server VSS 기록기 | 애플리케이션 일관성 백업 지원 |
| Azure Backup 확장 | 백업 데이터 전송 및 관리 |
3.3 특정 시점으로 데이터베이스 복구 실전 연습
운영 환경에서는 오작동이나 데이터 손상으로 인해 데이터베이스를 특정 시점으로 정확하게 복구해야 하는 경우가 많습니다. PostgreSQL을 예로 들면, WAL(Write-Ahead Logging) 기반의 로그 메커니즘을 통해 정밀한 롤백을 구현할 수 있습니다.
복구 전 준비 작업
아카이브 모드를 활성화하고 연속 아카이빙 및 특정 시점 복구(PITR) 매개변수를 올바르게 구성해야 합니다.
# postgresql.conf 설정 예시
wal_level = replica
archive_mode = on
archive_command = 'cp %p /mnt/pg_archive/%f'
위 설정은 WAL 아카이빙을 활성화하여 향후 복구를 위한 로그 기반을 제공합니다.
특정 시점 복구 실행
데이터베이스 서비스를 중지한 후 복구 대상 마커 파일을 생성합니다.
# recovery.signal 파일 생성 및 recovery.conf 설정 (PostgreSQL 12 이상 기준)
echo "restore_command = 'cp /mnt/pg_archive/%f %p'" > $PGDATA/postgresql.auto.conf
echo "recovery_target_time = '2025-04-05 10:30:00 KST'" >> $PGDATA/postgresql.auto.conf
echo "recovery_target_action = 'pause'" >> $PGDATA/postgresql.auto.conf
# 데이터베이스 재시작
pg_ctl start -D $PGDATA
데이터베이스를 시작하면 시스템은 WAL 로그를 지정된 시간까지 자동으로 재생하고 일시 정지합니다. recovery_target_time은 복구 종료 시점을, restore_command는 아카이브 경로에서 WAL 파일을 추출하는 명령을 나타냅니다.
4. 재해 복구 계획 및 규정 준수 보장
4.1 GDPR 및 ISO 표준을 준수하는 백업 규정 준수 전략 수립
GDPR의 데이터 이동성 및 삭제 권한 요구 사항을 충족하고 ISO/IEC 27001 정보 보안 관리 프레임워크를 따르기 위해 기업은 암호화되고, 감사 가능하며, 최소화된 백업 시스템을 구축해야 합니다.
데이터 분류 및 보존 기간 정의
민감도 수준에 따라 데이터 유형을 분류하고 차별화된 백업 전략을 설정합니다.
- 개인 식별 정보(PII): 암호화 저장, 6개월 초과 보존 금지
- 로그 데이터: 익명화 처리 후 12개월 보존
- 시스템 구성: 영구 보관, 사용자 데이터 포함 금지
자동화된 규정 준수 확인 개념
FUNCTION check_data_deletion_compliance(backup_metadata, deletion_requests):
FOR EACH request IN deletion_requests:
IF backup_metadata CONTAINS deleted_user_data(request.user_identifier):
THROW ComplianceViolationException(f"사용자 {request.user_identifier} 데이터가 백업에서 발견됨")
RETURN "규정 준수 확인 완료"
이 함수는 각 백업 아카이빙 전에 실행되어 "잊혀질 권리"가 구현되도록 합니다. deletion_requests는 DSAR(데이터 주체 액세스 요청) 큐에서 가져오며, backup_metadata는 검증할 백업 인스턴스입니다.
규정 준수 제어 매트릭스
| 제어 항목 | GDPR 조항 | ISO 27001 대응 |
|---|---|---|
| 백업 암호화 | 제32조 (보안) | A.10.1.1 (암호화 제어) |
| 액세스 로깅 | 제30조 (기록 유지) | A.12.4.1 (로그인 활동 로깅) |
4.2 복구 서비스 자격 증명 모음을 통한 중앙 집중식 관리
복구 서비스 자격 증명 모음(Recovery Services Vault)은 Azure에서 백업 및 복구 작업을 중앙에서 관리하기 위한 핵심 구성 요소입니다. 통합된 관리 인터페이스를 통해 사용자는 가상 머신, 데이터베이스 및 온프레미스 서버 전반에 걸쳐 백업 정책을 구성할 수 있습니다.
주요 기능 및 이점
- 모든 보호된 리소스의 백업 상태를 중앙에서 모니터링합니다.
- 지역 간 백업 정책을 통합하여 적용하고 관리합니다.
- 암호화된 백업 데이터를 지원하고 키 접근 권한을 제어합니다.
정책 구성 예시
{
"policyDetails": {
"scheduleType": "Daily",
"backupTime": "23:00 UTC",
"retentionPeriodDays": 14
}
}
위 JSON은 매일 오후 11시(UTC)에 실행되고 14일 동안 데이터를 보존하는 백업 계획을 정의합니다. backupTime은 트리거 시간을 제어하고, retentionPeriodDays는 데이터 보존 기간을 결정하여 규정 준수 요구 사항을 충족시킵니다.
4.3 랜섬웨어 공격 후 데이터 롤백 절차 시뮬레이션
랜섬웨어 공격 시뮬레이션 후 데이터 롤백은 백업 유효성을 검증하는 중요한 단계입니다. 시스템은 격리된 스냅샷 또는 백업 저장소에서 파일을 암호화 이전 상태로 복구해야 합니다.
복구 절차 단계
- 악성 프로세스 탐지 및 종료
- 백업의 무결성과 복구 지점 확인
- 증분 또는 전체 롤백 작업 실행
- 복구된 데이터의 일관성 검증
자동화된 롤백 스크립트 개념
# 백업 저장소에서 안전한 스냅샷을 사용하여 데이터 디렉토리 복원 (개념적)
RESTORE_FROM_SNAPSHOT --snapshot-id "safe_snapshot_before_attack" --target-path "/app/data"
echo "데이터가 'safe_snapshot_before_attack' 스냅샷으로 복원되었습니다."
이 개념적 명령은 안전한 스냅샷 메커니즘을 활용하여 암호화된 파일 집합을 공격 발생 전의 일관된 상태로 되돌립니다. safe_snapshot_before_attack은 감염되지 않은 읽기 전용 스냅샷을 가리켜야 복구 원본의 보안이 보장됩니다.
복구 검증 메커니즘
복구 프로세스 후, 원본 파일의 해시 값과 복구된 파일의 해시 값을 비교하여 데이터의 무결성을 확인합니다.
4.4 백업 데이터의 지역 간 복제 및 장기 보존 전략
지역 간 복제 메커니즘
단일 데이터 센터 장애로 인한 데이터 손실을 방지하기 위해 백업 데이터는 지리적 영역을 넘어 복제되어야 합니다. 일반적인 방법은 증분 백업을 원격 객체 저장소 서비스로 자동 동기화하는 것입니다.
# Azure Storage AzCopy를 사용하여 백업 데이터를 다른 지역으로 복사 (개념적)
azcopy copy "https://sourceaccount.blob.core.windows.net/backup-container/?" \
"https://destinationaccount.blob.core.windows.net/longterm-archive/?" \
--recursive=true --exclude-pattern="*.tmp" --log-level=INFO
이 명령은 로컬 또는 다른 저장소 계정의 백업 파일을 다른 지역의 Azure Blob 저장소로 복사하며, 장기 보관 시나리오에 적합하도록 특정 패턴을 제외하고 로그 수준을 설정합니다.
데이터 보존 주기 관리
장기 보존을 위해서는 명확한 수명 주기 정책을 수립해야 합니다. 일반적으로 "할아버지-아버지-아들" (GFS) 모델을 사용합니다.
- 매일 백업: 7일 보존 (아들)
- 매주 백업: 4주 보존 (아버지)
- 매월 백업: 12개월 보존 (할아버지)
자동화된 스크립트를 통해 만료된 백업을 식별하고 정리함으로써 규정 준수와 저장 효율성 사이의 균형을 유지합니다.