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, refer to [Restrict Public Access to Key Vault]({{< ref "/nginxaas-azure/quickstart/security-controls/certificates.md#restrict-public-access-to-key-vault" >}}).
16
+
15
17
- 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
18
17
19
- 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
20
19
21
- If using Access Policies for AKV, ensure that you have *LIST certificates* or higher permissions.
20
22
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.
23
+
- If public access is disabled on your key vault, add an inbound access rule to allow your client IP address.
22
24
23
25
- 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
@@ -19,6 +19,10 @@ To review older entries, visit the [Changelog archive]({{< ref "/nginxaas-azure/
19
19
20
20
Users can now test the availability of specific IP addresses from their deployment's dataplane. This is useful for debugging connectivity issues and determining if a problem is in NGINX configuration or Azure network configuration. Please see the docs for the [connectivity test tool]({{< ref "/nginxaas-azure/get-help/connectivity.md" >}}) for further details.
21
21
22
+
- {{% icon-feature %}} **Support for downloading AKV certificates via Private Endpoints**
23
+
24
+
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" >}})
25
+
22
26
## September 18, 2025
23
27
24
28
- {{% icon-feature %}} **Notification on update to deployments using the Stable Upgrade Channel**
@@ -95,7 +95,7 @@ The following section describes common errors you might encounter while adding S
95
95
96
96
-**User assigned managed identity**
97
97
98
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
98
+
Set the following environment variables before copying the below Azure CLI command.
99
99
-`MI_NAME`: the name of the managed identity
100
100
-`MI_RESOURCE_GROUP`: the name of the resource group the managed identity is in
101
101
```shell
@@ -106,7 +106,7 @@ The following section describes common errors you might encounter while adding S
106
106
107
107
- **System assigned managed identity**
108
108
109
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
109
+
Set the following environment variables before copying the below Azure CLI command.
110
110
- `DEP_NAME`: the name of the NGINXaaS deployment
111
111
- `DEP_RESOURCE_GROUP`: the name of the resource group the NGINXaaS deployment is in
112
112
```shell
@@ -116,7 +116,7 @@ The following section describes common errors you might encounter while adding S
116
116
```
117
117
1. Get the resource ID of the key vault.
118
118
119
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
119
+
Set the following environment variables before copying the below Azure CLI command.
120
120
- `KV_NAME`: the name of the key vault
121
121
- `KV_RESOURCE_GROUP`: the name of the resource group the key vault is in
122
122
```shell
@@ -145,7 +145,7 @@ The following section describes common errors you might encounter while adding S
145
145
146
146
- **User assigned managed identity**
147
147
148
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
148
+
Set the following environment variables before copying the below Azure CLI command.
149
149
- `MI_NAME`: the name of the managed identity
150
150
- `MI_RESOURCE_GROUP`: the name of the resource group the managed identity is in
151
151
```shell
@@ -156,7 +156,7 @@ The following section describes common errors you might encounter while adding S
156
156
157
157
- **System assigned managed identity**
158
158
159
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
159
+
Set the following environment variables before copying the below Azure CLI command.
160
160
- `DEP_NAME`: the name of the NGINXaaS deployment
161
161
- `DEP_RESOURCE_GROUP`: the name of the resource group the NGINXaaS deployment is in
162
162
```shell
@@ -167,7 +167,7 @@ The following section describes common errors you might encounter while adding S
167
167
168
168
1. Create the access policy.
169
169
170
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
170
+
Set the following environment variables before copying the below Azure CLI command.
171
171
- `KV_NAME`: the name of the key vault
172
172
- `KV_RESOURCE_GROUP`: the name of the resource group the key vault is in
173
173
```shell
@@ -178,26 +178,29 @@ 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.
185
+
**Resolution:**
186
186
187
+
Allow NGINXaaS to access the key vault through one of these mechanisms:
188
+
189
+
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
190
<details>
188
191
<summary>Create a network security perimeter - Azure CLI</summary>
189
192
190
193
1. Create a network security perimeter.
191
194
192
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
195
+
Set the following environment variables before copying the below Azure CLI command.
193
196
- `NSP_NAME`: the name of the network security perimeter
194
197
- `NSP_RESOURCE_GROUP`: the name of the resource group the network security perimeter will be in
195
198
```shell
196
199
az network perimeter create --name $NSP_NAME --resource-group $NSP_RESOURCE_GROUP
197
200
```
198
201
1. Create a profile for the network security perimeter.
199
202
200
-
Please ensure the following environment variable is set before copying the below Azure CLI command.
203
+
Set the following environment variable is set before copying the below Azure CLI command.
201
204
- `PROFILE_NAME`: the name of the network security perimeter profile
202
205
```shell
203
206
az network perimeter profile create --name $PROFILE_NAME \
@@ -206,7 +209,7 @@ The following section describes common errors you might encounter while adding S
206
209
```
207
210
1. Get the resource ID of the key vault.
208
211
209
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
212
+
Set the following environment variables before copying the below Azure CLI command.
210
213
- `KV_NAME`: the name of the key vault
211
214
- `KV_RESOURCE_GROUP`: the name of the resource group the key vault is in
212
215
```shell
@@ -230,7 +233,7 @@ The following section describes common errors you might encounter while adding S
230
233
```
231
234
1. Add an inbound access rule to allow the NGINXaaS deployment's subscription.
232
235
233
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
236
+
Set the following environment variables before copying the below Azure CLI command.
234
237
- `RULE_NAME`: the name of the access rule
235
238
- `DEP_SUBSCRIPTION_ID`: the subscription ID of the NGINXaaS deployment
236
239
```shell
@@ -242,6 +245,118 @@ The following section describes common errors you might encounter while adding S
242
245
```
243
246
</details>
244
247
248
+
2. Integrate with a Private Endpoint to allow NGINXaaS to fetch certificates via Azure Private Link.
249
+
<details>
250
+
<summary>Create a Private Link - Azure CLI</summary>
251
+
252
+
1. Get the resource ID of the key vault.
253
+
254
+
Set the following environment variables before copying the below Azure CLI command.
255
+
- `KV_NAME`: the name of the key vault
256
+
- `KV_RESOURCE_GROUP`: the name of tshe resource group the key vault is in
257
+
```shell
258
+
key_vault_id=$(az keyvault show --name $KV_NAME \
259
+
--resource-group $KV_RESOURCE_GROUP \
260
+
--query id --output tsv)
261
+
```
262
+
263
+
1. Create a private endpoint.
264
+
265
+
Set the following environment variables before copying the below Azure CLI command.
266
+
- `PE_NAME`: the name of the private endpoint
267
+
- `PE_RESOURCE_GROUP`: the name of the resource group the private endpoint will be in
268
+
- `VNET_NAME`: the name of the virtual network that is delegated to NGINXaaS
269
+
- `VNET_RESOURCE_GROUP`: the name of the resource group the virtual network is in
270
+
- `SUBNET_NAME`: the name of the subnet for private endpoints
271
+
- `PE_CONNECTION_NAME`: the name of the private endpoint connection
272
+
- `LOCATION`: the location of the virtual network
273
+
```shell
274
+
az network private-endpoint create --name $PE_NAME \
275
+
--resource-group $PE_RESOURCE_GROUP \
276
+
--vnet-name $VNET_NAME \
277
+
--subnet $SUBNET_NAME \
278
+
--private-connection-resource-id $key_vault_id \
279
+
--group-id vault \
280
+
--connection-name $PE_CONNECTION_NAME \
281
+
--location $LOCATION
282
+
```
283
+
284
+
1. Create a private DNS zone and link VNet.
285
+
286
+
Set the following environment variables before copying the below Azure CLI command.
287
+
- `ZONE_RESOURCE_GROUP`: the name of the resource group for the DNS zone
288
+
- `ZONE_NAME`: the name of the DNS zone
289
+
- `DNS_LINK_NAME`: the name of the DNS zone link
290
+
```shell
291
+
vnet_id=$(az network vnet show --name $VNET_NAME \
292
+
--resource-group $VNET_RESOURCE_GROUP \
293
+
--query id --output tsv)
294
+
```
295
+
```shell
296
+
az network private-dns zone create --resource-group $ZONE_RESOURCE_GROUP \
297
+
--name $ZONE_NAME
298
+
az network private-dns link vnet create --resource-group $ZONE_RESOURCE_GROUP \
299
+
--zone-name $ZONE_NAME \
300
+
--name $DNS_LINK_NAME \
301
+
--virtual-network $vnet_id \
302
+
--registration-enabled false
303
+
```
304
+
305
+
1. Add DNS zone group to the private endpoint.
306
+
307
+
Set the following environment variables before copying the below Azure CLI command.
308
+
- `DNS_ZONE_GROUP_NAME`: the name of the resource group for the DNS zone
309
+
```shell
310
+
az network private-endpoint dns-zone-group create \
311
+
--resource-group $PE_RESOURCE_GROUP \
312
+
--endpoint-name $PE_NAME \
313
+
--name $DNS_ZONE_GROUP_NAME \
314
+
--private-dns-zone $ZONE_NAME \
315
+
--zone-name $ZONE_NAME
316
+
```
317
+
</details>
318
+
319
+
3. Allow access from Virtual Network delegated to NGINXaaS.
Set the following environment variables before copying the below Azure CLI command.
327
+
- `VNET_NAME`: the name of the virtual network that is delegated to NGINXaaS
328
+
- `VNET_RESOURCE_GROUP`: the name of the resource group the virtual network is in
329
+
```shell
330
+
vnet_id=$(az network vnet show --name $VNET_NAME \
331
+
--resource-group $VNET_RESOURCE_GROUP \
332
+
--query id --output tsv)
333
+
```
334
+
335
+
1. Get the resource ID of the subnet.
336
+
337
+
Set the following environment variable before copying the below Azure CLI command.
338
+
- `SUBNET_NAME`: the name of the subnet that is delegated to NGINXaaS
339
+
```shell
340
+
subnet_id=$(az network vnet subnet show --name $SUBNET_NAME \
341
+
--vnet-name $VNET_NAME \
342
+
--resource-group $VNET_RESOURCE_GROUP \
343
+
--query id --output tsv)
344
+
```
345
+
346
+
1. Add the virtual network rule to the key vault.
347
+
348
+
Set the following environment variables before copying the below Azure CLI command.
349
+
- `KV_NAME`: the name of the key vault
350
+
- `KV_RESOURCE_GROUP`: the name of the resource group the key vault is in
351
+
```shell
352
+
az keyvault network-rule add --name $KV_NAME \
353
+
--resource-group $KV_RESOURCE_GROUP \
354
+
--subnet $subnet_id
355
+
```
356
+
357
+
{{< 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 >}}
358
+
</details>
359
+
245
360
#### Error code: `AnotherOperationInProgress`
246
361
247
362
**Description:** Another operation on this, or a dependent resource, is in progress.
@@ -273,7 +388,7 @@ The following section describes common errors you might encounter while adding S
273
388
274
389
- **User assigned managed identity**
275
390
276
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
391
+
Set the following environment variables before copying the below Azure CLI command.
277
392
- `MI_NAME`: the name of the managed identity
278
393
- `MI_RESOURCE_GROUP`: the name of the resource group the managed identity is in
279
394
```shell
@@ -284,7 +399,7 @@ The following section describes common errors you might encounter while adding S
284
399
285
400
- **System assigned managed identity**
286
401
287
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
402
+
Set the following environment variables before copying the below Azure CLI command.
288
403
- `DEP_NAME`: the name of the NGINXaaS deployment
289
404
- `DEP_RESOURCE_GROUP`: the name of the resource group the NGINXaaS deployment is in
290
405
```shell
@@ -295,7 +410,7 @@ The following section describes common errors you might encounter while adding S
295
410
296
411
1. Create the access policy.
297
412
298
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
413
+
Set the following environment variables before copying the below Azure CLI command.
299
414
- `KV_NAME`: the name of the key vault
300
415
- `KV_RESOURCE_GROUP`: the name of the resource group the key vault is in
301
416
```shell
@@ -323,7 +438,7 @@ The following section describes common errors you might encounter while adding S
323
438
324
439
1. Get the resource ID of the certificate.
325
440
326
-
Please ensure the following environment variables are set before copying the below Azure CLI command.
441
+
Set the following environment variables before copying the below Azure CLI command.
List of known issues in the latest release of F5 NGINXaaS for Azure (NGINXaaS).
11
11
12
+
### {{% icon-bug %}} Certificate failures when managed identities with access is added after deployment creation
13
+
14
+
This issue occurs when public access is disabled on Azure Key Vault (AKV) and the managed identity that has access to AKV is added to the NGINXaaS deployment after creation.
15
+
16
+
Updating managed identities on an NGINXaaS deployment after creation may result in the managed identity not being correctly delegated to the dataplane, which can cause certificate fetch failures.
17
+
18
+
**Workaround**: To avoid this issue, when you create an NGINXaaS deployment, make sure that the managed identity with access to AKV is assigned during initial creation. If managed identities need to be updated after creation, enable public access to AKV or [configure Network Security Perimeter]({{< ref "/nginxaas-azure/quickstart/security-controls/certificates.md#configure-network-security-perimeter-nsp" >}})
19
+
12
20
### {{% icon-bug %}} Custom and precompiled security policies cannot both be referenced in an NGINX configuration
13
21
14
22
When using NGINX App Protect WAF, you can only reference default or custom security policies in your NGINX configuration, not both.
0 commit comments