다음을 통해 공유


Service Fabric 관리형 클러스터 노드에 디스크 암호화 사용

Service Fabric 관리 클러스터는 두 개의 디스크 암호화 옵션을 지원하여 조직 보안 및 규정 준수 약정을 충족하도록 데이터를 보호합니다. 권장되는 옵션은 호스트의 암호화이지만 Azure Disk Encryption도 지원됩니다. 디스크 암호화 옵션을 검토하고 선택한 옵션이 요구 사항을 충족하는지 확인하세요.

호스트에서 암호화 사용

이 암호화 방법은 Azure Storage 서비스의 데이터를 암호화하여 VM에 대한 사용자 지정 이미지를 포함한 모든 OS 유형 및 이미지를 지원함으로써 Azure Disk Encryption을 향상시킵니다. 이 방법은 VM CPU를 사용하지 않으며 VM 성능에 영향을 주지 않아 워크로드에서 사용 가능한 모든 VM SKU 리소스를 사용할 수 있습니다.

참고 항목

기존 노드 유형에서는 사용할 수 없습니다. 새 노드 유형을 프로비전하고 워크로드를 마이그레이션해야 합니다.

참고 항목

Azure Security Center 디스크 암호화 상태는 호스트에서 암호화를 사용할 때 현재 상태가 비정상으로 표시됩니다.

다음 단계에 따라 이 샘플 템플릿을 참조하여 호스트 암호화가 활성화된 새 Service Fabric 관리 클러스터를 배포합니다.

  1. 다음 제한 사항을 요구 사항을 충족하는지 확인합니다.

  2. 클러스터 배포 전에 필요한 필수 구성 요소를 설정합니다.

  3. 각 노드 유형 디스크 암호화에 대해 관리 클러스터 템플릿에서 enableEncryptionAtHost 속성을 구성해야 합니다. 샘플이 미리 구성됩니다.

    • Service Fabric 관리형 클러스터 리소스 apiVersion은 2021-11-01-preview 이상이어야 합니다.
         {
                "apiVersion": "[variables('sfApiVersion')]",
                "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
                "name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
                "location": "[resourcegroup().location]",
                "properties": {
                    "enableEncryptionAtHost": true
                    ...
                }
        }
    
  4. 배포 및 확인

    호스트 암호화를 사용하도록 설정하여 구성된 관리 클러스터를 배포합니다.

    $clusterName = "<clustername>" 
    $resourceGroupName = "<rg-name>"
    
    New-AzResourceGroupDeployment -Name $resourceGroupName -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterFile .\azuredeploy.parameters.json -Debug -Verbose 
    

    Get-AzVmss 명령을 사용하여 노드 유형의 기본 확장 집합에서 디스크 암호화 상태를 확인할 수 있습니다. 먼저 관리 클러스터의 지원 리소스 그룹 이름(기본 가상 네트워크, 부하 분산 장치, 공용 IP, NSG, 확장 집합, 스토리지 계정을 포함)을 확인해야 합니다. NodeTypeNAme을 확인하려는 클러스터 노드 유형 이름(배포 템플릿에 지정된 이름)으로 수정해야 합니다.

    $NodeTypeName = "NT2"
    $clustername = <clustername>
    $resourceGroupName = "<rg-name>"
    $supportResourceGroupName = "SFC_" + (Get-AzServiceFabricManagedCluster -ResourceGroupName $resourceGroupName -Name $clustername).ClusterId
    $VMSS = Get-AzVmss -ResourceGroupName $supportResourceGroupName -Name $NodeTypeName
    $VMSS.VirtualMachineProfile.SecurityProfile.EncryptionAtHost
    

    반환 출력은 이와 유사하게 표시해야 합니다.

    $VMSS.VirtualMachineProfile.SecurityProfile.EncryptionAtHost
    True
    

Azure Disk Encryption 사용

Azure Disk Encryption은 Linux의 DM-Crypt 기능이나 Windows의 BitLocker 기능을 사용하여 Azure VM(가상 머신)의 OS 및 데이터 디스크에 대한 볼륨 암호화를 제공합니다. ADE는 Azure Key Vault와 통합되어 디스크 암호화 키와 비밀을 제어하고 관리할 수 있습니다.

이 가이드에서는 ARM(Azure Resource Manager) 템플릿을 통해 가상 머신 확장 집합에 대한 Azure Disk Encryption 기능을 사용하여 Windows에서 Service Fabric 관리 클러스터 노드에 디스크 암호화를 사용하도록 설정하는 방법을 알아봅니다.

  1. Azure Disk Encryption 등록

    가상 머신 확장 집합에 대한 디스크 암호화 미리 보기에는 자체 등록이 필요합니다. 다음 명령을 실행합니다.

    Register-AzProviderFeature -FeatureName "UnifiedDiskEncryption" -ProviderNamespace "Microsoft.Compute"
    

    다음을 실행하여 등록 상태를 확인합니다.

    Get-AzProviderFeature -ProviderNamespace "Microsoft.Compute" -FeatureName "UnifiedDiskEncryption"
    

    상태가 '등록됨'으로 변경되면 진행할 준비가 된 것입니다.

  2. 디스크 암호화용 키 자격 증명 모음 프로비전

    Azure Disk Encryption은 Azure Key Vault를 사용하여 키 디스크 암호화 키와 비밀을 제어하고 관리합니다. 키 자격 증명 모음과 Service Fabric 관리 클러스터는 동일한 Azure 지역 및 구독에 상주해야 합니다. 이러한 요구 사항이 충족되는 한 신규 또는 기존 키 자격 증명 모음을 디스크 암호화에 사용할 수 있습니다.

  3. 디스크 암호화가 설정된 키 자격 증명 모음 만들기

    다음 명령을 실행하여 디스크 암호화를 위한 새 키 자격 증명 모음을 만듭니다. Key Vault의 지역이 클러스터와 동일한 지역에 있는지 확인합니다.

    $resourceGroupName = "<rg-name>" 
    $keyvaultName = "<kv-name>" 
    
    New-AzResourceGroup -Name $resourceGroupName -Location eastus2 
    New-AzKeyVault -ResourceGroupName $resourceGroupName -Name $keyvaultName -Location eastus2 -EnabledForDiskEncryption
    

  1. 디스크 암호화를 사용하도록 기존 키 자격 증명 모음 업데이트

    다음 명령을 실행하여 기존 키 자격 증명 모음에 대해 디스크 암호화를 사용하도록 설정합니다.

    Set-AzKeyVaultAccessPolicy -ResourceGroupName $resourceGroupName -VaultName $keyvaultName -EnabledForDiskEncryption
    

디스크 암호화를 위한 템플릿 및 매개 변수 파일 업데이트

다음 단계에서는 기존 관리 클러스터에서 디스크 암호화를 사용하도록 설정하는 데 필요한 템플릿 변경 내용을 안내합니다. 또는 https://github.com/Azure-Samples/service-fabric-cluster-templates/tree/master/SF-Managed-Standard-SKU-1-NT-DiskEncryption 템플릿을 사용하여 디스크 암호화가 설정된 새 Service Fabric 관리 클러스터를 배포할 수 있습니다.

  1. 템플릿에 다음 매개 변수를 추가하여 keyVaultResourceId 아래에서 사용자 고유의 구독, 리소스 그룹 이름 및 자격 증명 모음 이름으로 대체합니다.

    "parameters": {
     "keyVaultResourceId": { 
       "type": "string", 
       "defaultValue": "/subscriptions/########-####-####-####-############/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<kv-name>", 
       "metadata": { 
       "description": "Full resource id of the Key Vault used for disk encryption." 
    } 
     },
     "volumeType": { 
      "type": "string", 
      "defaultValue": "All", 
      "metadata": { 
       "description": "Type of the volume OS or Data to perform encryption operation" 
    }
    }
    }, 
    
  2. 그런 다음 템플릿의 관리 클러스터 노드 유형에 AzureDiskEncryption VM 확장을 추가합니다.

    "properties": { 
    "vmExtensions": [ 
    { 
    "name": "AzureDiskEncryption", 
    "properties": { 
      "publisher": "Microsoft.Azure.Security", 
      "type": "AzureDiskEncryption", 
      "typeHandlerVersion": "2.2", 
      "autoUpgradeMinorVersion": true, 
      "settings": {      
            "EncryptionOperation": "EnableEncryption", 
            "KeyVaultURL": "[reference(parameters('keyVaultResourceId'),'2016-10-01').vaultUri]", 
         "KeyVaultResourceId": "[parameters('keyVaultResourceID')]",
         "VolumeType": "[parameters('volumeType')]" 
         } 
       } 
    } 
    ] 
    } 
    
  3. 마지막으로 keyVaultResourceId에서 사용자 고유의 구독, 리소스 그룹 및 키 자격 증명 모음 이름으로 대체하여 매개 변수 파일을 업데이트합니다.

    "parameters": { 
    ...
     "keyVaultResourceId": { 
      "value": "/subscriptions/########-####-####-####-############/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<kv-name>" 
     },   
     "volumeType": { 
      "value": "All" 
     }    
    } 
    
  4. 변경 내용 배포 및 확인

    준비가 되면 변경 내용을 배포하여 관리 클러스터에서 디스크 암호화를 사용하도록 설정합니다.

    $clusterName = "<clustername>" 
    
    New-AzResourceGroupDeployment -Name $resourceGroupName -ResourceGroupName $resourceGroupName .\azuredeploy.json -TemplateParameterFile .\azuredeploy.parameters.json -Debug -Verbose 
    

    Get-AzVmssDiskEncryption 명령을 사용하여 노드 유형의 기본 확장 집합에서 디스크 암호화 상태를 확인할 수 있습니다. 먼저 관리 클러스터의 지원 리소스 그룹 이름(기본 가상 네트워크, 부하 분산 장치, 공용 IP, NSG, 확장 집합, 스토리지 계정을 포함)을 확인해야 합니다. VmssName을 확인하려는 클러스터 노드 유형 이름(배포 템플릿에 지정된 이름)으로 수정해야 합니다.

    $VmssName = "NT1"
    $clustername = <clustername>
    $supportResourceGroupName = "SFC_" + (Get-AzServiceFabricManagedCluster -ResourceGroupName $resourceGroupName -Name $clustername).ClusterId
    Get-AzVmssDiskEncryption -ResourceGroupName $supportResourceGroupName -VMScaleSetName $VmssName
    

    출력은 다음과 비슷합니다.

    ResourceGroupName            : SFC_########-####-####-####-############
    VmScaleSetName               : NT1
    EncryptionEnabled            : True
    EncryptionExtensionInstalled : True
    

다음 단계

샘플: 표준 SKU Service Fabric 관리 클러스터, 디스크 암호화가 설정된 1노드 유형

Windows VM용 Azure Disk Encryption

Azure Resource Manager를 사용한 가상 머신 확장 집합 암호화