스토리지 암호화와 별개로 가상머신의 디스크를 보호 하기 위한 암호화 과정도 필요하다.
시나리오 : 회사의 거래 업체에 강력한 암호화를 통해 거래 데이터를 보호해야 하는 보안 정책이 있는 경우를 가정해 보겠습니다. Windows 서버에서 실행되며 서버 데이터 디스크에 데이터를 저장하는 B2B 애플리케이션을 사용하고 있습니다. 이제 클라우드로 전환할 예정이므로, 권한이 없는 사용자/디바이스/애플리케이션이 Azure VM에 저장되는 데이터에 액세스할 수 없음을 거래 업체에 보여 주어야 합니다. B2B 데이터의 암호화를 구현하기 위한 전략을 결정해야 합니다.
감사 요구 사항에 따라 암호화 키는 타사가 아닌 내부에서 관리해야 합니다. 또한 Azure 기본 서버의 성능과 관리 효율성도 유지해야 합니다. 따라서 암호화를 구현하기 전에 성능이 저하되지 않도록 해야 합니다.
암호화란?
암호화는 의미 있는 정보를 무작위 문자 및 숫자 시퀀스와 같이 의미가 없어 보이는 내용으로 변환하는 과정이다. 암호화 프로세스에서는 암호화된 데이터를 만드는 알고리즘의 일부로 키 형식을 사용한다. 암호 해독을 수행하기 위해서도 키가 필요하다. 키는 대칭(암호화와 암호 해독에 같은 키가 사용됨)일 수도 있고 비대칭(다른 키가 사용됨)일 수도 있다. 후자의 예로는 Digital Certification 에 사용되는 퍼블릭-프라이빗 키 쌍이 있습니다.
대칭 암호화
AES(Advanced Encryption Standard)와 같이 대칭 키를 사용하는 알고리즘은 대개 공개 키 알고리즘에 비해 속도가 빠르며 대형 데이터 저장소를 보호하는 데 사용되는 경우가 많다. 키가 하나뿐이므로 키 공개를 방지하는 절차가 마련되어 있어야 하다.
비대칭 암호화
비대칭 알고리즘의 경우에는 키 쌍 중에서 프라이빗 키 멤버만 프라이빗 상태로 안전하게 유지하면 된다. 그리고 이름에서도 알 수 있듯이 퍼블릭 키의 경우 암호화된 데이터가 손상되지만 않는다면 누구에게나 제공할 수 있다. 하지만 공개 키 알고리즘은 대칭 알고리즘보다 속도가 훨씬 느리며 대량의 데이터를 암호화하는 사용할 수는 없다는 단점이 있다.
키 관리
Azure에서는 암호화 키를 Microsoft 또는 고객이 관리할 수 있습니다. HIPAA 또는 기타 규정 준수를 입증해야 하는 조직에서 고객 관리 키를 요청하는 경우가 많다. 이러한 규정을 준수하려면 키 액세스를 로깅해야 할 수 있으며, 키를 정기적으로 변경하고 해당 변경을 기록해야 한다.
Azure Disk Encryption
Storage Service Encryption
Azure SSE(스토리지 서비스 암호화)는 미사용 데이터를 보호하는 데 사용되는 Azure의 기본 제공 암호화 서비스이다. Azure 스토리지 플랫폼에서는 데이터가 Azure Managed Disks를 비롯한 여러 스토리지 서비스에 저장되기 전에 자동으로 암호화한다. 암호화는 256비트 AES 암호화를 통해 기본적으로 사용하도록 설정되며, Storage Account 관리자가 관리한다.
Azure SSE는 모든 신규 및 기존 스토리지 계정에 설정되며 사용하지 않도록 설정할 수 없다. 사용자 데이터는 기본적으로 보호되므로 스토리지 서비스 암호화를 활용하도록 코드 또는 애플리케이션을 수정할 필요가 없다.
스토리지 서비스 암호화는 Azure 스토리지 서비스의 성능에 영향을 주지 않는다.
Azure Disk Encryption
ADE(Azure Disk Encryption)는 VM 소유자가 관리한다. Windows VM의 BitLocker 및 Linux VM의 DM-Crypt 를 사용하여 Windows 및 Linux VM 제어 디스크의 암호화를 제어한다. 운영 체제와 통합된 데이터 보호 기능인 BitLocker 드라이브 암호화는 분실, 도난 또는 부적절하게 서비스 해제된 컴퓨터에서 데이터가 노출되거나 도용될 위협을 해결한다. 마찬가지로 DM-Crypt는 Linux의 미사용 데이터를 스토리지에 쓰기 전에 암호화한다.
ADE를 사용하는 경우 Azure Storage에서 미사용 상태인 VM 디스크의 모든 데이터가 암호화된다. Recovery 자격 증명 모음에 백업된 VM을 사용하려면 ADE가 필요하다.
ADE를 사용하면 VM은 고객 제어 키와 정책에 따라 부팅된다. 이러한 디스크 암호화 키 및 비밀을 관리할 수 있도록 ADE는 Azure Key Vault에 통합되서 관리된다.
** NOTE : ADE는 encryption of Basic tier VMs는 지원하지 않으며, 온-프레미스 KMS(키 관리 서비스)는 ADE와 함께 사용할 수 없다.
암호화를 사용하는 경우
컴퓨터 데이터는 전송 중(인터넷 또는 기타 네트워크를 통해 전송)일 때와 미사용(스토리지 디바이스에 저장되어 있을때)일 때 위험하다. Azure VM 디스크의 데이터를 보호할 때는 미사용 데이터 보호를 기본적으로 설정해야 한다. Azure VM과 연결된 VHD(가상 하드 디스크) 파일을 다운로드하여 노트북에 저장하는 경우를 예로 들어보자면, 이때 VHD가 암호화되어 있지 않으면 컴퓨터에 VHD 파일을 탑재할 수 있는 모든 사용자가 VHD의 콘텐츠에 액세스할 수 있게 된다.
OS(운영 체제) 디스크의 경우에는 암호 등의 데이터가 자동으로 암호화되므로 VHD 자체가 암호화되어 있지 않더라도 해당 정보에 액세스하기는 어렵다. 애플리케이션도 자체 데이터를 자동으로 암호화할 수도 있다. 하지만 이와 같은 보호 수단을 사용하더라도 악의적인 사용자가 데이터 디스크 액세스 권한을 확보하는 경우 디스크 자체가 암호화되지 않았다면 애플리케이션의 데이터 보호 기능에서 알려진 약점이 악용될 수 있다. 디스크 암호화가 적용되어 있으면 이러한 악용은 불가능하기때문에 디스크 암호화가 중요하다.
SSE(스토리지 서비스 암호화)는 Azure 자체의 일부이며 SSE를 사용할 때 VM 디스크 IO에 현저한 성능 영향이 없어야 한다. 이제 SSE가 있는 관리 디스크가 기본값이므로 이를 변경할 이유가 없다. ADE(Azure Disk Encryption)에서는 VM 운영 체제 도구(BitLocker 및 DM-Crypt)를 사용하므로 VM 디스크에서 암호화 또는 암호 해독이 수행되고 있을 때 VM 자체에서도 특정 작업을 수행해야 한다. 일반적으로는 특정 상황을 제외하면 이러한 추가 VM CPU 활동으로 인한 영향은 거의 없다. 예를 들어 CPU를 많이 사용하는 애플리케이션이 있다면 성능을 최대화하기 위해 OS 디스크를 암호화되지 않은 상태로 유지할 수 있다. 이러한 상황에서는 애플리케이션 데이터를 별도의 암호화된 데이터 디스크에 저장하면 보안을 그대로 유지하면서 필요한 성능을 달성할 수 있다. SSE 및 ADE는 여러 계층에서 암호화를 수행하며, 다양한 용도로 사용된다. 둘 다 AES 256비트 암호화 방식을 사용한다. 이 두 기술을 모두 사용하면 Azure 스토리지 및 특정 VHD에 대한 무단 액세스를 심층 방어하는 보호 기능이 제공된다.
Azure Disk Encryption 필수 구성 요소
VM 디스크를 암호화하려면 먼저 다음을 수행해야 한다.
1. Key Vault를 생성
2. Key Vault 액세스 정책을 설정하여 디스크 암호화를 지원
3. Key Vault를 사용하여 ADE에 대한 암호화 키를 저장
Azure Key Vault
ADE에 사용되는 암호화 키를 Azure Key Vault에 저장 가능하다.. Azure Key Vault는 비밀을 안전하게 저장하고 액세스하기 위한 도구이다. Secret은 API 키, 암호 또는 인증서와 같이 액세스를 엄격하게 제어하려는 모든 항목이다. Secret을 활용하는 경우 FIPS(Federal Information Processing Standard) 140-2 수준 2 유효성이 검사된 HSM(하드웨어 보안 모듈)에 정의된 대로 가용성과 확장성이 뛰어난 보안 스토리지가 제공된다. Key Vault를 사용하면 데이터를 암호화하는 데 사용되는 키를 완벽하게 제어할 수 있으며 키 사용을 관리 및 감사할 수 있다.
**NOTE : Azure Disk Encryption을 사용하려면 Key Vault와 VM이 같은 Azure 지역에 있어야 한다. 그래야 암호화 비밀이 다른 지역에 노출되지 않는다.
PowerShall
New-AzKeyVault -Location <location> `
-ResourceGroupName <resource-group> `
-VaultName "myKeyVault" `
-EnabledForDiskEncryption
Azure CLI
az keyvault create \
--name "myKeyVault" \
--resource-group <resource-group> \
--location <location> \
--enabled-for-disk-encryption True
Azure Portal
1. On the Azure portal menu or from the Home page, select Create a resource.
2. Search for "Key vault". Click Create in the details window.
3. Enter the details for the new Key Vault:
- Enter a Name for the Key Vault
- Select the subscription to place it in (defaults to your current subscription).
- Select a Resource Group, or create a new resource group to own the Key Vault.
- Select a Location for the Key Vault. Make sure to select the location the VM is in.
- You can choose either Standard or Premium for the pricing tier. The main difference is that the premium tier allows for Hardware-encryption backed keys.
4. You must change the Access policies to support Disk Encryption. By default it adds your account to the policy.
- Select Access policies.
- Select Advanced access policies.
- Check the Enable access to Azure Disk Encryption for volume encryption.
- You can remove your account if you like, it's not necessary if you only intend to use the Key Vault for disk encryption.
- To save the changes, select OK.
5. To create the new Key Vault, select Create.
Key Vault에서 액세스 정책 사용
Azure는 VM을 부팅하고 볼륨을 해독할 수 있도록 Key Vault의 암호화 키 또는 비밀에 액세스해야 한다. 이 내용은 이전에 고급 액세스 정책 을 변경한 포털을 위한 것입니다.
세 가지 정책을 사용할 수 있습니다.
1. 디스크 암호화 - Azure Disk Encryption에 필요
2. 배포 - (선택 사항) 이 Key Vault가 리소스를 만들 때(예: VM을 만들 때) 참조되는 경우 Microsoft.Compute 리소스 공급자가 이 Key Vault에서 Secret을 검색할 수 있게 한다.
3. 템플릿 배포 - (선택 사항) 이 Key Vault가 템플릿 배포에서 참조되는 경우 Azure Resource Manager에서 이 Key Vault으로부터 Secret을 가져올 수 있도록 한다.
디스크 암호화 정책을 사용하는 방법은 아래와 같다. 다른 두 개는 유사하지만 다른 플래그를 사용한다.
PowerShall
Set-AzKeyVaultAccessPolicy -VaultName <keyvault-name> -ResourceGroupName <resource-group> -EnabledForDiskEncryption
Azure CLI
az keyvault update --name <keyvault-name> --resource-group <resource-group> --enabled-for-disk-encryption "true"
기존 VM 디스크 암호화
PowerShall
Set-AzVmDiskEncryptionExtension `
-ResourceGroupName <resource-group> `
-VMName <vm-name> `
-VolumeType [All | OS | Data]
-DiskEncryptionKeyVaultId <keyVault.ResourceId> `
-DiskEncryptionKeyVaultUrl <keyVault.VaultUri> `
-SkipVmBackup
Azure CLI
az vm encryption enable \
--resource-group <resource-group> \
--name <vm-name> \
--disk-encryption-keyvault <keyvault-name> \
--volume-type [all | os | data]
디스크 암호화 여부확인
PowerShall
Get-AzVmDiskEncryptionStatus -ResourceGroupName <resource-group> -VMName <vm-name>
Azure CLI
az vm encryption show --resource-group <resource-group> --name <vm-name>
드라이브 암호해독
PowerShall
Disable-AzVMDiskEncryption -ResourceGroupName <resource-group> -VMName <vm-name>
Azure CLI
az vm encryption disable --resource-group <resource-group> --name <vm-name>
Reference
출처 2 : docs.microsoft.com/en-us/azure/virtual-machines/linux/disk-encryption-linux
출처 3 : docs.microsoft.com/en-us/azure/security/fundamentals/azure-disk-encryption-vms-vmss
출처 4 : docs.microsoft.com/en-us/azure/security/fundamentals/data-encryption-best-practices
'MS Azure > Cloud Storage' 카테고리의 다른 글
[Azure Storage] Azure Virtual Hard Disk, Virtual Machine Image, Generalized image, specialized virtual image (0) | 2021.01.27 |
---|---|
[Azure Storage] Plan Azure Files Deloyment (0) | 2021.01.20 |
[Azure Storage] Azure Storage Account Security 보안 (0) | 2021.01.20 |
[Azure Storage] How to Failover process works (0) | 2021.01.19 |
[Azure Storage] Data redundancy options (0) | 2021.01.19 |