Skip to content

Commit 4987b4a

Browse files
Merge pull request #312003 from MicrosoftDocs/main
Auto Publish – main to live - 2026-02-19 18:00 UTC
2 parents 14eee4e + 2521902 commit 4987b4a

32 files changed

Lines changed: 104 additions & 68 deletions

articles/azure-government/compare-azure-government-global-azure.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,22 @@ Azure Active Directory B2C is **not available** in Azure Government.
313313

314314
The Microsoft Authentication Library (MSAL) enables developers to acquire security tokens from the Microsoft identity platform to authenticate users and access secured web APIs. For feature variations and limitations, see [National clouds and MSAL](../active-directory/develop/msal-national-cloud.md).
315315

316+
## Internet of Things
317+
318+
This section outlines variations and considerations when using Internet of Things services in the Azure Government environment. For service availability, see [Products available by region](https://azure.microsoft.com/global-infrastructure/services/?products=notification-hubs,azure-maps,iot-hub,iot-central&regions=usgov-non-regional,us-dod-central,us-dod-east,usgov-arizona,usgov-texas,usgov-virginia&rar=true).
319+
320+
### [Azure IoT Hub](../iot-hub/index.yml)
321+
322+
When you use Microsoft Entra ID to authenticate requests to IoT Hub service APIs in Azure Government, you need to use a different audience URI than in global Azure. The audience URI is the OAuth 2.0 resource endpoint that you use when requesting Microsoft Entra tokens for IoT Hub service APIs.
323+
324+
For Azure Government, use the following audience URI when authenticating to IoT Hub service APIs:
325+
326+
`https://iothubs.azure.us`
327+
328+
In comparison, global Azure uses `https://iothubs.azure.net` as the audience URI.
329+
330+
For more information about authenticating to IoT Hub with Microsoft Entra ID, see [Control access to IoT Hub by using Microsoft Entra ID](../iot-hub/authenticate-authorize-azure-ad.md).
331+
316332
## Management and governance
317333

318334
This section outlines variations and considerations when using Management and Governance services in the Azure Government environment. For service availability, see [Products available by region](https://azure.microsoft.com/global-infrastructure/services/?products=managed-applications,azure-policy,network-watcher,monitor,traffic-manager,automation,scheduler,site-recovery,cost-management,backup,blueprints,advisor&regions=usgov-non-regional,us-dod-central,us-dod-east,usgov-arizona,usgov-texas,usgov-virginia&rar=true).

articles/bastion/bastion-nsg.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ $rules = @(
105105
SourcePortRange = "*"
106106
DestinationAddressPrefix = "VirtualNetwork"
107107
DestinationPortRange = 8080,5701
108-
Protocol = "Ah"
108+
Protocol = "Tcp"
109109
}
110110
@{
111111
Name = "AllowSshRdpOutbound"
@@ -116,7 +116,7 @@ $rules = @(
116116
SourcePortRange = "*"
117117
DestinationAddressPrefix = "VirtualNetwork"
118118
DestinationPortRange = 22,3389
119-
Protocol = "Ah"
119+
Protocol = "Tcp"
120120
},
121121
@{
122122
Name = "AllowAzureCloudOutbound"
@@ -138,7 +138,7 @@ $rules = @(
138138
SourcePortRange = "*"
139139
DestinationAddressPrefix = "VirtualNetwork"
140140
DestinationPortRange = 8080,5701
141-
Protocol = "Ah"
141+
Protocol = "Tcp"
142142
},
143143
@{
144144
Name = "AllowHttpOutbound"
@@ -149,7 +149,7 @@ $rules = @(
149149
SourcePortRange = "*"
150150
DestinationAddressPrefix = "Internet"
151151
DestinationPortRange = "80"
152-
Protocol = "Ah"
152+
Protocol = "Tcp"
153153
}
154154
)
155155
foreach ($rule in $rules) {

articles/container-apps/microservices-dapr.md

Lines changed: 51 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
---
2-
title: "Quickstart: Deploy a Dapr application to Azure Container Apps using the Azure CLI"
3-
description: Deploy a Dapr application to Azure Container Apps using the Azure CLI.
2+
title: "Quickstart: Deploy a Dapr App using the Azure CLI"
3+
description: Learn how to deploy a Dapr application to Azure Container Apps by using the Azure CLI.
44
services: container-apps
55
author: greenie-msft
66
ms.service: azure-container-apps
77
ms.subservice: dapr
88
ms.topic: quickstart
9-
ms.date: 02/03/2025
9+
ms.date: 02/10/2026
1010
ms.author: nigreenf
1111
ms.reviewer: hannahhunter
1212
ms.custom: devx-track-azurecli, devx-track-azurepowershell
1313
ms.devlang: azurecli
1414
---
1515

16-
# Quickstart: Deploy a Dapr application to Azure Container Apps using the Azure CLI
16+
# Quickstart: Deploy a Dapr application to Azure Container Apps by using the Azure CLI
1717

18-
[Dapr](./dapr-overview.md) (Distributed Application Runtime) helps developers build resilient, reliable microservices. In this quickstart, you learn how to enable Dapr sidecars to run alongside your microservices container apps. You'll:
18+
[Distributed Application Runtime (Dapr)](./dapr-overview.md) helps developers build resilient, reliable microservices. In this quickstart, you learn how to enable Dapr sidecars to run alongside your microservices container apps. You'll:
1919

2020
> [!div class="checklist"]
2121
> * Create a Container Apps environment and Azure Blog Storage state store for your container apps.
@@ -27,6 +27,13 @@ ms.devlang: azurecli
2727

2828
This quickstart mirrors the applications you deploy in the open-source Dapr [Hello World](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-world) quickstart.
2929

30+
## Prerequisites
31+
32+
- An Azure account with an active subscription. If you don't have one, [create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
33+
- A GitHub account. If you don't have one, [sign up for free](https://github.com/join).
34+
- Install [Azure CLI](/cli/azure/install-azure-cli).
35+
- Install [Git](https://git-scm.com/downloads).
36+
3037
[!INCLUDE [container-apps-create-cli-steps.md](../../includes/container-apps-create-cli-steps.md)]
3138

3239
[!INCLUDE [container-apps-set-environment-variables.md](../../includes/container-apps-set-environment-variables.md)]
@@ -39,18 +46,20 @@ This quickstart mirrors the applications you deploy in the open-source Dapr [Hel
3946

4047
### Create an Azure Blob Storage account
4148

42-
With the environment deployed, deploy an Azure Blob Storage account that is used by the Node.js container app to store data. Before deploying the service, choose a name for the storage account. Storage account names must be _unique within Azure_, from 3 to 24 characters in length and must contain numbers and lowercase letters only.
49+
With the environment deployed, deploy an Azure Blob Storage account that is used by the Node.js container app to store data. Before deploying the service, choose a name for the storage account.
50+
51+
Storage account names must be _unique within Azure_, from 3 to 24 characters in length and must contain numbers and lowercase letters only.
4352

4453
# [Bash](#tab/bash)
4554

4655
```azurecli
47-
STORAGE_ACCOUNT_NAME="<storage account name>"
56+
STORAGE_ACCOUNT_NAME="<storage-account-name>"
4857
```
4958

5059
# [PowerShell](#tab/powershell)
5160

5261
```azurepowershell
53-
$StorageAcctName = '<storage account name>'
62+
$StorageAcctName = '<storage-account-name>'
5463
```
5564

5665
---
@@ -63,7 +72,7 @@ Use the following command to create the Azure Storage account.
6372
az storage account create \
6473
--name $STORAGE_ACCOUNT_NAME \
6574
--resource-group $RESOURCE_GROUP \
66-
--location "$LOCATION" \
75+
--location $LOCATION \
6776
--sku Standard_RAGRS \
6877
--kind StorageV2
6978
```
@@ -80,6 +89,7 @@ $StorageAcctArgs = @{
8089
SkuName = 'Standard_RAGRS'
8190
Kind = 'StorageV2'
8291
}
92+
8393
$StorageAccount = New-AzStorageAccount @StorageAcctArgs
8494
```
8595

@@ -94,16 +104,15 @@ While Container Apps supports both user-assigned and system-assigned managed ide
94104
# [Bash](#tab/bash)
95105

96106
```azurecli
97-
az identity create --resource-group $RESOURCE_GROUP --name "nodeAppIdentity" --output json
107+
az identity create --resource-group $RESOURCE_GROUP --name "nodeAppIdentity" --output json
98108
```
99109
100110
# [PowerShell](#tab/powershell)
101111
102112
```azurepowershell
103113
Install-Module -Name AZ.ManagedServiceIdentity
104114
105-
New-AzUserAssignedIdentity -ResourceGroupName $ResourceGroupName -Name 'nodeAppIdentity' -Location $Location
106-
115+
New-AzUserAssignedIdentity -ResourceGroupName $ResourceGroupName -Name 'nodeAppIdentity' -Location $Location
107116
```
108117
109118
---
@@ -113,17 +122,17 @@ While Container Apps supports both user-assigned and system-assigned managed ide
113122
# [Bash](#tab/bash)
114123
115124
```azurecli
116-
PRINCIPAL_ID=$(az identity show -n "nodeAppIdentity" --resource-group $RESOURCE_GROUP --query principalId | tr -d \")
117-
IDENTITY_ID=$(az identity show -n "nodeAppIdentity" --resource-group $RESOURCE_GROUP --query id | tr -d \")
118-
CLIENT_ID=$(az identity show -n "nodeAppIdentity" --resource-group $RESOURCE_GROUP --query clientId | tr -d \")
125+
PRINCIPAL_ID=$(az identity show -n "nodeAppIdentity" --resource-group $RESOURCE_GROUP --query principalId | tr -d \")
126+
IDENTITY_ID=$(az identity show -n "nodeAppIdentity" --resource-group $RESOURCE_GROUP --query id | tr -d \")
127+
CLIENT_ID=$(az identity show -n "nodeAppIdentity" --resource-group $RESOURCE_GROUP --query clientId | tr -d \")
119128
```
120129
121130
# [PowerShell](#tab/powershell)
122131
123132
```azurepowershell
124-
$PrincipalId = (Get-AzUserAssignedIdentity -ResourceGroupName $ResourceGroupName -Name 'nodeAppIdentity').PrincipalId
125-
$IdentityId = (Get-AzUserAssignedIdentity -ResourceGroupName $ResourceGroupName -Name 'nodeAppIdentity').Id
126-
$ClientId = (Get-AzUserAssignedIdentity -ResourceGroupName $ResourceGroupName -Name 'nodeAppIdentity').ClientId
133+
$PrincipalId = (Get-AzUserAssignedIdentity -ResourceGroupName $ResourceGroupName -Name 'nodeAppIdentity').PrincipalId
134+
$IdentityId = (Get-AzUserAssignedIdentity -ResourceGroupName $ResourceGroupName -Name 'nodeAppIdentity').Id
135+
$ClientId = (Get-AzUserAssignedIdentity -ResourceGroupName $ResourceGroupName -Name 'nodeAppIdentity').ClientId
127136
```
128137
129138
---
@@ -151,15 +160,15 @@ While Container Apps supports both user-assigned and system-assigned managed ide
151160
```azurecli
152161
az role assignment create --assignee $PRINCIPAL_ID \
153162
--role "Storage Blob Data Contributor" \
154-
--scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/ Microsoft.Storage/storageAccounts/$STORAGE_ACCOUNT_NAME"
163+
--scope "subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Storage/storageAccounts/$STORAGE_ACCOUNT_NAME"
155164
```
156165
157166
# [PowerShell](#tab/powershell)
158167
159168
```azurepowershell
160169
Install-Module Az.Resources
161170
162-
New-AzRoleAssignment -ObjectId $PrincipalId -RoleDefinitionName 'Storage Blob Data Contributor' -Scope "/subscriptions/$SubscriptionId/resourceGroups/ $ResourceGroupName/providers/Microsoft.Storage/storageAccounts/$StorageAcctName"
171+
New-AzRoleAssignment -ObjectId $PrincipalId -RoleDefinitionName 'Storage Blob Data Contributor' -Scope "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Storage/storageAccounts/$StorageAcctName"
163172
```
164173
165174
---
@@ -168,24 +177,24 @@ While Container Apps supports both user-assigned and system-assigned managed ide
168177
169178
While you have multiple options for authenticating to external resources via Dapr. This example uses an Azure-based state store, so you can provide direct access from the Node.js app to the Blob store using Managed Identity.
170179
171-
1. In a text editor, create a file named *statestore.yaml* with the properties that you sourced from the previous steps.
180+
1. In a text editor, create a file named *statestore.yaml* with the properties that you sourced from the previous steps. Replace the `<placeholders>` with your values.
172181
173182
```yaml
174183
# statestore.yaml for Azure Blob storage component
175184
componentType: state.azure.blobstorage
176185
version: v1
177186
metadata:
178187
- name: accountName
179-
value: "<STORAGE_ACCOUNT_NAME>"
188+
value: "<storage-account-name>"
180189
- name: containerName
181190
value: mycontainer
182191
- name: azureClientId
183-
value: "<MANAGED_IDENTITY_CLIENT_ID>"
192+
value: "<managed-identity-client-ID>"
184193
scopes:
185194
- nodeapp
186195
```
187196
188-
This file helps enable your Dapr app to access your state store.
197+
This file helps enable your Dapr app to access your state store.
189198
190199
1. Navigate to the directory in which you stored the yaml file and run the following command to configure the Dapr component in the Container Apps environment.
191200
@@ -201,12 +210,11 @@ While you have multiple options for authenticating to external resources via Dap
201210
# [PowerShell](#tab/powershell)
202211
203212
```azurepowershell
213+
$AcctName = New-AzContainerAppDaprMetadataObject -Name "accountName" -Value $StorageAcctName
204214
205-
$AcctName = New-AzContainerAppDaprMetadataObject -Name "accountName" -Value $StorageAcctName
206-
207-
$ContainerName = New-AzContainerAppDaprMetadataObject -Name "containerName" -Value 'mycontainer'
215+
$ContainerName = New-AzContainerAppDaprMetadataObject -Name "containerName" -Value 'mycontainer'
208216
209-
$ClientId = New-AzContainerAppDaprMetadataObject -Name "azureClientId" -Value $ClientId
217+
$ClientId = New-AzContainerAppDaprMetadataObject -Name "azureClientId" -Value $ClientId
210218
211219
$DaprArgs = @{
212220
EnvName = $ContainerAppsEnvironment
@@ -242,7 +250,7 @@ az containerapp create \
242250
--env-vars 'APP_PORT=3000'
243251
```
244252

245-
If you're using an Azure Container Registry, include the `--registry-server <REGISTRY_NAME>.azurecr.io` flag in the command.
253+
If you're using an Azure Container Registry, include the `--registry-server <registry-name>.azurecr.io` flag in the command.
246254

247255
# [PowerShell](#tab/powershell)
248256

@@ -256,6 +264,7 @@ $TemplateArgs = @{
256264
Image = 'dapriosamples/hello-k8s-node:latest'
257265
Env = $EnvVars
258266
}
267+
259268
$ServiceTemplateObj = New-AzContainerAppTemplateObject @TemplateArgs
260269
261270
$ServiceArgs = @{
@@ -274,10 +283,11 @@ $ServiceArgs = @{
274283
$IdentityId = @{}
275284
}
276285
}
286+
277287
New-AzContainerApp @ServiceArgs
278288
```
279289

280-
If you're using an Azure Container Registry, include the `RegistryServer = '<REGISTRY_NAME>.azurecr.io'` flag in the command.
290+
If you're using an Azure Container Registry, include the `RegistryServer = '<registry-name>.azurecr.io'` flag in the command.
281291

282292
---
283293

@@ -299,20 +309,18 @@ az containerapp create \
299309
--dapr-app-id pythonapp
300310
```
301311

302-
If you're using an Azure Container Registry, include the `--registry-server <REGISTRY_NAME>.azurecr.io` flag in the command.
312+
If you're using an Azure Container Registry, include the `--registry-server <registry-name>.azurecr.io` flag in the command.
303313

304314
# [PowerShell](#tab/powershell)
305315

306316
```azurepowershell
307-
308317
$TemplateArgs = @{
309318
Name = 'pythonapp'
310319
Image = 'dapriosamples/hello-k8s-python:latest'
311320
}
312321
313322
$ClientTemplateObj = New-AzContainerAppTemplateObject @TemplateArgs
314323
315-
316324
$ClientArgs = @{
317325
Name = 'pythonapp'
318326
ResourceGroupName = $ResourceGroupName
@@ -324,10 +332,11 @@ $ClientArgs = @{
324332
DaprEnabled = $true
325333
DaprAppId = 'pythonapp'
326334
}
335+
327336
New-AzContainerApp @ClientArgs
328337
```
329338

330-
If you're using an Azure Container Registry, include the `RegistryServer = '<REGISTRY_NAME>.azurecr.io'` flag in the command.
339+
If you're using an Azure Container Registry, include the `RegistryServer = '<registry-name>.azurecr.io'` flag in the command.
331340

332341
---
333342

@@ -339,7 +348,7 @@ You can confirm that the services are working correctly by viewing data in your
339348

340349
1. Open the [Azure portal](https://portal.azure.com) in your browser and navigate to your storage account.
341350

342-
1. Select **Data Storage** > **Containers** in the left side menu.
351+
1. Select **Data Storage** > **Containers** in the sidebar menu.
343352

344353
1. Select the container app.
345354

@@ -351,9 +360,9 @@ You can confirm that the services are working correctly by viewing data in your
351360

352361
1. Select the **Refresh** button to observe how the data automatically updates.
353362

354-
### View Logs
363+
### View logs
355364

356-
Logs from container apps are stored in the `ContainerAppConsoleLogs_CL` custom table in the Log Analytics workspace. You can view logs through the Azure portal or via the CLI. There may be a small delay initially for the table to appear in the workspace.
365+
Logs from container apps are stored in the `ContainerAppConsoleLogs_CL` custom table in the Log Analytics workspace. You can view logs through the Azure portal or via the CLI. There might be a small delay initially for the table to appear in the workspace.
357366

358367
View logs using the command line using the following CLI command.
359368

@@ -371,10 +380,9 @@ az monitor log-analytics query \
371380
# [PowerShell](#tab/powershell)
372381

373382
```azurepowershell
383+
$queryResults = Invoke-AzOperationalInsightsQuery -WorkspaceId $WorkspaceId -Query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'nodeapp' and (Log_s contains 'persisted' or Log_s contains 'order') | project ContainerAppName_s, Log_s, TimeGenerated | take 5 "
374384
375-
$queryResults = Invoke-AzOperationalInsightsQuery -WorkspaceId $WorkspaceId -Query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'nodeapp' and (Log_s contains 'persisted' or Log_s contains 'order') | project ContainerAppName_s, Log_s, TimeGenerated | take 5 "
376385
$queryResults.Results
377-
378386
```
379387

380388
---
@@ -393,12 +401,12 @@ nodeapp Got a new order! Order ID: 63 PrimaryResult 2021-10-22
393401

394402
## Clean up resources
395403

396-
Since `pythonapp` continuously makes calls to `nodeapp` with messages that get persisted into your configured state store, it is important to complete these cleanup steps to avoid ongoing billable operations.
404+
Since `pythonapp` continuously makes calls to `nodeapp` with messages that get persisted into your configured state store, it's important to complete these cleanup steps to avoid ongoing billable operations.
397405

398406
If you'd like to delete the resources created as a part of this walkthrough, run the following command.
399407

400408
> [!CAUTION]
401-
> This command deletes the specified resource group and all resources contained within it. If resources outside the scope of this tutorial exist in the specified resource group, they will also be deleted.
409+
> This command deletes the specified resource group and all resources contained within it. If resources outside the scope of this tutorial exist in the specified resource group, they're also deleted.
402410
403411
# [Bash](#tab/bash)
404412

@@ -414,11 +422,10 @@ Remove-AzResourceGroup -Name $ResourceGroupName -Force
414422

415423
---
416424

417-
418425
> [!TIP]
419426
> Having issues? Let us know on GitHub by opening an issue in the [Azure Container Apps repo](https://github.com/microsoft/azure-container-apps).
420427
421-
## Next steps
428+
## Next step
422429

423430
> [!div class="nextstepaction"]
424-
> [Learn more about Dapr components in Azure Container Apps](dapr-components.md)
431+
> [Learn about Dapr components in Azure Container Apps](dapr-components.md)

articles/firmware-analysis/automate-firmware-analysis-service-principals.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ ms.author: karenguo
66
ms.topic: conceptual
77
ms.date: 09/12/2025
88
ms.service: azure
9+
ms.subservice: azure-firmware-analysis
910
---
1011

1112
# How to Use Service Principals to Automate Workflows in firmware analysis

articles/firmware-analysis/firmware-analysis-faq.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ ms.topic: conceptual
77
ms.custom: devx-track-azurecli, devx-track-azurepowershell
88
ms.date: 09/12/2025
99
ms.service: azure
10+
ms.subservice: azure-firmware-analysis
1011
---
1112

1213
# Frequently asked questions about firmware analysis

articles/firmware-analysis/firmware-analysis-rbac.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ ms.author: karenguo
66
ms.topic: conceptual
77
ms.date: 09/12/2025
88
ms.service: azure
9+
ms.subservice: azure-firmware-analysis
910
---
1011

1112
# Overview of Azure Role-Based Access Control for firmware analysis

0 commit comments

Comments
 (0)