You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- If using Access Policies for AKV, ensure that your MI has *GET secrets* or higher permissions.
14
14
15
+
- Access to AKV through a public or private endpoint. If public access to AKV needs to be restricted,
16
+
either [configure Network Security Perimeter]({{< ref "/nginxaas-azure/quickstart/security-controls/certificates.md#configure-network-security-perimeter-nsp" >}}) or [integrate with a private endpoint]({{< ref "/nginxaas-azure/quickstart/security-controls/certificates.md#integrate-with-private-endpoint" >}})
17
+
18
+
{{< call-out "important" >}}**Known Issue:** Updating managed identity on NGINXaaS deployment after creation may result in the managed identity not being correctly delegated to the dataplane, which can cause certificate fetch failures when public access is disabled. To avoid this issue, ensure that the managed identity that has access to AKV is assigned during NGINXaaS deployment creation. {{< /call-out >}}
19
+
15
20
- In addition to the MI permissions, if using the Azure portal to manage certificates, ensure that you have read access to list certificates inside the Key Vault:
16
21
17
22
- If using Azure RBAC for AKV, ensure that you have [Key Vault Reader](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#key-vault-reader) or higher permissions.
18
23
19
24
- If using Access Policies for AKV, ensure that you have *LIST certificates* or higher permissions.
20
25
21
-
- If public access is disabled on your key vault, [configure Network Security Perimeter]({{< ref "/nginxaas-azure/quickstart/security-controls/certificates.md#configure-network-security-perimeter-nsp" >}}) and add an inbound access rule to allow your client IP address.
26
+
- If public access is disabled on your key vault, add an inbound access rule to allow your client IP address.
22
27
23
28
- If you're unfamiliar with Azure Key Vault, check out the [Azure Key Vault concepts](https://docs.microsoft.com/en-us/azure/key-vault/general/basic-concepts) documentation from Microsoft.
Copy file name to clipboardExpand all lines: content/nginxaas-azure/changelog.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,10 @@ To see a list of currently active issues, visit the [Known issues]({{< ref "/ngi
13
13
14
14
To review older entries, visit the [Changelog archive]({{< ref "/nginxaas-azure/changelog-archive" >}}) section.
15
15
16
+
## TODO, 2025
17
+
- {{% icon-feature %}} **Support for downloading AKV certificates via Private Endpoints**
18
+
19
+
NGINXaaS now supports downloading certificate from Azure Key Vault via Private Endpoints. This will allow users to increase network security by disabling public access on their Key Vault. For more information, please visit [Integrate with Private Endpoint]({{< ref "/nginxaas-azure/quickstart/security-controls/certificates.md#integrate-with-private-endpoint" >}})
Copy file name to clipboardExpand all lines: content/nginxaas-azure/getting-started/ssl-tls-certificates/overview.md
+74-3Lines changed: 74 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -178,12 +178,12 @@ The following section describes common errors you might encounter while adding S
178
178
```
179
179
</details>
180
180
181
-
#### Error code: `ForbiddenByFirewall`
181
+
#### Error code: `ForbiddenByFirewall` or `ForbiddenByConnection`
182
182
183
183
**Description:** The key vault's firewall is enabled and NGINXaaS is not authorized to fetch certificates.
184
184
185
-
**Resolution:** [Configure Network Security Perimeter]({{< ref "/nginxaas-azure/quickstart/security-controls/certificates.md#configure-network-security-perimeter-nsp">}}) to allow the subscription of the NGINXaaS deployment to access the key vault.
186
-
185
+
**Resolution:**
186
+
1. [Configure Network Security Perimeter]({{< ref "/nginxaas-azure/quickstart/security-controls/certificates.md#configure-network-security-perimeter-nsp">}}) to allow the subscription of the NGINXaaS deployment to access the key vault.
187
187
<details>
188
188
<summary>Create a network security perimeter - Azure CLI</summary>
189
189
@@ -242,6 +242,77 @@ The following section describes common errors you might encounter while adding S
242
242
```
243
243
</details>
244
244
245
+
2. Integrate with a Private Endpoint to allow NGINXaaS to fetch certificates via Azure Private Link.
246
+
<details>
247
+
<summary>Create a Private Link - Azure CLI</summary>
248
+
249
+
1. Get the resource ID of the key vault.
250
+
251
+
Please ensure the following environment variables are set before copying the below Azure CLI command.
252
+
- `KV_NAME`: the name of the key vault
253
+
- `KV_RESOURCE_GROUP`: the name of tshe resource group the key vault is in
254
+
```shell
255
+
key_vault_id=$(az keyvault show --name $KV_NAME \
256
+
--resource-group $KV_RESOURCE_GROUP \
257
+
--query id --output tsv)
258
+
```
259
+
260
+
2. Create a private endpoint.
261
+
262
+
Please ensure the following environment variables are set before copying the below Azure CLI command.
263
+
- `PE_NAME`: the name of the private endpoint
264
+
- `PE_RESOURCE_GROUP`: the name of the resource group the private endpoint will be in
265
+
- `VNET_NAME`: the name of the virtual network that is delegated to NGINXaaS
266
+
- `VNET_RESOURCE_GROUP`: the name of the resource group the virtual network is in
267
+
- `SUBNET_NAME`: the name of the subnet for private endpoints
268
+
- `PE_CONNECTION_NAME`: the name of the private endpoint connection
269
+
- `LOCATION`: the location of the virtual network
270
+
```shell
271
+
az network private-endpoint create --name $PE_NAME \
272
+
--resource-group $PE_RESOURCE_GROUP \
273
+
--vnet-name $VNET_NAME \
274
+
--subnet $SUBNET_NAME \
275
+
--private-connection-resource-id $key_vault_id \
276
+
--group-id vault \
277
+
--connection-name $PE_CONNECTION_NAME \
278
+
--location $LOCATION
279
+
```
280
+
281
+
1. Create a private DNS zone and link VNet.
282
+
283
+
Please ensure the following environment variables are set before copying the below Azure CLI command.
284
+
- `ZONE_RESOURCE_GROUP`: the name of the resource group for the DNS zone
285
+
- `ZONE_NAME`: the name of the DNS zone
286
+
- `DNS_LINK_NAME`: the name of the DNS zone link
287
+
```shell
288
+
vnet_id=$(az network vnet show --name $VNET_NAME \
289
+
--resource-group $VNET_RESOURCE_GROUP \
290
+
--query id --output tsv)
291
+
```
292
+
```shell
293
+
az network private-dns zone create --resource-group $ZONE_RESOURCE_GROUP \
294
+
--name $ZONE_NAME
295
+
az network private-dns link vnet create --resource-group $ZONE_RESOURCE_GROUP \
296
+
--zone-name $ZONE_NAME \
297
+
--name $DNS_LINK_NAME \
298
+
--virtual-network $vnet_id \
299
+
--registration-enabled false
300
+
```
301
+
302
+
1. Add DNS zone group to the private endpoint.
303
+
304
+
Please ensure the following environment variables are set before copying the below Azure CLI command.
305
+
- `DNS_ZONE_GROUP_NAME`: the name of the resource group for the DNS zone
306
+
```shell
307
+
az network private-endpoint dns-zone-group create \
308
+
--resource-group $PE_RESOURCE_GROUP \
309
+
--endpoint-name $PE_NAME \
310
+
--name $DNS_ZONE_GROUP_NAME \
311
+
--private-dns-zone $ZONE_NAME \
312
+
--zone-name $ZONE_NAME
313
+
```
314
+
</details>
315
+
245
316
#### Error code: `AnotherOperationInProgress`
246
317
247
318
**Description:** Another operation on this, or a dependent resource, is in progress.
Copy file name to clipboardExpand all lines: content/nginxaas-azure/quickstart/security-controls/certificates.md
+48-3Lines changed: 48 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -160,9 +160,17 @@ http {
160
160
161
161
For more information on using NGINX to secure traffic to upstream servers, refer to [Securing HTTP Traffic to Upstream Servers](https://docs.nginx.com/nginx/admin-guide/security-controls/securing-http-traffic-upstream/) and [Securing TCP Traffic to Upstream Servers](https://docs.nginx.com/nginx/admin-guide/security-controls/securing-tcp-traffic-upstream/).
162
162
163
-
## Configure Network Security Perimeter (NSP)
164
163
165
-
If you want to disable public access to your key vault, you can configure a [Network Security Perimeter (NSP)](https://learn.microsoft.com/en-us/azure/private-link/network-security-perimeter-concepts). This will allow you to configure access rules to allow NGINXaaS to fetch certificates from your key vault while ensuring all other public access is denied.
164
+
## Restrict Public Access to Key Vault
165
+
If you want to restrict public access to your key vault, you can configure:
166
+
167
+
- a [Network Security Perimeter (NSP)](https://learn.microsoft.com/en-us/azure/private-link/network-security-perimeter-concepts). This will allow you to configure access rules to allow NGINXaaS to fetch certificates from your key vault while ensuring all other public access is denied.
168
+
169
+
- Allow access from a Virtual Network. This will allow you to configure access from the Virtual Network that is delegated to NGINXaaS while ensuring all other public access is denied.
170
+
171
+
- Integrate Azure Key Vault with [Azure Private Link](https://learn.microsoft.com/en-us/azure/private-link/private-link-overview). To enhance network security, you can configure your vault to only allow connections through private endpoints. Traffic between NGINXaaS and AKV traverses over the Microsoft backbone network.
172
+
173
+
### Configure Network Security Perimeter (NSP)
166
174
167
175
1. Follow [Azure's documentation on prerequisites](https://learn.microsoft.com/en-us/azure/private-link/create-network-security-perimeter-portal#prerequisites) to ensure you are registed to create an NSP.
168
176
1. In the Search box, enter **Network Security Perimeters** and select **Network Security Perimeters** from the search results.
@@ -174,7 +182,7 @@ If you want to disable public access to your key vault, you can configure a [Net
174
182
| Subscription | Select the appropriate Azure subscription that you have access to. |
175
183
| Resource group | Specify whether you want to create a new resource group or use an existing one.<br> For more information, see [Azure Resource Group overview](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/overview). |
176
184
| Name | Provide a unique name for your network security perimeter. For this tutorial, we use `nginxaas-nsp`. |
177
-
| Region | Select the region you want to deploy to. Refer to any [regional limitations](https://learn.microsoft.com/en-us/azure/private-link/network-security-perimeter-concepts#regional-limitations) NSP has while in public preview. |
185
+
| Region | Select the region you want to deploy to. |
178
186
| Profile name | Leave the profile name as the default `defaultProfile`. |
179
187
{{< /table >}}
180
188
1. In the **Resources** tab, select {{< icon "plus">}}**Add**.
@@ -197,3 +205,40 @@ By default, the key vault will be associated to the NSP in [Learning mode](https
197
205
1. Select **Change access mode**, set to **Enforced**, and select **Apply**.
198
206
199
207
{{< call-out "note" >}} If you are using the Azure portal to add certificates, you will also need to add an inbound access rule to allow your IP address, so the portal can list the certificates in your key vault. {{< /call-out >}}
1. Select the virtual network and subnet that is delegated to the NGINXaaS deployment.
215
+
216
+
{{< call-out "note" >}} Ensure that the Network Security Group on the subnet delegated to the NGINXaaS deployment allows outbound traffic to the internet{{< /call-out >}}
217
+
218
+
### Integrate with Private Endpoint
219
+
1. Go to your key vault, `nginxaas-kv`.
220
+
1. Select **Settings** followed by **Networking** in the left menu.
221
+
1. Select the **Private endpoint connections** tab.
222
+
1. Select {{< icon "plus">}} **Create**
223
+
1. In the **Basics** tab, provide the following information:
| Subscription | Select the appropriate Azure subscription that you have access to. |
228
+
| Resource group | Specify whether you want to create a new resource group or use an existing one.<br> For more information, see [Azure Resource Group overview](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/overview). |
229
+
| Name | Provide a unique name for your private link. For this tutorial, we use `nginxaas-pl`. |
230
+
| Region | Select the region you want to deploy to.
231
+
{{< /table >}}
232
+
233
+
1. In the **Resources** tab, select **Resource Type** as `Microsoft.KeyVault/vaults` and **Resource** as `nginxaas-kv`
234
+
1. In the **Virtual Network** tab, provide the following information
| Virtual network | Select the virtual network delegated to your NGINXaaS deployment. |
239
+
| Subnet | Select a subnet from your virtual network that is not being used.
240
+
{{< /table >}}
241
+
1. In the **DNS** tab, use the default settings to integrate your private endpoint with a private DNS zone.
242
+
1. Select **Review + Create** and then **Create**.
243
+
244
+
Once a private link is configured and public access is disabled on Azure Key Vault, any certificates added to the NGINXaaS deployment will be fetched over the private link.
0 commit comments