ARM テンプレートを使って、異なる仮想ネットワーク内のホストと管理ポートで決済用 HSM を作成する
Azure Payment HSM は、Thales payShield 10K 支払いハードウェア セキュリティ モジュール (HSM) を使って提供される「ベアメタル」サービスであり、Azure クラウドでのリアルタイムの重要な支払いトランザクションに暗号化キー操作を提供します。 Azure Payment HSM は、サービス プロバイダーと個々の金融機関が、支払いシステムのデジタル トランスフォーメーション戦略を促進し、パブリック クラウドを採用するのに特に役立つように設計されています。 詳細については、Azure Payment HSM の概要に関する記事を参照してください。
このチュートリアルでは、ARM テンプレートを使い、同じ仮想ネットワークの静的ホストと管理サブネットを使って、決済用 HSM を作成する方法について説明します。 代わりに、以下を行うことができます。
- Azure CLI または PowerShell を使って、同じ仮想ネットワーク内のホストと管理ポートで決済用 HSM を作成する
- ARM テンプレートを使って、同じ仮想ネットワーク内のホストと管理ポートで決済用 HSM を作成する
- Azure CLI または PowerShell を使って、異なる仮想ネットワーク内のホストと管理ポートで決済用 HSM を作成する
- ARM テンプレートを使って、異なる仮想ネットワーク内の IP アドレスを持つホストと管理ポートで HSM リソースを作成する
Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイを作成するための一連のプログラミング コマンドを記述しなくても、意図したデプロイを記述できます。
前提条件
重要
Azure Payment HSM は、専門化されたサービスです。 Azure Payment HSM のオンボードと使用の資格を得るには、Microsoft アカウント マネージャーが割り当てられており、クラウド サービス アーキテクト (CSA) が存在している必要があります。
サービスについての問い合わせ、認定プロセスの開始、オンボード前に前提条件の準備を行うには、Microsoft アカウント マネージャーと CSA にメールで要求を送信するように依頼してください。
"Microsoft.HardwareSecurityModules" と "Microsoft.Network" リソース プロバイダー、および Azure Payment HSM 機能を登録する必要があります。 これを行う手順については、「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
これらの 4 つのコマンドすべてが "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 payment 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" ファイルをローカルに保存します。 これらのファイルの内容については、「テンプレートを確認する」セクションを参照してください。
Note
以下の手順では、コマンドを実行しているディレクトリに "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
- managementVnetName: MGMTVNet
- managementVnetAddressPrefix: 10.1.0.0/16
- managementHsmSubnetName: MGMTSubnet
- managementHsmSubnetPrefix: 10.1.0.0/24
次のステップ
次の記事に進み、決済用 HSM の表示方法を確認します。
その他のリソース:
- Payment HSM の概要に関するページを読む
- Azure Payment HSM の使用を開始する方法を確認する
- いくつかの一般的なデプロイ シナリオを確認する
- 認定とコンプライアンスの詳細について学習する
- よく寄せられる質問を参照する