다음을 통해 공유


작업 영역 스토리지 계정에 대한 방화벽 지원을 위한 ARM 템플릿

이 문서에서는 ARM 템플릿과 작업 영역 스토리지 계정에 대한 방화벽 지원에 필요한 필드에 대한 설명을 제공합니다. 작업 영역 스토리지 계정에 대한 방화벽 지원은 ARM 템플릿 속성에 의해 제어되며, 이 속성 storageAccountFirewall은 로 Enabled설정해야 합니다.

규정 준수 보안 프로필 사용과 같은 특정 작업 영역 구성의 경우 다른 ARM 템플릿이 필요할 수 있습니다. 이 경우 Databricks 계정 팀에 문의하세요.

Terraform을 사용하여 작업 영역을 업데이트하거나 만들 수도 있습니다. azurerm_databricks_workspace Terraform 공급자를 참조하세요.

ARM 템플릿 필드

이 표에는 작업 영역 스토리지 계정에 대한 방화벽 지원을 위한 아래 ARM 템플릿에 대한 필드 및 해당 설명이 나와 있습니다.

필드 Description
구독 사용할 Azure 구독입니다.
리소스 그룹 사용할 리소스 그룹입니다. 일반적으로 VNet의 리소스 그룹입니다.
작업 영역 이름 작업 영역의 이름입니다. 기존 작업 영역을 사용하는 경우 기존 작업 영역 이름과 정확히 일치해야 합니다.
관리되는 리소스 그룹 이름 작업 영역에 대한 관리되는 리소스 그룹입니다. 양식에서 기본 이름으로 자동 채워집니다. 조직에서 관리되는 리소스 그룹 이름을 사용자 지정하려는 경우 변경합니다.
Storage 계정 이름 관리되는 리소스 그룹의 Azure 작업 영역 스토리지 계정입니다. 양식에서 기본 이름으로 자동 채워집니다. 조직에서 관리되는 리소스 그룹 이름을 사용자 지정하려는 경우 변경합니다.
작업 영역 VNet 네트워크 ID VNet의 리소스 ID입니다. 기존 작업 영역의 경우 Azure Portal의 작업 영역으로 이동하여 이를 가져올 수 있습니다. 속성을 클릭합니다. 사용자 지정 가상 네트워크 ID에서 값 보기를 JSON으로 클릭합니다. 필드에 리소스 ID를 복사합니다 value .
사용자 지정 프라이빗 서브넷 이름 VNet에 대한 프라이빗 서브넷입니다. 기존 작업 영역의 경우 Azure Portal의 작업 영역으로 이동하여 이를 가져올 수 있습니다. 속성을 클릭합니다. 사용자 지정 프라이빗 서브넷에서 값 보기를 JSON으로 클릭합니다. 필드에 서브넷 이름을 복사합니다 value .
사용자 지정 공용 서브넷 이름 VNet에 대한 공용 서브넷입니다. 기존 작업 영역의 경우 Azure Portal의 작업 영역으로 이동하여 이를 가져올 수 있습니다. 속성을 클릭합니다. 사용자 지정 공용 서브넷 아래에서 값 보기를 JSON으로 클릭합니다. 필드에 서브넷 이름을 복사합니다 value .
위치 지역 필드와 일치하도록 자동으로 채우는 Azure 지역의 짧은 이름입니다.
액세스 커넥터 이름 일반적인 배포의 경우 이 필드를 수정하지 마세요. Azure Databricks는 새 Access Connector를 만듭니다.
관리 ID 유형 일반적인 배포의 경우 이 필드를 수정하지 마세요.
사용자 관리 ID 리소스 ID 일반적인 배포의 경우 이 필드를 수정하지 마세요.
스토리지 계정 방화벽 작업 영역 스토리지 계정에 대해 방화벽 지원을 사용할지 여부를 지정합니다.
공용 IP 사용 안 함 이 값은 .로 true설정해야 합니다. 이렇게 하면 작업 영역 스토리지 계정에 대한 방화벽 지원에 필요한 보안 클러스터 연결이 가능합니다.
공용 네트워크 액세스 일반적으로 이 설정을 사용으로 설정합니다. Private Link를 사용하도록 설정하는 경우 사용할 설정에 대한 Azure Private Link 백 엔드 및 프런트 엔드 연결 사용을 참조하세요.
필수 Nsg 규칙 일반적으로 모든 규칙으로 설정합니다. Private Link를 사용하도록 설정하는 경우 사용할 설정에 대한 Azure Private Link 백 엔드 및 프런트 엔드 연결 사용을 참조하세요.
고객 관리형 키 사용 관리되는 서비스 또는 관리 디스크에 고객 관리형 키를 사용하는 경우 이 true를 설정합니다. 암호화에 대한 고객 관리형 키를 참조하세요.
고객 관리형 키 유형 고객 관리형 키를 사용하는 경우 이 작업 영역에 대해 고객 관리형 키 유형을 선택합니다. Managed Services, ManagedDisks 또는 둘 다를 선택합니다.
관리되는 Srvc Key Vault 키 ID 관리되는 서비스에 고객 관리형 키를 사용하는 경우 키 자격 증명 모음 키 ID를 지정합니다.
Managed Disk Key Vault Key Id 관리 디스크에 고객 관리형 키를 사용하는 경우 키 자격 증명 모음 키 ID를 지정합니다.
관리 디스크 자동 회전 관리 디스크에 고객 관리형 키를 사용하는 경우 새 키 버전을 자동으로 선택할지 여부를 지정합니다.

작업 영역 스토리지 계정에 대한 방화벽 지원을 위한 ARM 템플릿

다음 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')]"
    }
  ]
}