빠른 시작: ARM 템플릿을 사용하여 Azure 결제 HSM 만들기

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

이 빠른 시작에서는 동일한 가상 네트워크에서 호스트 및 관리 포트를 사용하여 결제 HSM을 만드는 방법을 설명합니다. 대신 다음을 수행할 수 있습니다.

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

필수 조건

Important

Azure Payment HSM은 특화된 서비스입니다. 온보딩 및 Azure Payment HSM 사용 자격을 갖추려면 고객은 할당된 Microsoft 영업 담당자가 있어야 하고 CSA가 있어야 하며 연간 약정된 전체 Azure 수익에서 500만 USD 이상의 금전적 요구 사항을 충족해야 합니다.

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

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

    Warning

    “FastPathEnabled” 기능 플래그를 모든 구독 ID에 적용하고 “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
    

    이 네 가지 명령이 모두 “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"
      }
    },
    "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: 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": "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 템플릿을 배포하여 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

배포 유효성 검사

Azure CLI az dedicated-hsm list 명령을 사용하여 결제 HSM이 만들어졌는지 확인할 수 있습니다. 결과 형식을 테이블로 지정하면 출력을 더 쉽게 읽을 수 있습니다.

az dedicated-hsm list -o table

새로 만들어진 결제 HSM의 이름이 표시되어야 합니다.

리소스 정리

이 컬렉션의 다른 빠른 시작과 자습서는 이 빠른 시작을 기반으로 하여 작성됩니다. 이후의 빠른 시작 및 자습서를 계속 진행하려는 경우 이러한 리소스를 유지하는 것이 좋습니다.

더 이상 필요하지 않은 경우 Azure CLI az group delete 명령을 사용하여 리소스 그룹 및 모든 관련 리소스를 제거할 수 있습니다.

az group delete --name "myResourceGroup"

다음 단계

이 빠른 시작에서는 Azure Resource Manager 템플릿을 배포하여 결제 HSM을 만들고, 배포를 확인하고, 결제 HSM을 삭제했습니다. Azure Payment HSM 및 이를 애플리케이션과 통합하는 방법에 대해 자세히 알아보려면 아래 문서를 계속 진행합니다.