ARM 템플릿을 사용하여 서로 다른 가상 네트워크에서 호스트 및 관리 포트로 결제 HSM 만들기
Azure Payment HSM은 Thales payShield 10K 결제 HSM(하드웨어 보안 모듈)을 사용하여 Azure 클라우드에서 중요한 실시간 결제 트랜잭션을 위한 암호화 키 작업을 제공하는 "BareMetal" 서비스입니다. Azure 결제 HSM은 서비스 공급자와 개별 금융 기관이 결제 시스템의 디지털 변환 전략을 가속화하고 퍼블릭 클라우드를 채택할 수 있도록 특별히 설계되었습니다. 자세한 내용은 Azure 결제 HSM: 개요를 참조하세요.
이 자습서에서는 ARM 템플릿을 사용하여 동일한 가상 네트워크에 정적 호스트 및 관리 서브넷이 있는 지불결제용 HSM을 만드는 방법을 설명합니다. 대신 다음을 수행할 수 있습니다.
- Azure CLI 또는 PowerShell을 사용하여 동일한 가상 네트워크에 호스트 및 관리 포트가 있는 지불결제용 HSM 만들기
- ARM 템플릿을 사용하여 동일한 가상 네트워크에 호스트 및 관리 포트가 있는 지불결제용 HSM 만들기
- Azure CLI 또는 PowerShell을 사용하여 서로 다른 가상 네트워크에 호스트 및 관리 포트가 있는 지불결제용 HSM 만들기
- ARM 템플릿을 사용하여 서로 다른 가상 네트워크에서 IP 주소가 있는 호스트 및 관리 포트로 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 구독이 있어야 합니다. 계정이 없는 경우 체험 계정을 만들 수 있습니다.
Azure Cloud Shell에서 Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell의 Bash에 대한 빠른 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치합니다. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 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"
}
},
"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을 만드는 방법을 알아봅니다.
추가 리소스:
- 결제 HSM 개요 읽기
- Azure Payment HSM 시작 방법 알아보기
- 몇 가지 일반적인 배포 시나리오를 참조하세요.
- 인증 및 규정 준수에 대해 알아보기
- 질문과 대답을 읽어보세요.