Azure Event Hubs의 정지 데이터를 암호화하기 위한 고객 관리형 키 구성

Azure Event Hubs Azure Storage 서비스 암호화(Azure SSE)를 사용하여 미사용 데이터 암호화를 제공합니다. Event Hubs 서비스는 Azure Storage 사용하여 데이터를 저장합니다. Azure Storage에 저장된 모든 데이터는 Microsoft가 관리하는 키로 암호화되어 있습니다. 자신의 키(Bring Your Own Key, BYOK 또는 고객 관리 키라고도 함)를 사용하면, 데이터는 여전히 Microsoft 관리 키를 사용해 암호화되지만, Microsoft 관리 키도 고객 관리 키를 사용해 암호화됩니다. 이 기능을 통해 고객 관리형 키를 생성하고, 회전시키고, 비활성화하며, 해지하여 Microsoft가 관리하는 키를 암호화하는 데 사용할 수 있습니다. BYOK 기능을 사용하도록 설정하는 것은 네임스페이스에서 일회성 설정 프로세스입니다.

중요함

  • BYOK 기능은 Event Hubs의 프리미엄 및 전용 계층에서 지원됩니다.
  • 암호화는 새 이름공간이나 빈 네임스페이스에만 적용할 수 있습니다. 네임스페이스에 이벤트 허브가 포함되어 있으면 암호화 작업이 실패합니다.

Azure Key Vault(Azure Key Vault 관리형 하드웨어 보안 모듈 포함)을 사용하여 키를 관리하고 키 사용량을 감사할 수 있습니다. 고유한 키를 만들어 key vault 저장하거나 Azure Key Vault API를 사용하여 키를 생성할 수 있습니다. Azure Key Vault 대한 자세한 내용은 Azure Key Vault?

이 문서에서는 Azure portal 사용하여 고객 관리형 키로 key vault 구성하는 방법을 보여줍니다. Azure 포털을 이용해 키 볼트를 만드는 방법을 배우려면 'Quickstart: Azure 포털을 이용해 Azure Key Vault 만들기'를 참조하세요.

사전 요구 사항

  • Azure 구독입니다. 구독이 없으면 시작하기 전에 계정을 만드세요.
  • 새로 생기거나 비어 있는 프리미엄 또는 전용 이벤트 허브 네임스페이스. 새 네임스페이스 또는 빈 네임스페이스에 대해서만 암호화를 사용하도록 설정할 수 있습니다. 전용 계층에는 이벤트 허브 전용 클러스터가 있습니다.
  • 소프트 삭제와 정리 보호가 활성화된 키 볼트(또는 Azure Key Vault Managed HSM)입니다. 모든 키 금고에서 기본적으로 소프트 삭제가 활성화되어 있습니다; 퍼지 보호는 별도로 활성화해야 합니다.

고객 관리형 키 사용(Azure portal)

Azure portal 고객 관리형 키를 사용하도록 설정하려면 다음 단계를 수행합니다. 전용 계층을 사용하는 경우 먼저 Event Hubs Dedicated 클러스터로 이동합니다.

  1. BYOK를 사용할 네임스페이스를 선택합니다.

  2. Event Hubs 네임스페이스의 설정 페이지에서 암호화를 선택합니다.

  3. 다음 이미지에 표시된 것처럼 정지 상태의 고객 관리형 키 암호화를 선택합니다.

    고객 관리형 키 사용

참고 사항

현재 포털을 통해 Azure Key Vault 관리형 HSM을 구성할 수 없습니다.

키를 사용하여 key vault 설정

고객 관리 키를 활성화한 후, 고객 관리 키를 Azure Event Hubs 네임스페이스와 연관시켜야 합니다. Event Hubs는 Azure Key Vault만 지원합니다. 이전 섹션에서 고객 관리 키로 암호화 옵션을 활성화하면, 키를 Azure Key Vault로 가져와야 합니다. 또한, 키 금고에 소프트 삭제 와 정리 보호 가 활성화되어 있어야 합니다. PowerShell이나Azure CLI를 사용해 이 설정을 구성할 수 있습니다.

key vault 생성 또는 관리형 key vault HSM

중요함

Azure Event Hubs에서 고객 관리 키를 사용하려면 키 볼트에 소프트 삭제와 정리 보호가 모두 활성화되어 있어야 합니다. 소프트 삭제는 모든 키 볼트에서 기본적으로 활성화되어 있으며 비활성화할 수 없습니다. 제거 보호는 기본값으로 사용되지 않습니다. Azure 포털에서 새 키 볼트를 만들면, 생성 중에 퍼지 보호를 활성화할 수 있습니다. 기존 키 볼트에서 정리 보호를 활성화해야 한다면 PowerShell이나 Azure CLI를 사용하세요.

  1. 새 key vault 만들려면 Azure Key Vault Quickstart 따릅니다. 기존 키를 가져오는 방법에 대한 자세한 내용은 키, 비밀 및 인증서 사용 참조하세요.

  2. 일시 삭제는 기본적으로 사용하도록 설정되어 있습니다. 볼트를 생성할 때 퍼지 보호를 켜려면 az keyvault create 명령어를 사용하세요.

    az keyvault create --name ContosoVault --resource-group ContosoRG --location westus --enable-purge-protection true
    
  3. 기존 볼트에 퍼지 보호를 추가하려면 az keyvault update 명령을 사용하세요.

    az keyvault update --name ContosoVault --resource-group ContosoRG --enable-purge-protection true
    

키 만들기

다음 단계에 따라 키를 만듭니다.

  1. 새 키를 만들려면 설정 아래 키 메뉴에서 생성/가져오기를 선택합니다.

    생성 또는 가져오기 버튼이 선택된 Key Vault 페이지 스크린샷입니다.

  2. 옵션을 생성으로 설정하고 키에 이름을 지정합니다.

    지정된 키가 있는 키 만들기 페이지의 스크린샷.

  3. 이 키를 선택하여 이벤트 허브 네임스페이스와 연관하여 드롭다운 목록에서 암호화를 진행하세요.

    Azure Key Vault에서 키 선택 페이지의 스크린샷입니다.

    참고 사항

    중복성을 위해 최대 3개의 키를 추가할 수 있습니다. 만약 키가 만료되거나 접근 불가능해지면, 나머지 키들이 암호화에 사용됩니다.

  4. 키 정보를 입력하고 Select를 선택하세요. 이 단계를 통해 Microsoft 관리 키가 귀하의 키(고객 관리 키)로 암호화됩니다.

관리형 ID

Event Hubs 네임스페이스에 할당할 수 있는 관리 ID에는 두 가지 유형이 있습니다.

  • 시스템 할당: Event Hubs 네임스페이스에서 직접 관리 ID를 사용하도록 설정할 수 있습니다. 시스템이 할당한 관리 ID를 사용하도록 설정하면 해당 Event Hubs 네임스페이스의 수명 주기와 연결된 ID가 Microsoft Entra에 만들어집니다. 따라서 네임스페이스가 삭제되면 Azure 자동으로 ID를 삭제합니다. 기본적으로 해당 Azure 리소스(네임스페이스)만 이 ID를 사용하여 Microsoft Entra ID 토큰을 요청할 수 있습니다.

  • 사용자 할당: 사용자 할당 ID라고 하는 독립 실행형 Azure 리소스로 관리 ID를 만들 수도 있습니다. 사용자 할당 관리 ID를 만들고 하나 이상의 Event Hubs 네임스페이스에 할당할 수 있습니다. 사용자가 할당한 관리 ID는 이를 사용하는 리소스와 별도로 관리됩니다. 네임스페이스의 수명 주기와 연결되지 않습니다. 더 이상 필요하지 않을 때 사용자가 할당한 ID를 명시적으로 삭제할 수 있습니다.

    자세한 내용은 Azure 리소스에 대한 관리 ID는 무엇입니까? 참조하세요.

시스템 할당 ID(템플릿)를 사용하여 암호화

이 섹션은 Azure Resource Manager 템플릿을 사용하여 다음 작업을 수행하는 방법을 보여줍니다:

  1. 관리형 서비스 ID를 사용하여 Event Hubs 네임스페이스를 만듭니다.
  2. key vault를 만들고 서비스 ID에 key vault에 대한 액세스 권한을 부여합니다.
  3. Event Hubs 네임스페이스를 Key Vault 정보(키/값)로 업데이트합니다.

관리형 서비스 ID를 사용하여 Event Hubs 클러스터 및 네임스페이스 만들기

이 섹션에서는 Azure Resource Manager 템플릿과 PowerShell을 사용하여 관리 서비스 신원이 있는 Azure Event Hubs 네임스페이스를 만드는 방법을 보여줍니다.

  1. 관리 서비스 ID를 사용하여 Event Hubs 네임스페이스를 만드는 Azure Resource Manager 템플릿을 만듭니다. 파일 이름: CreateEventHubClusterAndNamespace.json.

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace to be created in cluster."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.EventHub/clusters",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('clusterName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Dedicated",
                "capacity":1
             }
          },
          {
             "type":"Microsoft.EventHub/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "capacity":1
             },
             "properties":{
                "isAutoInflateEnabled":false,
                "maximumThroughputUnits":0,
                "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]"
             },
             "dependsOn":[
                "[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]"
             ]
          }
       ],
       "outputs":{
          "EventHubNamespaceId":{
             "type":"string",
             "value":"[resourceId('Microsoft.EventHub/namespaces',parameters('namespaceName'))]"
          }
       }
    }
    
  2. CreateEventHubClusterAndNamespaceParams.json라는 이름의 템플릿 매개 변수 파일을 만듭니다.

    참고 사항

    다음 값을 바꿉니다.

    • <EventHubsClusterName> - Event Hubs 클러스터의 이름
    • <EventHubsNamespaceName> - Event Hubs 네임스페이스의 이름
    • <Location> - Event Hubs 네임스페이스의 위치
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "value":"<EventHubsClusterName>"
          },
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          }
       }
    }
    
    
  3. 다음 PowerShell 명령을 실행하여 템플릿을 배포해 Event Hubs 네임스페이스를 만듭니다. 그런 다음 나중에 사용할 Event Hubs 네임스페이스의 ID를 검색합니다. 명령을 실행하기 전에 {MyRG}는 해당 리소스 그룹의 이름으로 바꿉니다.

    $outputs = New-AzResourceGroupDeployment -Name CreateEventHubClusterAndNamespace -ResourceGroupName {MyRG} -TemplateFile ./CreateEventHubClusterAndNamespace.json -TemplateParameterFile ./CreateEventHubClusterAndNamespaceParams.json
    
    $EventHubNamespaceId = $outputs.Outputs["eventHubNamespaceId"].value
    

Event Hubs 네임스페이스의 아이덴티티에 자격 증명 모음 접근 권한을 부여합니다.

이벤트 허브 네임스페이스의 관리 신원이 키 금고 내 키에 접근할 수 있도록 키 볼트 접근 정책을 설정하세요. 이전 섹션의 Event Hubs 네임스페이스 ID를 사용합니다.

참고 사항

이 단계들은 키 볼트가 접근 정책 권한 모델을 사용한다는 가정입니다. 만약 key vault가 Azure 역할 기반 접근 제어(RBAC) 권한 모델을 사용한다면, 관리 신원에 Key Vault Crypto Service Encryption User 역할을 할당하세요. 자세한 내용은 Azure RBAC에서 Key Vault 키, 인증서, 비밀에 대한 접근 제공을 참조하세요.

$identity = (Get-AzResource -ResourceId $EventHubNamespaceId -ExpandProperties).Identity

Set-AzKeyVaultAccessPolicy -VaultName {keyVaultName} -ResourceGroupName {RGName} -ObjectId $identity.PrincipalId -PermissionsToKeys get,wrapKey,unwrapKey,list

key vault 고객 관리형 키를 사용하여 Event Hubs 네임스페이스의 데이터 암호화

다음 단계를 완료합니다.

  1. 관리 아이덴티티를 가진 프리미엄 네임스페이스를 생성하세요.
  2. 키 자격 증명 모음을 만들고 관리 ID에 키 자격 증명 모음에 대한 액세스 권한을 부여하세요.

이 단계에서는 이벤트 허브 네임스페이스에 키 볼트 정보를 업데이트합니다.

  1. 다음과 같은 내용이 포함된 CreateEventHubClusterAndNamespace.json이라는 JSON 파일을 만듭니다.

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace to be created in cluster."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          },
          "keyVaultUri":{
             "type":"string",
             "metadata":{
                "description":"URI of the KeyVault."
             }
          },
          "keyName":{
             "type":"string",
             "metadata":{
                "description":"KeyName."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.EventHub/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "capacity":1
             },
             "properties":{
                "isAutoInflateEnabled":false,
                "maximumThroughputUnits":0,
                "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]",
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                      {
                         "keyName":"[parameters('keyName')]",
                         "keyVaultUri":"[parameters('keyVaultUri')]"
                      }
                   ]
                }
             }
          }
       ]
    }
    
  2. 다음 템플릿 매개 변수 파일을 만듭니다. UpdateEventHubClusterAndNamespaceParams.json.

    참고 사항

    다음 값을 바꿉니다.

    • <EventHubsClusterName> - Event Hubs 클러스터의 이름
    • <EventHubsNamespaceName> - Event Hubs 네임스페이스의 이름
    • <Location> - Event Hubs 네임스페이스의 위치
    • <KeyVaultName> - 당신의 Key Vault 이름
    • <KeyName> - 주요 자격 증명 모음에 있는 키의 이름입니다.
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "value":"<EventHubsClusterName>"
          },
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          },
          "keyName":{
             "value":"<KeyName>"
          },
          "keyVaultUri":{
             "value":"https://<KeyVaultName>.vault.azure.net"
          }
       }
    }
    
  3. 다음 PowerShell 명령을 실행하여 Resource Manager 템플릿을 배포합니다. 명령을 실행하기 전에 {MyRG}는 해당 리소스 그룹의 이름으로 바꿉니다.

    New-AzResourceGroupDeployment -Name UpdateEventHubNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./UpdateEventHubClusterAndNamespace.json -TemplateParameterFile ./UpdateEventHubClusterAndNamespaceParams.json 
    

사용자가 할당한 ID(템플릿)를 사용하여 암호화

  1. 사용자가 할당한 ID를 만듭니다.
  2. 키 볼트를 만들고 접근 정책을 통해 사용자 할당 신원에 대한 접근 권한을 부여하세요.
  3. 관리되는 사용자 ID 및 key vault 정보를 사용하여 Event Hubs 네임스페이스 만듭니다.

사용자 할당 ID 만들기

사용자 할당 관리 ID 관리의 지침에 따라 사용자 할당 ID를 생성하세요. Azure 포털, Azure CLI, Azure PowerShell, Azure Resource Manager 템플릿 또는 REST를 사용하여 사용자 지정 신원을 생성할 수 있습니다.

참고 사항

네임스페이스에 사용자 ID를 최대 4개까지 할당할 수 있습니다. Azure는 네임스페이스를 삭제하거나 템플릿None에서 를 identity -> type 로 설정하면 이 연관성을 삭제합니다.

사용자 할당된 ID에 대한 액세스 권한 부여

  1. 다음 PowerShell 명령을 실행하여 사용자 신원의 서비스 주체 ID 를 얻으세요. 예 ud1 시에서 는 암호화에 사용하는 사용자 지정 신원입니다.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  2. 액세스 정책을 할당하여 주요 자격 증명 모음에 사용자 할당 ID의 액세스 권한을 부여합니다.

    Set-AzKeyVaultAccessPolicy -VaultName {keyVaultName} -ResourceGroupName {RGName} -ObjectId $servicePrincipal.Id -PermissionsToKeys get,wrapKey,unwrapKey,list    
    

    참고 사항

    최대 3 개의 키를 더할 수 있지만, 암호화에 사용되는 사용자 신원은 모든 키에 동일해야 합니다. 현재 단일 암호화 ID만 지원됩니다.

사용자 ID 및 key vault 정보를 사용하여 Event Hubs 네임스페이스 만들기

이 섹션에서는 Azure Resource Manager 템플릿을 사용해 다음 작업을 수행하는 방법을 보여주는 예시를 제공합니다.

  1. Event Hubs 네임스페이스에 사용자 관리 ID를 할당합니다.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  2. 네임스페이스의 암호화를 활성화하려면 사용자 관리 ID를 지정하고 키 자격 증명 모음에서 키를 선택한 후, 해당 키에 대한 액세스 권한을 부여해야 합니다.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  3. 다음 콘텐츠로 CreateEventHubsNamespaceWithUserIdentityAndEncryption.json이라는 JSON 파일을 만듭니다.

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
        "clusterName":{
            "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace to be created in cluster."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          },
          "keyVaultUri":{
             "type":"string",
             "metadata":{
                "description":"URI of the KeyVault."
             }
          },
          "keyName":{
             "type":"string",
             "metadata":{
                "description":"KeyName."
             },
         "identity": {
            "type": "Object",
            "defaultValue": {
                "userAssignedIdentity": ""
            },
            "metadata": {
                "description": "user-assigned identity."
            }
         }
       },
       "resources":[
          {
             "type":"Microsoft.EventHub/clusters",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('clusterName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Dedicated",
                "capacity":1
             }
          },
          {
             "type":"Microsoft.EventHub/namespaces",
             "apiVersion":"2021-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "capacity":1
             },
            "identity": {
                "type": "UserAssigned",
                "userAssignedIdentities": {
                    "[parameters('identity').userAssignedIdentity]": {}
                }
            },
             "properties":{
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                        {
                            "keyName": "[parameters('keyName')]",
                            "keyVaultUri": "[parameters('keyVaultUri')]",
                            "identity": {
                                "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                            }
                        }
                   ]
                }
             }
          }
       ]
    }        
    
  4. 템플릿 매개 변수 파일(CreateEventHubsNamespaceWithUserIdentityAndEncryptionParams.json)을 만듭니다.

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          },
          "keyVaultUri":{
             "value":"https://<KeyVaultName>.vault.azure.net"
          },
          "keyName":{
             "value":"<KeyName>"
          },
          "identity": {
          "value": {
                "userAssignedIdentity": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER MANAGED IDENTITY NAME>"
          }
       }
       }
    }
    

    매개 변수 파일에서 자리 표시자를 적절한 값으로 바꿉니다.

    자리 표시자 값
    <EventHubsNamespaceName> Event Hubs 네임스페이스의 이름입니다.
    <Location> 네임스페이스를 만들 위치입니다.
    <KeyVaultName> Key Vault의 이름입니다.
    <KeyName> 키 볼트에 있는 키의 이름입니다.
    <AZURE SUBSCRIPTION ID> Azure 구독 ID입니다.
    <RESOURCE GROUP NAME> 사용자 관리 ID의 리소스 그룹입니다.
    <USER MANAGED IDENTITY NAME> 사용자 관리 ID의 이름입니다.
  5. 다음 PowerShell 명령을 실행하여 Resource Manager 템플릿을 배포합니다. 명령을 실행하기 전에 {MyRG}는 해당 리소스 그룹의 이름으로 바꿉니다.

    New-AzResourceGroupDeployment -Name CreateEventHubsNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./CreateEventHubsNamespaceWithUserIdentityAndEncryption.json -TemplateParameterFile ./CreateEventHubsNamespaceWithUserIdentityAndEncryptionParams.json        
    

사용자 할당 및 시스템 할당 ID 모두 사용

네임스페이스에는 시스템 할당 ID와 사용자가 할당한 ID가 동시에 있을 수 있습니다. 이 경우 type 속성은 다음 예와 같이 SystemAssigned, UserAssigned입니다.

"identity": {
    "type": "SystemAssigned, UserAssigned",
    "userAssignedIdentities": {
        "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userIdentity1>" : {}
    }
}

이 시나리오에서는 미사용 데이터 암호화에 시스템 할당 ID 또는 사용자가 할당한 ID를 선택할 수 있습니다.

Resource Manager 템플릿에서 identity 특성을 지정하지 않으면 시스템 관리 ID가 사용됩니다. 다음은 코드 조각 예입니다.

"properties":{
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]"
         }
      ]
   }
}

암호화에 사용자 관리 ID를 사용하는 방법은 다음 예를 참조하세요. identity 특성이 사용자 관리 ID로 설정되어 있습니다.

"properties":{
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]",
            "identity": {
                "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
            }
         }
      ]
   }
}

데이터의 인프라(또는 이중) 암호화 사용

데이터 보안에 대한 더 높은 수준의 보증이 필요한 경우 이중 암호화라고도 하는 인프라 수준 암호화를 사용하도록 설정할 수 있습니다.

인프라 암호화를 사용하도록 설정하면 Event Hubs 네임스페이스 계정의 데이터가 다른 암호화 알고리즘 2개와 다른 키 2개를 사용하여 두 번(서비스 수준에서 한 번, 인프라 수준에서 한 번) 암호화됩니다. 따라서 Event Hubs 데이터의 인프라 암호화는 암호화 알고리즘 또는 키 중 하나가 손상될 수 있는 시나리오로부터 보호합니다.

다음 예시에서 보듯이, 앞선 CreateEventHubClusterAndNamespace.json 의 속성으로 Azure Resource Manager 템플릿 requireInfrastructureEncryption 을 업데이트하여 인프라 암호화를 활성화할 수 있습니다.

"properties":{
   "isAutoInflateEnabled":false,
   "maximumThroughputUnits":0,
   "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]",
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "requireInfrastructureEncryption":true,
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]"
         }
      ]
   }
}

암호화 키 회전, 철회 및 캐시

암호화 키 회전

Azure Key Vault 회전 메커니즘을 사용하여 자격 증명 모음의 키를 교체할 수 있습니다. 활성화 및 만료일을 설정하여 키 회전을 자동화하세요. 이벤트 허브 서비스는 새로운 키 버전을 감지하고 자동으로 사용하기 시작합니다.

키 접근 권한 해지

암호화 키 접근을 취소한다고 해서 이벤트 허브에서 데이터가 삭제되지는 않습니다. 그러나 Event Hubs 네임스페이스에서 데이터에 액세스할 수 없게 됩니다. 암호화 키를 접근 정책을 통해 취소하거나 키를 삭제할 수 있습니다. 접근 정책과 키 금고 보안에 대해 더 알고 싶으시다면, '키 금고에 대한 보안 접근'을 참조하세요.

암호화 키가 해지되면 암호화된 네임스페이스의 Event Hubs 서비스를 작동하지 않습니다. 액세스가 활성화되거나 삭제 키가 복원되면, Event Hubs 서비스는 암호화된 Event Hubs 네임스페이스에서 데이터를 액세스할 수 있도록 키를 선택합니다.

키 캐싱

이벤트 허브 인스턴스(이벤트 허브)는 5분마다 목록에 있는 암호화 키를 폴링합니다. 다음 설문조사가 5분 후에 있을 때까지 캐시하고 사용합니다. 키가 하나라도 사용 가능하면 이벤트 허브에 액세스할 수 있습니다. 폴링 시 나열된 모든 키에 접근할 수 없으면 모든 Event Hubs가 사용 불가능해집니다.

자세한 내용은 다음과 같습니다.

  • 이벤트 허브 서비스는 5분마다 네임스페이스 레코드에 나열된 모든 고객 관리 키를 폴링합니다:
    • 키가 회전하면 레코드가 새 키로 업데이트됩니다.
    • 키가 취소되면 해당 키는 기록에서 삭제됩니다.
    • 모든 키가 취소되면 네임스페이스의 암호화 상태는 취소(Revoked)로 설정됩니다. 이벤트 허브 네임스페이스에서는 데이터를 접근할 수 없습니다.

지리적 재해 복구 사용 시 고려 사항

중요함

BYOK 암호화를 사용하는 네임스페이스에서 Geo-DR을 사용하도록 설정하려면 페어링을 위한 보조 네임스페이스에 시스템 할당 또는 사용자 할당 관리 ID가 사용하도록 설정되어 있어야 합니다.

지리적 재해 복구 - 시스템 할당 ID로 암호화

Microsoft 관리 키의 암호화를 고객 관리 키로 활성화하려면, 지정된 Azure KeyVault에서 시스템 할당 관리 신원에 대한 접근 정책을 설정하세요. 이 정책은 Azure Event Hubs 네임스페이스에서 Azure KeyVault에 대한 통제된 접근을 보장합니다.

이 조건 때문에:

  • 이벤트 허브 네임스페이스에서 이미 지리적 재해 복구 가 활성화되어 있고 고객 관리 키를 활성화하고 싶다면,
  • 고객 관리 키가 이미 설정된 이벤트 허브 네임스페이스에서 Geo-DR을 활성화하고 싶다면, 다음 단계를 따라주세요:
    • 보조 네임스페이스의 관리형 ID에 대한 액세스 정책을 주요 자격 증명 모음에 설정합니다.
    • 기본 및 보조 네임스페이스를 쌍으로 연결합니다.

지리적 재해 복구 - 사용자가 할당한 ID로 암호화

몇 가지 권장 사항입니다.

  1. 관리 ID를 만들고 관리 ID에 Key Vault 권한을 할당합니다.
  2. 아이덴티티를 사용자 지정 아이덴티티로 추가하고, 두 네임스페이스 모두에서 해당 아이덴티티로 암호화를 활성화합니다.
  3. 네임스페이스를 함께 페어링합니다.

사용자가 할당한 ID를 통해 Geo-DR(지역 재해 복구)과 암호화를 사용할 수 있는 조건은 다음과 같습니다.

  1. 암호화를 사용하는 기본 네임스페이스와 보조 네임스페이스를 연결하려면 보조 네임스페이스가 이미 사용자가 할당한 ID를 통해 암호화되어 있어야 합니다.
  2. 이미 연결된 기본 장치에서는 암호화 기능을 사용할 수 없습니다. 이는 보조 장치에 네임스페이스와 연결된 사용자가 할당한 ID가 있는 경우에도 마찬가지입니다.

진단 로그 설정

BYOK를 사용하는 네임스페이스에 대한 진단 로그를 설정하면 작업에 관한 필수 정보가 제공됩니다. 이러한 로그를 사용하도록 설정하고 나중에 이벤트 허브로 스트리밍하거나 로그 분석 도구를 통해 분석하거나 맞춤형 분석을 수행하기 위해 스토리지로 스트리밍할 수 있습니다. 진단 로그에 대한 자세한 내용은 Azure 진단 로그의 오버뷰 참조하세요. 스키마에 대해서는 모니터 데이터 참조를 참조하세요.

Microsoft Azure 고객 잠금 상자

Microsoft Azure용 Customer Lockbox는 Azure Event Hubs에 적용되지 않습니다. Microsoft 담당자는 지원 작업 중에 고객 이벤트 데이터에 액세스하지 않습니다. Microsoft 담당자는 다음 메타데이터에만 액세스할 수 있습니다.

  • Event Hubs 엔터티의 이름(Event Hubs)
  • 네임스페이스 및 해당 엔터티에 대한 구성 설정

이벤트 데이터 헤더 및 이벤트 본문 콘텐츠는 Microsoft 담당자가 액세스할 수 없습니다. 또한 이벤트 데이터는 Event Hubs 서비스로 전송되기 전에 클라이언트 쪽에서 이진 형식으로 직렬화되므로 서버에서 사람이 읽을 수 있는 형식으로 저장되거나 볼 수 없습니다. 따라서 고객 Lockbox 승인은 Azure Event Hubs 지원 시나리오에 필요하지 않습니다.