Skip to content

Commit 519b46c

Browse files
authored
Merge pull request #188519 from Blackmist/1915673-roles
note about roles
2 parents 5a8b8da + 90c6281 commit 519b46c

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

articles/machine-learning/how-to-secure-training-vnet.md

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ In this article you learn how to secure the following training compute resources
4747

4848
+ To deploy resources into a virtual network or subnet, your user account must have permissions to the following actions in Azure role-based access control (Azure RBAC):
4949

50-
- "Microsoft.Network/virtualNetworks/*/read" on the virtual network resource. This permission is not needed for Azure Resource Manager (ARM) template deployments.
50+
- "Microsoft.Network/virtualNetworks/*/read" on the virtual network resource. This permission isn't needed for Azure Resource Manager (ARM) template deployments.
5151
- "Microsoft.Network/virtualNetworks/subnet/join/action" on the subnet resource.
5252

5353
For more information on Azure RBAC with networking, see the [Networking built-in roles](../role-based-access-control/built-in-roles.md#networking)
5454

5555
### Azure Machine Learning compute cluster/instance
5656

57-
* Compute clusters and instances create the following resources. If they are unable to create these resources (for example, if there is a resource lock on the resource group) then creation, scale out, or scale in, may fail.
57+
* Compute clusters and instances create the following resources. If they're unable to create these resources (for example, if there's a resource lock on the resource group) then creation, scale out, or scale in, may fail.
5858

5959
* IP address.
6060
* Network Security Group (NSG).
@@ -94,17 +94,19 @@ In this article you learn how to secure the following training compute resources
9494
> [!TIP]
9595
> If your compute cluster or instance does not use a public IP address (a preview feature), these inbound NSG rules are not required.
9696
97-
* For compute cluster or instance, it is now possible to remove the public IP address (a preview feature). If you have Azure Policy assignments prohibiting Public IP creation, then deployment of the compute cluster or instance will succeed.
97+
* For compute cluster or instance, it's now possible to remove the public IP address (a preview feature). If you have Azure Policy assignments prohibiting Public IP creation, then deployment of the compute cluster or instance will succeed.
9898

9999
* One load balancer
100100

101101
For compute clusters, these resources are deleted every time the cluster scales down to 0 nodes and created when scaling up.
102102

103-
For a compute instance, these resources are kept until the instance is deleted. Stopping the instance does not remove the resources.
103+
For a compute instance, these resources are kept until the instance is deleted. Stopping the instance doesn't remove the resources.
104104

105105
> [!IMPORTANT]
106106
> These resources are limited by the subscription's [resource quotas](../azure-resource-manager/management/azure-subscription-service-limits.md). If the virtual network resource group is locked then deletion of compute cluster/instance will fail. Load balancer cannot be deleted until the compute cluster/instance is deleted. Also please ensure there is no Azure Policy assignment which prohibits creation of network security groups.
107107
108+
* If you create a compute instance and plan to use the no public IP address configuration, your Azure Machine Learning workspace's managed identity must be assigned the __Reader__ role for the virtual network that contains the workspace. For more information on assigning roles, see [Steps to assign an Azure role](/azure/role-based-access-control/role-assignments-steps).
109+
108110
* If the Azure Storage Accounts for the workspace are also in the virtual network, use the following guidance on subnet limitations:
109111

110112
* If you plan to use Azure Machine Learning __studio__ to visualize data or use designer, the storage account must be __in the same subnet as the compute instance or cluster__.
@@ -116,7 +118,7 @@ In this article you learn how to secure the following training compute resources
116118
* When your workspace uses a private endpoint, the compute instance can only be accessed from inside the virtual network. If you use a custom DNS or hosts file, add an entry for `<instance-name>.<region>.instances.azureml.ms`. Map this entry to the private IP address of the workspace private endpoint. For more information, see the [custom DNS](./how-to-custom-dns.md) article.
117119
* Virtual network service endpoint policies don't work for compute cluster/instance system storage accounts.
118120
* If storage and compute instance are in different regions, you may see intermittent timeouts.
119-
* If the Azure Container Registry for your workspace uses a private endpoint to connect to the virtual network, you cannot use a managed identity for the compute instance. To use a managed identity with the compute instance, do not put the container registry in the VNet.
121+
* If the Azure Container Registry for your workspace uses a private endpoint to connect to the virtual network, you can’t use a managed identity for the compute instance. To use a managed identity with the compute instance, don't put the container registry in the VNet.
120122
* If you want to use Jupyter Notebooks on a compute instance:
121123

122124
* Don't disable websocket communication. Make sure your network allows websocket communication to `*.instances.azureml.net` and `*.instances.azureml.ms`.
@@ -135,7 +137,7 @@ In this article you learn how to secure the following training compute resources
135137
### Azure Databricks
136138

137139
* In addition to the __databricks-private__ and __databricks-public__ subnets used by Azure Databricks, the __default__ subnet created for the virtual network is also required.
138-
* Azure Databricks does not use a private endpoint to communicate with the virtual network.
140+
* Azure Databricks doesn't use a private endpoint to communicate with the virtual network.
139141

140142
For more information on using Azure Databricks in a virtual network, see [Deploy Azure Databricks in your Azure Virtual Network](/azure/databricks/administration-guide/cloud-configurations/azure/vnet-inject).
141143

@@ -227,8 +229,11 @@ When you enable **No public IP**, your compute cluster doesn't use a public IP f
227229

228230
A compute cluster with **No public IP** enabled has **no inbound communication requirements** from public internet. Specifically, neither inbound NSG rule (`BatchNodeManagement`, `AzureMachineLearning`) is required. You still need to allow inbound from source of **VirtualNetwork** and any port source, to destination of **VirtualNetwork**, and destination port of **29876, 29877**.
229231

232+
> [!IMPORTANT]
233+
> When creating a compute instance with no public IP, the managed identity for your workspace must be assigned the __Owner__ role on the virtual network. For more information on assigning roles, see [Steps to assign an Azure role](/azure/role-based-access-control/role-assignments-steps).
234+
230235
**No public IP** clusters are dependent on [Azure Private Link](how-to-configure-private-link.md) for Azure Machine Learning workspace.
231-
A compute cluster with **No public IP** also requires you to disable private endpoint network policies and private link service network policies. These requirements come from Azure private link service and private endpoints and are not Azure Machine Learning specific. Follow instruction from [Disable network policies for Private Link service](../private-link/disable-private-link-service-network-policy.md) to set the parameters `disable-private-endpoint-network-policies` and `disable-private-link-service-network-policies` on the virtual network subnet.
236+
A compute cluster with **No public IP** also requires you to disable private endpoint network policies and private link service network policies. These requirements come from Azure private link service and private endpoints and aren't Azure Machine Learning specific. Follow instruction from [Disable network policies for Private Link service](../private-link/disable-private-link-service-network-policy.md) to set the parameters `disable-private-endpoint-network-policies` and `disable-private-link-service-network-policies` on the virtual network subnet.
232237

233238
For **outbound connections** to work, you need to set up an egress firewall such as Azure firewall with user defined routes. For instance, you can use a firewall set up with [inbound/outbound configuration](how-to-access-azureml-behind-firewall.md) and route traffic there by defining a route table on the subnet in which the compute cluster is deployed. The route table entry can set up the next hop of the private IP address of the firewall with the address prefix of 0.0.0.0/0.
234239

@@ -245,7 +250,7 @@ You can also create no public IP compute cluster through an ARM template. In the
245250

246251
* If job execution fails with connection issues to ACR or Azure Storage, verify that customer has added ACR and Azure Storage service endpoint/private endpoints to subnet and ACR/Azure Storage allows the access from the subnet.
247252

248-
* To ensure that you have created a no public IP cluster, in Studio when looking at cluster details you will see **No Public IP** property is set to **true** under resource properties.
253+
* To ensure that you've created a no public IP cluster, in Studio when looking at cluster details you'll see **No Public IP** property is set to **true** under resource properties.
249254

250255
## Compute instance
251256

@@ -259,7 +264,7 @@ For **outbound connections** to work, you need to set up an egress firewall such
259264

260265
A compute instance with **No public IP** enabled has **no inbound communication requirements** from public internet. Specifically, neither inbound NSG rule (`BatchNodeManagement`, `AzureMachineLearning`) is required. You still need to allow inbound from source of **VirtualNetwork**, any port source, destination of **VirtualNetwork**, and destination port of **29876, 29877, 44224**.
261266

262-
A compute instance with **No public IP** also requires you to disable private endpoint network policies and private link service network policies. These requirements come from Azure private link service and private endpoints and are not Azure Machine Learning specific. Follow instruction from [Disable network policies for Private Link service source IP](../private-link/disable-private-link-service-network-policy.md) to set the parameters `disable-private-endpoint-network-policies` and `disable-private-link-service-network-policies` on the virtual network subnet.
267+
A compute instance with **No public IP** also requires you to disable private endpoint network policies and private link service network policies. These requirements come from Azure private link service and private endpoints and aren't Azure Machine Learning specific. Follow instruction from [Disable network policies for Private Link service source IP](../private-link/disable-private-link-service-network-policy.md) to set the parameters `disable-private-endpoint-network-policies` and `disable-private-link-service-network-policies` on the virtual network subnet.
263268

264269
To create a no public IP address compute instance (a preview feature) in studio, set **No public IP** checkbox in the virtual network section.
265270
You can also create no public IP compute instance through an ARM template. In the ARM template set enableNodePublicIP parameter to false.

0 commit comments

Comments
 (0)