この記事では、ワークスペース ストレージ アカウントのファイアウォール サポートのための ARM テンプレートを提供し、必須フィールドについて説明します。 ワークスペース ストレージ アカウントのファイアウォール サポートは、ARM テンプレートのプロパティ storageAccountFirewall
によって制御され、これを Enabled
に設定する必要があります。
コンプライアンス セキュリティ プロファイルの有効化など、ワークスペースの特定の構成のためには、別の ARM テンプレートが必要になる場合があります。 その場合は、Databricks アカウント チームにお問い合わせください。
Terraform を使用してワークスペースを更新または作成することもできます。 「azurerm_databricks_workspace Terraform プロバイダー」を参照してください。
ARM テンプレートのフィールド
次の表は、後で示すワークスペース ストレージ アカウントのファイアウォール サポート用 ARM テンプレートのフィールドの一覧とその説明です。
フィールド | 説明 |
---|---|
サブスクリプション | 使用する Azure サブスクリプション。 |
リソース グループ | 使用するリソース グループ。 これは通常、VNet のリソース グループです。 |
ワークスペース名 | ワークスペースの名前です。 既存のワークスペースを使っている場合、これは既存のワークスペース名と正確に一致している必要があります。 |
マネージド リソース グループ名 | ワークスペースのマネージド リソース グループ。 これにより、フォームに既定の名前が自動的に設定されます。 組織でマネージド リソース グループ名をカスタマイズする場合は、変更します。 |
ストレージ アカウント名 | マネージド リソース グループ内の Azure ワークスペース ストレージ アカウント。 これにより、フォームに既定の名前が自動的に設定されます。 組織でマネージド リソース グループ名をカスタマイズする場合は、変更します。 |
ワークスペース VNet ネットワーク ID | VNet のリソース ID。 既存のワークスペースの場合は、Azure portal でワークスペースに移動してこれを取得できます。
[プロパティ] をクリックします。
[カスタム仮想ネットワーク ID] で [JSON として値を表示する] をクリックします。
value フィールドにリソース ID をコピーします。 |
カスタム プライベート サブネット名 | VNet のプライベート サブネット。 既存のワークスペースの場合は、Azure portal でワークスペースに移動してこれを取得できます。
[プロパティ] をクリックします。
[カスタム プライベート サブネット] で、[JSON として値を表示する] を選択します。 [value ] フィールドのサブネット名をコピーします。 |
カスタム パブリック サブネット名 | VNet のパブリック サブネット。 既存のワークスペースの場合は、Azure portal でワークスペースに移動してこれを取得できます。
[プロパティ] をクリックします。
[カスタム パブリック サブネット] で、[JSON として値を表示する] を選択します。 [value ] フィールドのサブネット名をコピーします。 |
場所 | メインの [リージョン] フィールドと一致するように自動的に設定される Azure リージョンの短い名前。 |
アクセス コネクタ名 | 一般的なデプロイでは、このフィールドを変更しないでください。 Azure Databricks によって新しいアクセス コネクタが作成されます。 |
マネージド ID の種類 | 一般的なデプロイでは、このフィールドを変更しないでください。 |
ユーザー マネージド ID リソース ID | 一般的なデプロイでは、このフィールドを変更しないでください。 |
ストレージ アカウント ファイアウォール | ワークスペース ストレージ アカウントのファイアウォール サポートを有効にするかどうかを指定します。 |
パブリック IP の無効化 | これは、true に設定する必要があります。 これは、セキュリティで保護されたクラスター接続を有効にし、ワークスペース ストレージ アカウントのファイアウォール サポートの場合は必要です。 |
パブリック ネットワーク アクセス | 通常、これは Enabled に設定します。 Private Link を有効にする場合、使用する設定については、「Azure Private Link のバックエンド接続とフロントエンド接続を有効にする」をご覧ください。 |
必須の NSG ルール | 通常、これは AllRules に設定します。 Private Link を有効にする場合、使用する設定については、「Azure Private Link のバックエンド接続とフロントエンド接続を有効にする」をご覧ください。 |
カスタマー マネージド キーの有効化 | マネージド サービスまたはマネージド ディスクにカスタマー マネージド キーを使う場合は、これを true に設定します。 「暗号化用のカスタマー マネージド キー」を参照してください。 |
カスタマー マネージド キーの種類 | カスタマー マネージド キーを有効にする場合は、このワークスペースのカスタマー マネージド キーの種類を選びます。 Managed Services、ManagedDisks、または Both を選びます。 |
マネージド サービス キー コンテナー キー ID | マネージド サービスにカスタマー マネージド キーを使う場合は、キー コンテナーのキー ID を指定します。 |
マネージド ディスク キー コンテナー キー ID | マネージド ディスクにカスタマー マネージド キーを使う場合は、キー コンテナーのキー ID を指定します。 |
マネージド ディスク自動ローテーション | マネージド ディスクにカスタマー マネージド キーを使う場合は、新しいキー バージョンを自動的に取得するかどうかを指定します。 |
ワークスペース ストレージ アカウントのファイアウォール サポート用の ARM テンプレート
ワークスペース ストレージ アカウントのファイアウォール サポートを有効または無効にするには、次の ARM テンプレートをコピーしてください。 サンプルの ARM テンプレートをデプロイすることもできます。
- ユーザー割り当てマネージド ID を使用した、ワークスペース ストレージ ファイアウォール用の Azure Databricks テンプレート。
- システム割り当てマネージド ID を使用した、ワークスペース ストレージ ファイアウォール用の Azure Databricks テンプレート
{
"$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')]"
}
]
}