ワークスペース ストレージ アカウントのファイアウォール サポート用の ARM テンプレート

このページでは、ARM テンプレートと、ワークスペース ストレージ アカウントのファイアウォール サポートに必要なフィールドの説明を提供します。 ワークスペース ストレージ アカウントのファイアウォール サポートは、ARM テンプレートのプロパティ storageAccountFirewall によって制御され、これを Enabled に設定する必要があります。

コンプライアンス セキュリティ プロファイルの有効化など、特定のワークスペース構成では、ARM テンプレートのカスタマイズが必要になる場合があります。 ARM テンプレートに関する質問がある場合は、Azure support チケットを提出してください。 Terraform を使用してワークスペース構成を管理することもできます。 プロパティを含む、compliance_security_profile_enabledを参照してください。

ARM テンプレートのフィールド

次の表に、ワークスペース ストレージ アカウントのファイアウォール サポート用の次の ARM テンプレートのフィールドとその説明を示します。

フィールド 説明
サブスクリプション Azureのサブスクリプションを使用します。
リソース グループ 使用するリソース グループ。 これは通常、VNet のリソース グループです。
ワークスペース名 ワークスペースの名前です。 既存のワークスペースを使っている場合、これは既存のワークスペース名と正確に一致している必要があります。
マネージド リソース グループ名 ワークスペースのマネージド リソース グループ。 これにより、フォームに既定の名前が自動的に設定されます。 組織でマネージド リソース グループ名をカスタマイズする場合は、変更します。
ストレージ アカウント名 マネージド リソース グループ内の Azure ワークスペース ストレージ アカウント。 これにより、フォームに既定の名前が自動的に設定されます。 組織でマネージド リソース グループ名をカスタマイズする場合は、変更します。
ワークスペース VNet ネットワーク ID VNet のリソース ID。 既存のワークスペースの場合は、Azure ポータルでワークスペースに移動することで、これを取得できます。 [プロパティ] をクリックします。 [カスタム仮想ネットワーク ID][JSON として値を表示する] をクリックします。 value フィールドにリソース ID をコピーします。
カスタム プライベート サブネット名 VNet のプライベート サブネット。 既存のワークスペースの場合は、Azure ポータルでワークスペースに移動することで、これを取得できます。 [プロパティ] をクリックします。 [カスタム プライベート サブネット] で、[JSON として値を表示する] を選択します。 [value] フィールドのサブネット名をコピーします。
カスタム パブリック サブネット名 VNet のパブリック サブネット。 既存のワークスペースの場合は、Azure ポータルでワークスペースに移動することで、これを取得できます。 [プロパティ] をクリックします。 [カスタム パブリック サブネット] で、[JSON として値を表示する] を選択します。 [value] フィールドのサブネット名をコピーします。
場所 メインの Region フィールドと一致するように自動的に設定されるAzure領域の短い名前。
アクセス コネクタ名 一般的なデプロイでは、このフィールドを変更しないでください。 Azure Databricksは、新しい Access コネクタを作成します。
マネージド ID の種類 一般的なデプロイでは、このフィールドを変更しないでください。
ユーザー マネージド ID リソース ID 一般的なデプロイでは、このフィールドを変更しないでください。
ストレージ アカウント ファイアウォール ワークスペース ストレージ アカウントのファイアウォール サポートを有効にするかどうかを指定します。
パブリック IP の無効化 これは、true に設定する必要があります。 これは、セキュリティで保護されたクラスター接続を有効にし、ワークスペース ストレージ アカウントのファイアウォール サポートの場合は必要です。
パブリック ネットワーク アクセス 通常、これは Enabled に設定します。 Private Linkを有効にする場合は、使用する設定のAzure Private Linkの概念を参照してください。
必須の NSG ルール 通常、これは AllRules に設定します。 Private Linkを有効にする場合は、使用する設定のAzure Private Linkの概念を参照してください。
カスタマー マネージド キーの有効化 マネージド サービスまたはマネージド ディスクにカスタマー マネージド キーを使う場合は、これを true に設定します。 「暗号化用のカスタマー マネージド キー」を参照してください。
カスタマー マネージド キーの種類 カスタマー マネージド キーを有効にする場合は、このワークスペースのカスタマー マネージド キーの種類を選びます。 Managed ServicesManagedDisks、または Both を選びます。
マネージド サービス キー・ボールト キー ID マネージド サービスにカスタマー マネージド キーを使う場合は、キー コンテナーのキー ID を指定します。
管理ディスク キー・ボールト キー ID マネージド ディスクにカスタマー マネージド キーを使う場合は、キー コンテナーのキー ID を指定します。
マネージド ディスク自動ローテーション マネージド ディスクにカスタマー マネージド キーを使う場合は、新しいキー バージョンを自動的に取得するかどうかを指定します。

ワークスペース ストレージ アカウントのファイアウォール サポート用の ARM テンプレート

ワークスペース ストレージ アカウントのファイアウォール サポートを有効または無効にするには、次の ARM テンプレートをコピーしてください。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspaceName": {
      "type": "String",
      "metadata": {
        "description": "The name of the Azure Databricks workspace to update."
      }
    },
    "location": {
      "defaultValue": "[resourceGroup().location]",
      "type": "String",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "managedResourceGroupName": {
      "defaultValue": "[format('databricks-rg-{0}-{1}', parameters('workspaceName'), uniqueString(parameters('workspaceName'), resourceGroup().id))]",
      "type": "String",
      "metadata": {
        "description": "The Managed Resource GroupName of the workspace. Do not change unless using a custom managed resource group name."
      }
    },
    "storageAccountName": {
      "defaultValue": "[concat('dbstorage', uniqueString(resourceGroup().id, subscription().id))]",
      "type": "String",
      "metadata": {
        "description": "Workspace storage account name. Do not change unless using a custom storage account name."
      }
    },
    "workspaceVnetResourceId": {
      "defaultValue": "Required Resource ID of the workspace VNet",
      "type": "String",
      "metadata": {
        "description": "The Resource ID of the injected VNet for the workspace"
      }
    },
    "workspacePrivateSubnetName": {
      "defaultValue": "private-subnet",
      "type": "String",
      "metadata": {
        "description": "The private subnet name for the workspace"
      }
    },
    "workspacePublicSubnetName": {
      "defaultValue": "public-subnet",
      "type": "String",
      "metadata": {
        "description": "The public subnet name for the workspace"
      }
    },
    "accessConnectorName": {
      "defaultValue": "[format('{0}-access-connector', parameters('workspaceName'))]",
      "type": "String",
      "metadata": {
        "description": "The access connector to create for the workspace"
      }
    },
    "ManagedIdentityType": {
      "defaultValue": "SystemAssigned",
      "allowedValues": ["SystemAssigned", "UserAssigned", "SystemAssigned,UserAssigned"],
      "type": "String",
      "metadata": {
        "description": "Access Connector Managed Identity Type"
      }
    },
    "userManagedIdentityResourceId": {
      "defaultValue": "Required For User Mananged Identity",
      "type": "String",
      "metadata": {
        "description": "The Resource Id of the User Managed Identity"
      }
    },
    "storageAccountFirewall": {
      "defaultValue": "Enabled",
      "allowedValues": ["Enabled", "Disabled"],
      "type": "String",
      "metadata": {
        "description": "Enable or Disable firewall support for workspace default storage feature"
      }
    },
    "disablePublicIp": {
      "defaultValue": true,
      "type": "Bool",
      "metadata": {
        "description": "Specifies whether to deploy Azure Databricks workspace with secure cluster connectivity (SCC) enabled or not (No Public IP)."
      }
    },
    "publicNetworkAccess": {
      "defaultValue": "Enabled",
      "allowedValues": ["Enabled", "Disabled"],
      "type": "String",
      "metadata": {
        "description": "Indicates whether public network access is allowed to the workspace with private endpoint - possible values are Enabled or Disabled."
      }
    },
    "requiredNsgRules": {
      "defaultValue": "AllRules",
      "allowedValues": ["AllRules", "NoAzureDatabricksRules"],
      "type": "String",
      "metadata": {
        "description": "Indicates whether to retain or remove the AzureDatabricks outbound NSG rule - possible values are AllRules, NoAzureDatabricksRules (private link)."
      }
    },
    "storageDoubleEncryption": {
      "defaultValue": false,
      "type": "Bool",
      "metadata": {
        "description": "Is double encryption for managed storage enabled ?"
      }
    },
    "customerManagedKeysEnabled": {
      "defaultValue": false,
      "type": "Bool",
      "metadata": {
        "description": "Is CMK for managed services enabled ?"
      }
    },
    "CustomerManagedKeyType": {
      "defaultValue": "ManagedServicesCMK",
      "allowedValues": ["ManagedServicesCMK", "ManagedDisksCMK", "BothCMK"],
      "type": "String",
      "metadata": {
        "description": "Selects the CMK types for this workspace, Managed Services and/or Disks, Workspace storage account is not enabled here"
      }
    },

    "ManagedSrvcKeyVaultKeyId": {
      "defaultValue": "https://kv-url/keys/keyname/version",
      "type": "String",
      "metadata": {
        "description": "The Key Vault Key ID"
      }
    },
    "ManagedDiskKeyVaultKeyId": {
      "defaultValue": "https://kv-url/keys/keyname/version",
      "type": "String",
      "metadata": {
        "description": "The Key Vault Key ID"
      }
    },
    "ManagedDiskAutoRotation": {
      "type": "bool",
      "defaultValue": false,
      "allowedValues": [true, false],
      "metadata": {
        "description": "Whether managed disk will pick up new key version automatically."
      }
    }
  },
  "variables": {
    "ApiVersion": "2024-05-01",
    "workspaceSku": "premium",
    "systemAssignedObject": {
      "type": "[parameters('ManagedIdentityType')]"
    },
    "userAssignedObject": {
      "type": "[parameters('ManagedIdentityType')]",
      "userAssignedIdentities": {
        "[parameters('userManagedIdentityResourceId')]": {}
      }
    },
    "ConnectorSystemAssigned": {
      "id": "[resourceId('Microsoft.Databricks/accessConnectors', parameters('accessConnectorName'))]",
      "identityType": "[parameters('ManagedIdentityType')]"
    },
    "connectorUserAssigned": {
      "id": "[resourceId('Microsoft.Databricks/accessConnectors', parameters('accessConnectorName'))]",
      "identityType": "[parameters('ManagedIdentityType')]",
      "userAssignedIdentityId": "[parameters('userManagedIdentityResourceId')]"
    },
    "managedSrvcFirst": "[split(parameters('ManagedSrvcKeyVaultKeyId'),'/keys/')]",
    "managedSrvcSecond": "[split(variables('managedSrvcFirst')[1],'/')]",
    "managedDiskFirst": "[split(parameters('ManagedDiskKeyVaultKeyId'),'/keys/')]",
    "managedDiskSecond": "[split(variables('managedDiskFirst')[1],'/')]",
    "ManagedServicesCMK": {
      "managedServices": {
        "keySource": "Microsoft.Keyvault",
        "keyVaultProperties": {
          "keyVaultUri": "[variables('managedSrvcFirst')[0]]",
          "keyName": "[variables('managedSrvcSecond')[0]]",
          "keyVersion": "[variables('managedSrvcSecond')[1]]"
        }
      }
    },
    "ManagedDisksCMK": {
      "managedDisk": {
        "keySource": "Microsoft.Keyvault",
        "keyVaultProperties": {
          "keyVaultUri": "[variables('managedDiskFirst')[0]]",
          "keyName": "[variables('managedDiskSecond')[0]]",
          "keyVersion": "[variables('managedDiskSecond')[1]]"
        },
        "rotationToLatestKeyVersionEnabled": "[parameters('ManagedDiskAutoRotation')]"
      }
    },
    "BothCMK": {
      "managedServices": {
        "keySource": "Microsoft.Keyvault",
        "keyVaultProperties": {
          "keyVaultUri": "[variables('managedSrvcFirst')[0]]",
          "keyName": "[variables('managedSrvcSecond')[0]]",
          "keyVersion": "[variables('managedSrvcSecond')[1]]"
        }
      },
      "managedDisk": {
        "keySource": "Microsoft.Keyvault",
        "keyVaultProperties": {
          "keyVaultUri": "[variables('managedDiskFirst')[0]]",
          "keyName": "[variables('managedDiskSecond')[0]]",
          "keyVersion": "[variables('managedDiskSecond')[1]]"
        },
        "rotationToLatestKeyVersionEnabled": "[parameters('ManagedDiskAutoRotation')]"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Databricks/accessConnectors",
      "apiVersion": "2023-05-01",
      "name": "[parameters('accessConnectorName')]",
      "location": "[parameters('location')]",
      "identity": "[if(equals(parameters('ManagedIdentityType'),'SystemAssigned'),variables('systemAssignedObject'),variables('userAssignedObject'))]",
      "properties": {}
    },
    {
      "type": "Microsoft.Databricks/workspaces",
      "apiVersion": "[variables('ApiVersion')]",
      "name": "[parameters('workspaceName')]",
      "location": "[parameters('location')]",
      "dependsOn": ["[resourceId('Microsoft.Databricks/accessConnectors', parameters('accessConnectorName'))]"],
      "sku": {
        "name": "[variables('workspaceSku')]"
      },
      "properties": {
        "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]",
        "publicNetworkAccess": "[parameters('publicNetworkAccess')]",
        "requiredNsgRules": "[parameters('requiredNsgRules')]",
        "accessConnector": "[if(equals(parameters('ManagedIdentityType'),'SystemAssigned'),variables('ConnectorSystemAssigned'),variables('connectorUserAssigned'))]",
        "defaultStorageFirewall": "[parameters('storageAccountFirewall')]",
        "parameters": {
          "customVirtualNetworkId": {
            "value": "[parameters('workspaceVnetResourceId')]"
          },
          "customPrivateSubnetName": {
            "value": "[parameters('workspacePrivateSubnetName')]"
          },
          "customPublicSubnetName": {
            "value": "[parameters('workspacePublicSubnetName')]"
          },
          "enableNoPublicIp": {
            "value": "[parameters('disablePublicIp')]"
          },
          "storageAccountName": {
            "value": "[parameters('storageAccountName')]"
          },
          "requireInfrastructureEncryption": {
            "value": "[parameters('storageDoubleEncryption')]"
          }
        }
      },
      "condition": "[not(parameters('customerManagedKeysEnabled'))]"
    },
    {
      "type": "Microsoft.Databricks/workspaces",
      "apiVersion": "[variables('ApiVersion')]",
      "name": "[parameters('workspaceName')]",
      "location": "[parameters('location')]",
      "dependsOn": ["[resourceId('Microsoft.Databricks/accessConnectors', parameters('accessConnectorName'))]"],
      "sku": {
        "name": "[variables('workspaceSku')]"
      },
      "properties": {
        "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]",
        "publicNetworkAccess": "[parameters('publicNetworkAccess')]",
        "requiredNsgRules": "[parameters('requiredNsgRules')]",
        "accessConnector": "[if(equals(parameters('ManagedIdentityType'),'SystemAssigned'),variables('ConnectorSystemAssigned'),variables('connectorUserAssigned'))]",
        "encryption": {
          "entities": "[variables(parameters('CustomerManagedKeyType'))]"
        },
        "defaultStorageFirewall": "[parameters('storageAccountFirewall')]",
        "parameters": {
          "customVirtualNetworkId": {
            "value": "[parameters('workspaceVnetResourceId')]"
          },
          "customPrivateSubnetName": {
            "value": "[parameters('workspacePrivateSubnetName')]"
          },
          "customPublicSubnetName": {
            "value": "[parameters('workspacePublicSubnetName')]"
          },
          "enableNoPublicIp": {
            "value": "[parameters('disablePublicIp')]"
          },
          "storageAccountName": {
            "value": "[parameters('storageAccountName')]"
          },
          "requireInfrastructureEncryption": {
            "value": "[parameters('storageDoubleEncryption')]"
          }
        }
      },
      "condition": "[parameters('customerManagedKeysEnabled')]"
    }
  ]
}