다음을 통해 공유


ARM 템플릿을 사용하여 서로 다른 가상 네트워크에서 호스트 및 관리 포트로 결제 HSM 만들기

Azure Payment HSM은 Thales payShield 10K 결제 HSM(하드웨어 보안 모듈)을 사용하여 Azure 클라우드에서 중요한 실시간 결제 트랜잭션을 위한 암호화 키 작업을 제공하는 "BareMetal" 서비스입니다. Azure 결제 HSM은 서비스 공급자와 개별 금융 기관이 결제 시스템의 디지털 변환 전략을 가속화하고 퍼블릭 클라우드를 채택할 수 있도록 특별히 설계되었습니다. 자세한 내용은 Azure 결제 HSM: 개요를 참조하세요.

이 자습서에서는 ARM 템플릿을 사용하여 동일한 가상 네트워크에 정적 호스트 및 관리 서브넷이 있는 지불결제용 HSM을 만드는 방법을 설명합니다. 대신 다음을 수행할 수 있습니다.

Azure Resource Manager 템플릿은 프로젝트에 대한 인프라 및 구성을 정의하는 JSON(JavaScript Object Notation) 파일입니다. 이 템플릿은 선언적 구문을 사용합니다. 배포를 만들기 위한 프로그래밍 명령의 시퀀스를 작성하지 않고 의도하는 배포를 설명합니다.

필수 조건

Important

Azure Payment HSM은 특화된 서비스입니다. Azure Payment HSM에 온보딩하고 사용할 자격을 갖추려면 고객에게 Microsoft 계정 관리자가 할당되어야 하며 CSA(클라우드 서비스 설계자)가 있어야 합니다.

서비스에 대해 문의하고 검증 프로세스를 시작하고 온보딩 전에 필수 조건을 준비하려면 Microsoft 영업 담당자와 CSA에게 이메일을 통해 요청을 보내도록 요청합니다.

  • Azure Payment HSM 기능뿐만 아니라 “Microsoft.HardwareSecurityModules” 및 “Microsoft.Network” 리소스 공급자를 등록해야 합니다. 이를 위한 단계는 Azure Payment HSM 리소스 공급자 및 리소스 공급자 기능 등록에 있습니다.

    리소스 공급자 및 기능이 이미 등록되어 있는지 빠르게 확인하려면 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
    

    이 네 가지 명령이 모두 “Registered”를 반환하면 이 빠른 시작을 계속할 수 있습니다.

  • Azure 구독이 있어야 합니다. 계정이 없는 경우 체험 계정을 만들 수 있습니다.

템플릿 검토

이 빠른 시작에서 사용되는 템플릿은 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"
      }
    },
    "host1PrivateIPAddress": {
      "type": "string"
    },
    "host2PrivateIPAddress": {
      "type": "string"
    },
    "stampId": {
      "type": "string",
      "defaultValue": "stamp1",
      "metadata": {
        "description": "stamp id"
      }
    },
    "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": "Host port virtual network name"
      }
    },
    "vnetAddressPrefix": {
      "type": "string",
      "metadata": {
        "description": "Host port virtual network address prefix"
      }
    },
    "hsmSubnetName": {
      "type": "String",
      "metadata": {
        "description": "Host port subnet name"
      }
    },
    "hsmSubnetPrefix": {
      "type": "string",
      "metadata": {
        "description": "Host port subnet prefix"
      }
    },
    "managementVnetName": {
      "type": "string",
      "metadata": {
        "description": "Management port virtual network name"
      }
    },
    "managementVnetAddressPrefix": {
      "type": "string",
      "metadata": {
        "description": "Management port virtual network address prefix"
      }
    },
    "managementHsmSubnetName": {
      "type": "String",
      "metadata": {
        "description": "Management port subnet name"
      }
    },
    "managementHsmSubnetPrefix": {
      "type": "string",
      "metadata": {
        "description": "Management port subnet prefix"
      }
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.HardwareSecurityModules/dedicatedHSMs",
      "apiVersion": "2021-11-30",
      "name": "[parameters('resourceName')]",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('hsmSubnetName'))]",
        "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('managementVnetName'), parameters('managementHsmSubnetName'))]"
      ],
      "sku": {
        "name": "[parameters('skuName')]"
      },
      "properties": {
        "networkProfile": {
          "subnet": {
              "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('hsmSubnetName'))]"
          },
          "NetworkInterfaces": [
              {
                "privateIpAddress": "[parameters('host1PrivateIPAddress')]"
              },
              {
                "privateIpAddress": "[parameters('host2PrivateIPAddress')]"
              }
          ]
        },  
        "managementNetworkProfile": {
          "subnet": {
            "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('managementVnetName'), parameters('managementHsmSubnetName'))]"
          }
        },
        "stampId": "[parameters('stampId')]"
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2020-11-01",
      "name": "[parameters('vnetName')]",
      "location": "[resourceGroup().location]",
      "tags": {
        "fastpathenabled": "true"
      },
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vnetAddressPrefix')]"
          ]
        },
        "subnets": [
          {
            "name": "[parameters('hsmSubnetName')]",
            "properties": {
              "addressPrefix": "[parameters('hsmSubnetPrefix')]",
              "serviceEndpoints": [],
              "delegations": [
                {
                  "name": "Microsoft.HardwareSecurityModules.dedicatedHSMs",
                  "properties": {
                    "serviceName": "Microsoft.HardwareSecurityModules/dedicatedHSMs"
                  }
                }
              ],
              "privateEndpointNetworkPolicies": "Enabled",
              "privateLinkServiceNetworkPolicies": "Enabled"
            }
          }
        ],
        "virtualNetworkPeerings": [],
        "enableDdosProtection": false
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2020-11-01",
      "name": "[parameters('managementVnetName')]",
      "location": "[resourceGroup().location]",
      "tags": {
        "fastpathenabled": "true"
      },
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('managementVnetAddressPrefix')]"
          ]
        },
        "subnets": [
          {
            "name": "[parameters('managementHsmSubnetName')]",
            "properties": {
              "addressPrefix": "[parameters('managementHsmSubnetPrefix')]",
              "serviceEndpoints": [],
              "delegations": [
                {
                  "name": "Microsoft.HardwareSecurityModules.dedicatedHSMs",
                  "properties": {
                    "serviceName": "Microsoft.HardwareSecurityModules/dedicatedHSMs"
                  }
                }
              ],
              "privateEndpointNetworkPolicies": "Enabled",
              "privateLinkServiceNetworkPolicies": "Enabled"
            }
          }
        ],
        "virtualNetworkPeerings": [],
        "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')]",
        "serviceEndpoints": [],
        "delegations": [
          {
            "name": "Microsoft.HardwareSecurityModules.dedicatedHSMs",
            "properties": {
              "serviceName": "Microsoft.HardwareSecurityModules/dedicatedHSMs"
            }
          }
        ],
        "privateEndpointNetworkPolicies": "Enabled",
        "privateLinkServiceNetworkPolicies": "Enabled"
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks/subnets",
      "apiVersion": "2020-11-01",
      "name": "[concat(parameters('managementVnetName'), '/', parameters('managementHsmSubnetName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks', parameters('managementVnetName'))]"
      ],
      "properties": {
        "addressPrefix": "[parameters('managementHsmSubnetPrefix')]",
        "serviceEndpoints": [],
        "delegations": [
          {
            "name": "Microsoft.HardwareSecurityModules.dedicatedHSMs",
            "properties": {
              "serviceName": "Microsoft.HardwareSecurityModules/dedicatedHSMs"
            }
          }
        ],
        "privateEndpointNetworkPolicies": "Enabled",
        "privateLinkServiceNetworkPolicies": "Enabled"
      }
    }
  ]
}

템플릿에 정의된 Azure 리소스는 다음과 같습니다.

  • Microsoft.HardwareSecurityModules.dedicatedHSMs: Azure 결제 HSM을 만듭니다.

해당 azuredeploy.parameters.json 파일은 다음과 같습니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "resourceName": {
      "value": "myPHSM"
    },
    "stampId": {
      "value": "stamp1"
    },
    "skuName": {
      "value": "payShield10K_LMK1_CPS60"
    },
    "vnetName": {
      "value": "myVNet"
    },
    "vnetAddressPrefix": {
      "value": "10.0.0.0/16"
    },
    "hsmSubnetName": {
      "value": "mySubnet"
    },
    "hsmSubnetPrefix": {
      "value": "10.0.0.0/24"
    },
    "host1PrivateIPAddress": {
      "value": "10.0.0.5"
    },
    "host2PrivateIPAddress": {
      "value": "10.0.0.6"
    },
    "managementVnetName": {
      "value": "MGMTVNet"
    },
    "managementVnetAddressPrefix": {
      "value": "10.1.0.0/16"
    },
    "managementHsmSubnetName": {
      "value": "MGMTSubnet"
    },
    "managementHsmSubnetPrefix": {
      "value": "10.1.0.0/24"
    }
  }
}

템플릿 배포

이 예에서는 Azure CLI를 사용하여 ARM 템플릿을 배포하여 Azure 결제 HSM을 만듭니다.

먼저 다음 단계에서 사용할 수 있도록 "azuredeploy.json" 및 "azuredeploy.parameters.json" 파일을 로컬로 저장합니다. 이러한 파일의 콘텐츠는 템플릿 검토 섹션에서 찾을 수 있습니다.

참고 항목

아래 단계에서는 "azuredeploy.json" 및 "azuredeploy.parameters.json" 파일이 명령을 실행 중인 디렉터리에 있다고 가정합니다. 파일이 다른 디렉터리에 있는 경우 그에 따라 파일 경로를 조정해야 합니다.

다음으로 Azure 리소스 그룹을 만듭니다.

리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. az group create 명령을 사용하여 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.

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
  • managementVnetName: MGMTVNet
  • managementVnetAddressPrefix: 10.1.0.0/16
  • managementHsmSubnetName: MGMTSubnet
  • managementHsmSubnetPrefix: 10.1.0.0/24

다음 단계

다음 문서로 이동하여 지불결제용 HSM을 만드는 방법을 알아봅니다.

추가 리소스: