次のものをデプロイする ARM テンプレートを作成したいと考えています。
- リソース グループ
- リソース グループの Log Analytics ワークスペース + Sentinel を有効にする
- MSSP の Sentinel へのアクセスを有効にする Lighthouse コード
3 番目の手順を実行するには、subscriptionDeploymentTemplate.json スキーマを使用する必要がありますが、2 番目の手順ではリソース グループも必要なので、deploymentTemplate.json スキーマを使用します。
これらを別々に行うためのコードがありますが、それらをまとめて 1 つの大きなテンプレート ファイルを作成したいと考えています。
問題は、LAW + Sentinel 有効化コードを Microsoft.Resources/deployment リソースに配置すると、コードが機能しないことです。これをネストされたテンプレートとしてデプロイしたいので、deploymentTemplate.json スキーマを使用できます。このリソースにコードを挿入すると、テンプレートの検証中にエラーが発生しました。「デプロイ テンプレートの検証に失敗しました: 'リソース 'Microsoft.OperationalInsights/workspaces/workspace_name' はテンプレートで定義されていません。」
しかし、ネストがない場合でも同じコードが機能します。では、入れ子の場合に依存関数が機能しないのは正常ですか? 私にとっては、他のタイプのリソースの場合は問題ないように思えました。しかし、ここで、"Microsoft.OperationalInsights/workspaces" をデプロイしてから "Microsoft.OperationsManagement/solutions" をデプロイしようとすると、うまくいきません。
コードの関連部分:
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "sentinelDeployment",
"resourceGroup": "[parameters('rgName')]",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2018-05-01",
"name": "rgAssignment",
"resourceGroup": "[parameters('rgName')]",
"properties":{
"mode":"Incremental",
"template":{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2020-08-01",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"properties": {
"retentionInDays": "[parameters('dataRetention')]",
"sku": {
"name": "PerGB2018"
},
"workspaceCapping": {
"dailyQuotaGb": "[parameters('dailyCap')]"
}
}
},
{
"type": "Microsoft.OperationsManagement/solutions",
"apiVersion": "2015-11-01-preview",
"name": "[format('SecurityInsights({0})', parameters('workspaceName'))]",
"location": "[parameters('location')]",
"properties": {
"workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]"
},
"plan": {
"name": "[format('SecurityInsights({0})', parameters('workspaceName'))]",
"product": "OMSGallery/SecurityInsights",
"publisher": "Microsoft",
"promotionCode": ""
},
"dependsOn": [
"[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]"
]
}
]
}
}
}
]
}
}
}
]
したがって、これらのリソースの場合、「Microsoft.Resources/deployments」タイプに配置すると、テンプレートの検証中にdependsOnが機能しないようです。
それは正常ですか?もしそうなら、この問題を解決するために使用できる回避策はありますか? または、これら 3 つのことを 1 つの ARM テンプレートに実装する最良の方法は何でしょうか。