Skip to content

Commit ec9f508

Browse files
authored
Merge pull request #92915 from santoshc1/master
Updates for private endpoints support and revisions to storage security guide
2 parents aa45e00 + 5c65280 commit ec9f508

File tree

8 files changed

+186
-37
lines changed

8 files changed

+186
-37
lines changed

articles/iot-hub/iot-hub-bulk-identity-mgmt.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ Only 1 active device import or export job is allowed at a time for all IoT Hub t
8686

8787
## Export devices
8888

89-
Use the **ExportDevicesAsync** method to export the entirety of an IoT hub identity registry to an [Azure Storage](../storage/index.yml) blob container using a [Shared Access Signature](../storage/common/storage-security-guide.md#data-plane-security).
89+
Use the **ExportDevicesAsync** method to export the entirety of an IoT hub identity registry to an [Azure Storage](../storage/index.yml) blob container using a [Shared Access Signature](../storage/common/storage-security-guide.md#authorization).
9090

9191
This method enables you to create reliable backups of your device information in a blob container that you control.
9292

articles/storage/blobs/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@
120120
href: ../common/storage-advanced-threat-protection.md?toc=%2fazure%2fstorage%2fblobs%2ftoc.json
121121
- name: Built-in security controls
122122
href: ../common/storage-security-controls.md?toc=%2fazure%2fstorage%2fblobs%2ftoc.json
123+
- name: Use Azure Private Endpoints
124+
href: ../common/storage-private-endpoints.md?toc=%2fazure%2fstorage%2fblobs%2ftoc.json
123125
- name: Data redundancy
124126
href: ../common/storage-redundancy.md?toc=%2fazure%2fstorage%2fblobs%2ftoc.json
125127
items:
199 KB
Loading

articles/storage/common/storage-network-security.md

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,34 @@ ms.service: storage
88
ms.topic: conceptual
99
ms.date: 03/21/2019
1010
ms.author: tamram
11-
ms.reviewer: cbrooks
11+
ms.reviewer: santoshc
1212
ms.subservice: common
1313
---
1414

1515
# Configure Azure Storage firewalls and virtual networks
1616

17-
Azure Storage provides a layered security model. This model enables you to secure your storage accounts to a specific subset of networks​. When network rules are configured, only applications requesting data over the specified set of networks can access a storage account. You can limit access to your storage account to requests originating from specified IP addresses, IP ranges or from a list of subnets in Azure Virtual Networks.
17+
Azure Storage provides a layered security model. This model enables you to secure and control the level of access to your storage accounts that your applications and enterprise environments demand, based on the type and subset of networks​ used. When network rules are configured, only applications requesting data over the specified set of networks can access a storage account. You can limit access to your storage account to requests originating from specified IP addresses, IP ranges or from a list of subnets in an Azure Virtual Network (VNet).
1818

19-
An application that accesses a storage account when network rules are in effect requires proper authorization for the request. Authorization is supported with Azure Active Directory (Azure AD) credentials for blobs and queues, with a valid account access key, or with an SAS token.
19+
Storage accounts have a public endpoint that is accessible through the internet. You can also create [Private Endpoints for your storage account](storage-private-endpoints.md), which assigns a private IP address from your VNet to the storage account, and secures all traffic between your VNet and the storage account over a private link. The Azure storage firewall provides access control access for the public endpoint of your storage account. You can also use the firewall to block all access through the public endpoint when using private endpoints. Your storage firewall configuration also enables select trusted Azure platform services to access the storage account securely.
20+
21+
An application that accesses a storage account when network rules are in effect still requires proper authorization for the request. Authorization is supported with Azure Active Directory (Azure AD) credentials for blobs and queues, with a valid account access key, or with an SAS token.
2022

2123
> [!IMPORTANT]
22-
> Turning on firewall rules for your storage account blocks incoming requests for data by default, unless the requests originate from a service operating within an Azure Virtual Network (VNet). Requests that are blocked include those from other Azure services, from the Azure portal, from logging and metrics services, and so on.
24+
> Turning on firewall rules for your storage account blocks incoming requests for data by default, unless the requests originate from a service operating within an Azure Virtual Network (VNet) or from allowed public IP addresses. Requests that are blocked include those from other Azure services, from the Azure portal, from logging and metrics services, and so on.
2325
>
24-
> You can grant access to Azure services that operate from within a VNet by allowing traffic from the subnet hosting the service instance. You can also enable a limited number of scenarios through the [Exceptions](#exceptions) mechanism described in the following section. To access data from the storage account through the Azure portal, you would need to be on a machine within the trusted boundary (either IP or VNet) that you set up.
26+
> You can grant access to Azure services that operate from within a VNet by allowing traffic from the subnet hosting the service instance. You can also enable a limited number of scenarios through the [Exceptions](#exceptions) mechanism described below. To access data from the storage account through the Azure portal, you would need to be on a machine within the trusted boundary (either IP or VNet) that you set up.
2527
2628
[!INCLUDE [updated-for-az](../../../includes/updated-for-az.md)]
2729

2830
## Scenarios
2931

30-
To secure your storage account, you should first configure a rule to deny access to traffic from all networks (including internet traffic) by default. Then, you should configure rules that grant access to traffic from specific VNets. This configuration enables you to build a secure network boundary for your applications. You can also configure rules to grant access to traffic from select public internet IP address ranges, enabling connections from specific internet or on-premises clients.
32+
To secure your storage account, you should first configure a rule to deny access to traffic from all networks (including internet traffic) on the public endpoint, by default. Then, you should configure rules that grant access to traffic from specific VNets. You can also configure rules to grant access to traffic from select public internet IP address ranges, enabling connections from specific internet or on-premises clients. This configuration enables you to build a secure network boundary for your applications.
3133

32-
Network rules are enforced on all network protocols to Azure storage, including REST and SMB. To access data using tools such as the Azure portal, Storage Explorer, and AZCopy, explicit network rules must be configured.
34+
You can combine firewall rules that allow access from specific virtual networks and from public IP address ranges on the same storage account. Storage firewall rules can be applied to existing storage accounts, or when creating new storage accounts.
3335

34-
You can apply network rules to existing storage accounts, or when you create new storage accounts.
36+
Storage firewall rules apply to the public endpoint of a storage account. You don't need any firewall access rules to allow traffic for private endpoints of a storage account. The process of approving the creation of a private endpoint grants implicit access to traffic from the subnet that hosts the private endpoint.
37+
38+
Network rules are enforced on all network protocols to Azure storage, including REST and SMB. To access data using tools such as the Azure portal, Storage Explorer, and AZCopy, explicit network rules must be configured.
3539

3640
Once network rules are applied, they're enforced for all requests. SAS tokens that grant access to a specific IP address serve to limit the access of the token holder, but don't grant new access beyond configured network rules.
3741

@@ -215,7 +219,7 @@ You can manage virtual network rules for storage accounts through the Azure port
215219
```
216220
217221
> [!TIP]
218-
> To add a rule for a subnet in a VNet belonging to another Azure AD tenant, use a fully-qualified subnet ID in the form "/subscriptions/subscription-ID/resourceGroups/resourceGroup-Name/providers/Microsoft.Network/virtualNetworks/vNet-name/subnets/subnet-name".
222+
> To add a rule for a subnet in a VNet belonging to another Azure AD tenant, use a fully-qualified subnet ID in the form "/subscriptions/\<subscription-ID\>/resourceGroups/\<resourceGroup-Name\>/providers/Microsoft.Network/virtualNetworks/\<vNet-name\>/subnets/\<subnet-name\>".
219223
>
220224
> You can use the **subscription** parameter to retrieve the subnet ID for a VNet belonging to another Azure AD tenant.
221225
@@ -243,9 +247,12 @@ IP network rules are only allowed for **public internet** IP addresses. IP addre
243247
> [!NOTE]
244248
> IP network rules have no effect on requests originating from the same Azure region as the storage account. Use [Virtual network rules](#grant-access-from-a-virtual-network) to allow same-region requests.
245249
246-
Only IPV4 addresses are supported at this time.
250+
> [!NOTE]
251+
> Services deployed in the same region as the storage account use private Azure IP addresses for communication. Thus, you cannot restrict access to specific Azure services based on their public inbound IP address range.
252+
253+
Only IPV4 addresses are supported for configuration of storage firewall rules.
247254
248-
Each storage account supports up to 100 IP network rules, which may be combined with [Virtual network rules](#grant-access-from-a-virtual-network).
255+
Each storage account supports up to 100 IP network rules.
249256
250257
### Configuring access from on-premises networks
251258
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
---
2+
title: Using Private Endpoints with Azure Storage | Microsoft Docs
3+
description: Overview of private endpoints for secure access to storage accounts from virtual networks.
4+
services: storage
5+
author: santoshc
6+
7+
ms.service: storage
8+
ms.topic: article
9+
ms.date: 09/25/2019
10+
ms.author: santoshc
11+
ms.reviewer: santoshc
12+
ms.subservice: common
13+
---
14+
15+
# Using Private Endpoints for Azure Storage (Preview)
16+
17+
Azure Storage enables the use of [Private Endpoints](../../private-link/private-endpoint-overview.md) for clients on a virtual network (VNet) to securely access data in a storage account over a [Private Link](../../private-link/private-link-overview.md). The private endpoint uses an IP address from the VNet address space for your storage account service. Network traffic between the clients on the VNet and the storage account traverses over the VNet and a private link on the Microsoft backbone network, eliminating exposure from the public internet.
18+
19+
Using private endpoints for your storage account enables you to:
20+
- Secure your storage account by configuring the storage firewall to block all connections on the public endpoint for the storage service.
21+
- Increases security for the virtual network (VNet), by enabling you to block exfiltration of data from the VNet.
22+
- Securely connect to storage accounts from on-premises networks that connect to the VNet using [VPN](../../vpn-gateway/vpn-gateway-about-vpngateways.md) or [ExpressRoutes](../../expressroute/expressroute-locations.md) with private-peering.
23+
24+
## Conceptual Overview
25+
![Private Endpoints for Azure Storage Overview](media/storage-private-endpoints/storage-private-endpoints-overview.jpg)
26+
27+
A Private Endpoint is a special network interface in your [Virtual Network](../../virtual-network/virtual-networks-overview.md) (VNet) for an Azure service. It provides secure connectivity between clients in your VNet and your storage account. The private endpoint is assigned an IP address from the IP address range of your VNet. The connection between the private endpoint and the storage service uses a secure private link.
28+
29+
Applications in the VNet can connect to the storage service over the private endpoint seamlessly, using the same connection strings and authorization mechanisms that they would use otherwise. Private endpoints can be used with all protocols supported by the storage account, including REST and SMB.
30+
31+
When you create a private endpoint for a storage service in your VNet, a consent request is sent for approval to the storage account owner. If the user requesting the creation of the private endpoint is also an owner of the storage account, this consent request is automatically approved.
32+
33+
Storage account owners can approve or reject the consent requests, as well as view or manage the private endpoints, through the 'Private Endpoints' tab for the storage account in the [Azure portal](https://portal.azure.com).
34+
35+
You can secure your storage account to only accept connections from your VNet, by [configuring the storage firewall](storage-network-security.md#change-the-default-network-access-rule) to deny access through its public endpoint by default. You don't need a storage firewall rule to allow traffic from a VNet that has a private endpoint, since the storage firewall rules only apply to its public endpoint. Private endpoints instead rely on the consent flow for granting subnets access to the storage service.
36+
37+
### Private Endpoints for Storage Service
38+
39+
When creating the private endpoint, you must specify the storage account and the storage service to which it connects. You require a private endpoint for each storage service in a storage account to which access is needed, namely [Blobs](../blobs/storage-blobs-overview.md), [Data Lake Storage Gen2](../blobs/data-lake-storage-introduction.md), [Files](../files/storage-files-introduction.md), [Queues](../queues/storage-queues-introduction.md), [Tables](../tables/table-storage-overview.md), or [Static Websites](../blobs/storage-blob-static-website.md).
40+
41+
To ensure read availability for a [read-access geo redundant storage account](storage-redundancy-grs.md#read-access-geo-redundant-storage), you need separate private endpoints for both the primary and secondary instances of the service.
42+
43+
#### Resources
44+
45+
For more detailed information on creating a private endpoint for your storage account, refer to the following articles:
46+
47+
- [Connect privately to a storage account from the Storage Account experience in the Azure portal](../../private-link/create-private-endpoint-storage-portal.md)
48+
- [Create a private endpoint using the Private Link Center in the Azure portal](../../private-link/create-private-endpoint-portal.md)
49+
- [Create a private endpoint using Azure CLI](../../private-link/create-private-endpoint-cli.md)
50+
- [Create a private endpoint using Azure PowerShell](../../private-link/create-private-endpoint-powershell.md)
51+
52+
### DNS changes for Private Endpoints
53+
54+
When you create a private endpoint for a storage service, we update the DNS CNAME resource record for that storage endpoint to an alias in a subdomain with the prefix '*privatelink*'. By default, we also create a [private DNS zone](../../dns/private-dns-overview.md) attached to the VNet. This private DNS zone corresponds to the subdomain with the prefix '*privatelink*', and contains the DNS A resource records for the private endpoints.
55+
56+
When you resolve the storage endpoint URL from outside the VNet in which the private endpoint is created, it still resolves to the public endpoint for the storage service. When resolved from the VNet hosting the private endpoint, the storage endpoint URL resolves to the private endpoint's IP address.
57+
58+
For the illustrated example above, the DNS resource records for the storage account 'StorageAccountA', when resolved from outside the VNet hosting the private endpoint, will be:
59+
60+
| Name | Type | Value |
61+
| :---------------------------------------------------- | :---: | :---------------------------------------------------- |
62+
| ``StorageAccountA.blob.core.windows.net`` | CNAME | ``StorageAccountA.privatelink.blob.core.windows.net`` |
63+
| ``StorageAccountA.privatelink.blob.core.windows.net`` | CNAME | \<public endpoint\> |
64+
| \<public endpoint\> | A | \<storage service public IP address\> |
65+
66+
As previously mentioned, you can deny all access through the public endpoint using the storage firewall.
67+
68+
The DNS resource records for StorageAccountA, when resolved by a client in the VNet hosting the private endpoint, will be:
69+
70+
| Name | Type | Value |
71+
| :---------------------------------------------------- | :---: | :---------------------------------------------------- |
72+
| ``StorageAccountA.blob.core.windows.net`` | CNAME | ``StorageAccountA.privatelink.blob.core.windows.net`` |
73+
| ``StorageAccountA.privatelink.blob.core.windows.net`` | A | 10.1.1.5 |
74+
75+
This approach enables access to the storage account using the same connection string from the VNet hosting the private endpoints, as well as clients outside the VNet. You can use the storage firewall to deny access to all clients outside the VNet.
76+
77+
## Pricing
78+
79+
For pricing details, see [Azure Private Link pricing](https://azure.microsoft.com/pricing/details/private-link).
80+
81+
## Known Issues
82+
83+
### Copy Blob failures
84+
85+
Currently, [Copy Blob](https://docs.microsoft.com/rest/api/storageservices/Copy-Blob) commands issued to storage accounts accessed through private endpoints fail when the source storage account is protected by a firewall.
86+
87+
### Storage access constraints for clients in VNets with Private Endpoints
88+
89+
Clients in VNets that have an existing storage private endpoint face constraints when accessing other storage accounts with private endpoints. For instance, suppose a VNet N1 has a private endpoint for a storage account A1 for, say, the blob service. If storage account A2 has a private endpoint in a VNet N2 for the blob service, then clients in VNet N1 must also access the blob service in account A2 using a private endpoint. If storage account A2 does not have any private endpoints for the blob service, then clients in VNet N1 can access its blob service without a private endpoint.
90+
91+
This constraint is a result of the DNS changes made when account A2 creates a private endpoint.
92+
93+
### NSG rules on subnets with private endpoints
94+
95+
[Network Security Group](../../virtual-network/security-overview.md) (NSG) rules cannot be configured for subnets with private endpoints, at this time. A limited workaround for this issue is to implement your access rules for private endpoints on the source subnets, though this approach may require a higher management overhead.

0 commit comments

Comments
 (0)