Поделиться через


Краткое руководство. Создание HSM для оплаты Azure с помощью шаблона ARM

Azure Payment HSM — это служба BareMetal, предоставляемая с помощью модулей безопасности аппаратного обеспечения оплаты Thales PayShield 10K (HSM) для предоставления криптографических ключей для транзакций с критическими платежами в облаке Azure. Azure Payment HSM разработан специально для того, чтобы помочь поставщику услуг и отдельному финансовому институту ускорить цифровую трансформацию системы платежей и внедрить общедоступное облако. Дополнительные сведения см. в разделе HSM для оплаты Azure. Обзор.

В этом кратком руководстве описывается, как создать модуль HSM оплаты с портом узла и управления в той же виртуальной сети. Вместо этого можно сделать следующее:

Шаблон Azure Resource Manager — это файл нотации объектов JavaScript (JSON), который определяет инфраструктуру и конфигурацию проекта. В шаблоне используется декларативный синтаксис. Вы описываете предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.

Необходимые компоненты

Внимание

Azure Payment HSM — это специализированная служба. Чтобы получить право на подключение и использование HSM для оплаты Azure, клиенты должны иметь назначенного диспетчера учетных записей Майкрософт и архитектора облачных служб (CSA).

Чтобы узнать о службе, запустите процесс квалификации и подготовьте предварительные требования перед подключением, попросите руководителя учетной записи Майкрософт и CSA отправить запрос по электронной почте.

  • Необходимо зарегистрировать поставщики ресурсов Microsoft.HardwareSecurityModules и Microsoft.Network, а также функции HSM оплаты Azure. Для этого необходимо зарегистрировать поставщик ресурсов HSM для оплаты Azure и функции поставщика ресурсов.

    Предупреждение

    Необходимо применить флаг функции FastPathEnabled к каждому идентификатору подписки и добавить тег fastpathenabled в каждую виртуальную сеть. Дополнительные сведения см. в разделе Fastpathenabled.

    Чтобы быстро определить, зарегистрированы ли поставщики ресурсов и функции, используйте команду Azure CLI az provider show . (Выходные данные этой команды более удобочитаются при отображении в табличном формате.)

    az provider show --namespace "Microsoft.HardwareSecurityModules" -o table
    
    az provider show --namespace "Microsoft.Network" -o table
    
    az feature registration show -n "FastPathEnabled"  --provider-namespace "Microsoft.Network" -o table
    
    az feature registration show -n "AzureDedicatedHsm"  --provider-namespace "Microsoft.HardwareSecurityModules" -o table
    

    Вы можете продолжить работу с этим кратким запуском, если все четыре из этих команд возвращают "Зарегистрировано".

  • У вас должна быть подписка Azure. Вы можете создать бесплатную учетную запись, если у вас еще ее нет.

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

Изучение шаблона

Шаблон, используемый в этом кратком руководстве, azuredeploy.json:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "resourceName": {
      "type": "String",
      "metadata": {
        "description": "Azure Payment HSM resource name"
      }
    },
    "stampId": {
      "type": "string",
      "defaultValue": "stamp1",
      "metadata": {
        "description": "stamp id"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "payShield10K_LMK1_CPS60",
      "metadata": {
        "description": "PayShield SKU name. It must be one of the following: payShield10K_LMK1_CPS60, payShield10K_LMK1_CPS250, payShield10K_LMK1_CPS2500, payShield10K_LMK2_CPS60, payShield10K_LMK2_CPS250, payShield10K_LMK2_CPS2500"
      }
    },
    "vnetName": {
      "type": "string",
      "metadata": {
        "description": "Virtual network name"
      }
    },
    "vnetAddressPrefix": {
      "type": "string",
      "metadata": {
        "description": "Virtual network address prefix"
      }
    },
    "hsmSubnetName": {
      "type": "String",
      "metadata": {
        "description": "Subnet name"
      }
    },
    "hsmSubnetPrefix": {
      "type": "string",
      "metadata": {
        "description": "Subnet prefix"
      }
    }
  },
  "variables": {},
  "resources": [
   {
     "type": "Microsoft.HardwareSecurityModules/dedicatedHSMs",
     "apiVersion": "2021-11-30",
     "name": "[parameters('resourceName')]",
	   "location": "[parameters('location')]",
     "dependsOn": [
      "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('hsmSubnetName'))]"
     ],
     "sku": {
       "name": "[parameters('skuName')]"
     },
     "properties": {
       "networkProfile": {
         "subnet": {
           "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('hsmSubnetName'))]"
         }
        },
		"managementNetworkProfile": {
          "subnet": {
            "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('hsmSubnetName'))]"
          }
        },
        "stampId": "[parameters('stampId')]"
     }
   },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2020-11-01",
      "name": "[parameters('vnetName')]",
      "location": "[parameters('location')]",
      "tags": {
        "fastpathenabled": "true"
      },
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vnetAddressPrefix')]"
          ]
        },
        "subnets": [
          {
            "name": "[parameters('hsmSubnetName')]",
            "properties": {
              "addressPrefix": "[parameters('hsmSubnetPrefix')]",
              "delegations": [
                {
                  "name": "Microsoft.HardwareSecurityModules.dedicatedHSMs",
                  "properties": {
                    "serviceName": "Microsoft.HardwareSecurityModules/dedicatedHSMs"
                  }
                }
              ],
              "privateEndpointNetworkPolicies": "Enabled",
              "privateLinkServiceNetworkPolicies": "Enabled"
            }
          }
        ],
        "enableDdosProtection": false
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks/subnets",
      "apiVersion": "2020-11-01",
      "name": "[concat(parameters('vnetName'), '/', parameters('hsmSubnetName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetName'))]"
      ],
      "properties": {
        "addressPrefix": "[parameters('hsmSubnetPrefix')]",
        "delegations": [
          {
            "name": "Microsoft.HardwareSecurityModules.dedicatedHSMs",
            "properties": {
              "serviceName": "Microsoft.HardwareSecurityModules/dedicatedHSMs"
            }
          }
        ],
        "privateEndpointNetworkPolicies": "Enabled",
        "privateLinkServiceNetworkPolicies": "Enabled"
      }
    }
  ]
}

Ресурс Azure, определенный в шаблоне:

  • Microsoft.HardwareSecurityModules.dedicatedHSMs: создание устройства HSM для оплаты Azure.

Соответствующий файл azuredeploy.parameters.json:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "resourceName": {
      "value": "myhsm1"
    },
    "stampId": {
      "value": "stamp1"
    },
    "skuName": {
      "value": "payShield10K_LMK1_CPS60"
    },
    "vnetName": {
      "value": "myHsmVnet"
    },
    "vnetAddressPrefix": {
      "value": "10.0.0.0/16"
    },
    "hsmSubnetName": {
      "value": "myHsmSubnet"
    },
    "hsmSubnetPrefix": {
      "value": "10.0.0.0/24"
    }
  }
}

Развертывание шаблона

В этом примере вы используете Azure CLI для развертывания шаблона ARM для создания HSM для оплаты Azure.

Сначала сохраните файлы "azuredeploy.json" и "azuredeploy.parameters.json" локально для использования на следующем шаге. Содержимое этих файлов можно найти в разделе "Просмотр шаблона ".

Примечание.

Ниже предполагается, что файл azuredeploy.json и azuredeploy.parameters.json находятся в каталоге, из которого выполняются команды. Если файлы находятся в другом каталоге, необходимо соответствующим образом настроить пути к файлам.

Затем создайте группу ресурсов Azure.

Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими. С помощью команды az group create создайте группу ресурсов с именем myResourceGroup в расположении eastus.

az group create --name "myResourceGroup" --location "EastUS"

Наконец, используйте команду azure CLI az deployment group create для развертывания шаблона ARM.

az deployment group create --resource-group "MyResourceGroup" --name myPHSMDeployment --template-file "azuredeploy.json"

При появлении запроса укажите следующие значения для параметров:

  • resourceName: myPaymentHSM
  • vnetName: myVNet
  • vnetAddressPrefix: 10.0.0.0/16
  • hsmSubnetName: mySubnet
  • hsmSubnetPrefix: 10.0.0.0/24

Проверка развертывания

Вы можете проверить, создан ли модуль HSM оплаты с помощью команды Azure CLI az dedicated-hsm list . Выходные данные проще считывать, если форматировать результаты в виде таблицы:

az dedicated-hsm list -o table

Вы увидите имя созданного устройства HSM для оплаты.

Очистка ресурсов

Другие руководства в этой серии созданы на основе этого документа. Если вы планируете продолжить работу с последующими краткими руководствами и статьями, эти ресурсы можно не удалять.

Вы можете удалить ставшую ненужной группу ресурсов и все связанные с ней ресурсы с помощью Azure CLI, выполнив команду az group delete:

az group delete --name "myResourceGroup"

Следующие шаги

В этом кратком руководстве вы развернули шаблон Azure Resource Manager для создания HSM оплаты, проверили развертывание и удалили модуль HSM оплаты. Чтобы узнать больше о HSM для оплаты Azure и о том, как интегрировать его с приложениями, перейдите к приведенным ниже статьям.