Skip to content

Commit 530b5fc

Browse files
authored
Merge pull request #124950 from MicrosoftDocs/repo_sync_working_branch
Resolve syncing conflicts from repo_sync_working_branch to main
2 parents 5713906 + 8b2e083 commit 530b5fc

File tree

91 files changed

+658
-326
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+658
-326
lines changed

articles/azure-app-configuration/quickstart-aspnet-core-app.md

Lines changed: 79 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
2-
title: Quickstart for Azure App Configuration with ASP.NET Core | Microsoft Docs
2+
title: Quickstart for Azure App Configuration with ASP.NET Core
33
description: Create an ASP.NET Core app with Azure App Configuration to centralize storage and management of application settings for an ASP.NET Core application.
44
services: azure-app-configuration
55
author: zhenlan
66
ms.service: azure-app-configuration
77
ms.devlang: csharp
88
ms.custom: devx-track-csharp, mode-other, engagement-fy23
99
ms.topic: quickstart
10-
ms.date: 02/20/2024
10+
ms.date: 11/20/2024
1111
ms.author: zhenlwa
1212
#Customer intent: As an ASP.NET Core developer, I want to learn how to manage all my app settings in one place.
1313
---
@@ -42,18 +42,48 @@ Use the [.NET command-line interface (CLI)](/dotnet/core/tools) to create a new
4242
Run the following command to create an ASP.NET Core web app in a new *TestAppConfig* folder:
4343

4444
```dotnetcli
45-
dotnet new webapp --output TestAppConfig --framework net6.0
45+
dotnet new webapp --output TestAppConfig
4646
```
4747

4848
## Connect to the App Configuration store
4949

50-
1. Navigate into the project's directory *TestAppConfig*, and run the following command to add a [Microsoft.Azure.AppConfiguration.AspNetCore](https://www.nuget.org/packages/Microsoft.Azure.AppConfiguration.AspNetCore) NuGet package reference:
50+
Connect to your App Configuration store using Microsoft Entra ID (recommended), or a connection string.
5151

52+
1. Navigate into the project's directory *TestAppConfig*, and run the following command to add NuGet package references.
53+
54+
### [Microsoft Entra ID (recommended)](#tab/entra-id)
55+
56+
```dotnetcli
57+
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
58+
dotnet add package Azure.Identity
59+
```
60+
61+
### [Connection string](#tab/connection-string)
5262
```dotnetcli
5363
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
5464
```
65+
---
66+
67+
1. Run the following command to restore packages for your project:
68+
69+
```dotnetcli
70+
dotnet restore
71+
```
72+
73+
1. Create a user secret for the application by navigating into the *TestAppConfig* folder and running the following command.
74+
75+
### [Microsoft Entra ID (recommended)](#tab/entra-id)
76+
77+
The command uses [Secret Manager](/aspnet/core/security/app-secrets) to store a secret named `Endpoints:AppConfiguration`, which stores the endpoint for your App Configuration store. Replace the `<your-App-Configuration-endpoint>` placeholder with your App Configuration store's endpoint. You can find the endpoint in your App Configuration store's **Overview** blade in the Azure portal.
78+
79+
```dotnetcli
80+
dotnet user-secrets init
81+
dotnet user-secrets set Endpoints:AppConfiguration "<your-App-Configuration-endpoint>"
82+
```
83+
84+
### [Connection string](#tab/connection-string)
5585
56-
1. Run the following command. The command uses [Secret Manager](/aspnet/core/security/app-secrets) to store a secret named `ConnectionStrings:AppConfig`, which stores the connection string for your App Configuration store. Replace the `<your_connection_string>` placeholder with your App Configuration store's connection string. You can find the connection string under **Access Keys** of your App Configuration store in the Azure portal.
86+
The command uses [Secret Manager](/aspnet/core/security/app-secrets) to store a secret named `ConnectionStrings:AppConfig`, which stores the connection string for your App Configuration store. Replace the `<your_connection_string>` placeholder with your App Configuration store's connection string. You can find the connection string in your App Configuration store's **Access settings** in the Azure portal.
5787
5888
```dotnetcli
5989
dotnet user-secrets init
@@ -62,10 +92,49 @@ dotnet new webapp --output TestAppConfig --framework net6.0
6292
6393
> [!TIP]
6494
> Some shells will truncate the connection string unless it's enclosed in quotes. Ensure that the output of the `dotnet user-secrets list` command shows the entire connection string. If it doesn't, rerun the command, enclosing the connection string in quotes.
65-
95+
6696
Secret Manager stores the secret outside of your project tree, which helps prevent the accidental sharing of secrets within source code. It's used only to test the web app locally. When the app is deployed to Azure like [App Service](../app-service/overview.md), use the *Connection strings*, *Application settings* or environment variables to store the connection string. Alternatively, to avoid connection strings all together, you can [connect to App Configuration using managed identities](./howto-integrate-azure-managed-service-identity.md) or your other [Microsoft Entra identities](./concept-enable-rbac.md).
97+
98+
---
6799
68-
1. Open *Program.cs* and add Azure App Configuration as an extra configuration source by calling the `AddAzureAppConfiguration` method.
100+
1. Open *Program.cs* and add the following namespaces:
101+
102+
103+
### [Microsoft Entra ID (recommended)](#tab/entra-id)
104+
```csharp
105+
using Microsoft.Extensions.Configuration;
106+
using Microsoft.Azure.AppConfiguration.AspNetCore;
107+
using Azure.Identity;
108+
```
109+
110+
### [Connection string](#tab/connection-string)
111+
```csharp
112+
using Microsoft.Extensions.Configuration;
113+
using Microsoft.Azure.AppConfiguration.AspNetCore;
114+
```
115+
---
116+
117+
1. Connect to your App Configuration store by calling the `AddAzureAppConfiguration` method in the `Program.cs` file.
118+
119+
### [Microsoft Entra ID (recommended)](#tab/entra-id)
120+
121+
You use the `DefaultAzureCredential` to authenticate to your App Configuration store. Follow the [instructions](./concept-enable-rbac.md#authentication-with-token-credentials) to assign your credential the **App Configuration Data Reader** role. Be sure to allow sufficient time for the permission to propagate before running your application.
122+
123+
```csharp
124+
var builder = WebApplication.CreateBuilder(args);
125+
126+
// Load configuration from Azure App Configuration
127+
builder.Configuration.AddAzureAppConfiguration(options =>
128+
{
129+
string endpoint = builder.Configuration.Get("Endpoints:AppConfiguration");
130+
options.Connect(new Uri(endpoint), new DefaultAzureCredential());
131+
});
132+
133+
// The rest of existing code in program.cs
134+
// ... ...
135+
```
136+
137+
### [Connection string](#tab/connection-string)
69138
70139
```csharp
71140
var builder = WebApplication.CreateBuilder(args);
@@ -79,8 +148,10 @@ dotnet new webapp --output TestAppConfig --framework net6.0
79148
// The rest of existing code in program.cs
80149
// ... ...
81150
```
151+
---
152+
153+
This code loads *all* key-values that have *no label* from your App Configuration store. For more information on loading data from App Configuration, see the [App Configuration provider API reference](/dotnet/api/Microsoft.Extensions.Configuration.AzureAppConfigurationExtensions).
82154
83-
This code will connect to your App Configuration store using a connection string and load *all* key-values that have *no labels*. For more information on the App Configuration provider, see the [App Configuration provider API reference](/dotnet/api/Microsoft.Extensions.Configuration.AzureAppConfiguration).
84155
85156
## Read from the App Configuration store
86157

articles/azure-functions/functions-bindings-azure-mysql.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ Azure Database for MySQL bindings for Azure Functions have a required property f
166166

167167
## Samples
168168

169-
In addition to the samples for C#, Java, JavaScript, PowerShell, and Python available in the [Azure SQL bindings GitHub repository](https://github.com/Azure/azure-functions-mysql-extension/tree/main/samples), more are available in Azure Samples.
169+
In addition to the samples for C#, Java, JavaScript, PowerShell, and Python available in the [Azure MySQL bindings GitHub repository](https://github.com/Azure/azure-functions-mysql-extension/tree/main/samples), more are available in Azure Samples.
170170

171171

172172
## Next steps
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
title: Microsoft Azure Maps consent management
3+
description: This article describes consent management in Azure Maps as it applies to data residency laws.
4+
author: pbrasil
5+
ms.author: peterbr
6+
ms.date: 11/19/2024
7+
ms.topic: conceptual
8+
ms.service: azure-maps
9+
ms.subservice: manage-account
10+
---
11+
12+
# Consent management
13+
14+
Azure Maps is a global service that is available worldwide. When creating your Azure Maps account, you select a _Region_. The Region selection is the accounts geographic scope, which allows you to limit data residency to the selected region. All requests (including input data) are processed and stored exclusively in the specified geographic area (region).
15+
16+
In some cases, you will need to enable your search requests to be processed in a region or geography other than the one your Azure Maps Account is in. For example, due to local data residency laws, all South Korean addresses must be processed in South Korea, which is the _Korea Central_ region in Azure Maps. To do this, you must give Azure Maps consent to process your data in the _Korea Central_ region. For more information on how to give Azure maps consent to process data in a different region, see [Configure global data processing].
17+
18+
For more information on geographic scope in Azure Maps, see [Azure Maps service geographic scope].
19+
20+
## Frequently asked questions
21+
22+
**My scenario doesn't have any South Korea data. Do I still need to enable cross region processing to use Azure Maps?**
23+
24+
No, if your scenario doesn't require South Korea data, you don't need to enable cross region processing. This is a specific regional requirement due to data residency laws.
25+
26+
**Where will my data be stored if I enable cross region processing in South Korea?**
27+
28+
Giving consent to process data in a different region will not affect where your metadata and logs are stored. Those are still contained within the region specified when creating your Azure Maps Account.
29+
30+
## Next steps
31+
32+
> [!div class="nextstepaction"]
33+
> [Configure global data processing]
34+
35+
[Azure Maps service geographic scope]: geographic-scope.md
36+
[Configure global data processing]: how-to-manage-consent.md

articles/azure-maps/geocoding-coverage.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ The ability to geocode in a country/region is dependent upon the road data cover
133133
| Samoa | | | |||
134134
| Singapore ||||||
135135
| Solomon Islands | | | |||
136-
| South Korea | | | |||
136+
| South Korea<sup>1</sup> | | | |||
137137
| Sri Lanka | | | |||
138138
| Taiwan ||||||
139139
| Thailand || ||||
@@ -146,6 +146,8 @@ The ability to geocode in a country/region is dependent upon the road data cover
146146
| Vietnam || ||||
147147
| Wallis & Futuna | | | |||
148148

149+
<sup>1</sup> Coverage is dependent on enabling data processing in South Korea. For more information, see [Enable South Korea addresses in Azure Maps](how-to-manage-consent.md).
150+
149151
## Europe
150152

151153
| Country/Region | Address points |House numbers | Street level | City level | Points of interest |
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
---
2+
title: Configure global data processing
3+
description: This article describes how to configure the global data processing settings in Azure Maps to comply with data residency laws.
4+
author: pbrasil
5+
ms.author: peterbr
6+
ms.date: 11/19/2024
7+
ms.topic: how-to
8+
ms.service: azure-maps
9+
ms.subservice: manage-account
10+
---
11+
12+
# Configure global data processing
13+
14+
In some cases, it may be necessary to process requests in a region different from your Azure Maps Account's region due to local data residency laws. When this happens, you can grant Azure Maps consent to process your data in other specified regions. For more information, see [Consent management].
15+
16+
This article guides you on configuring global data processing settings to comply with data residency laws using multiple approaches including the [Azure Portal](#configure-global-data-processing-in-the-azure-portal), [REST APIs](#configure-global-data-processing-using-rest-api) or an [ARM deployment template](#configure-global-data-processing-using-an-arm-deployment-template). This allows Azure Maps to process address requests within the specified country's region, regardless of your Azure Maps Account's region.
17+
18+
> [!IMPORTANT]
19+
> If your scenarios don't involve South Korea data, there is no need to enable cross-region processing. This requirement is specific to South Korea due to its data residency laws.
20+
21+
## Configure global data processing in the Azure portal
22+
23+
The Azure Maps Resource location is enabled by default and can be configured in the **Process Data Globally** page of the Azure portal.
24+
25+
To give consent to one or more regions:
26+
27+
1. Sign in to your Azure Maps Account in the [Azure portal].
28+
1. In **Settings**, select **Process data globally**.
29+
30+
A map of the world appears with a plus sign for each region that can be selected.
31+
32+
:::image type="content" source="./media/consent-management/process-data-globally.png" lightbox="./media/consent-management/process-data-globally.png" alt-text="Screenshot showing the process data globally screen in the Azure portal.":::
33+
34+
1. Additionally you can select **Add region**, then select the region you wish to add or remove.
35+
36+
:::image type="content" source="./media/consent-management/select-korea-central.png" lightbox="./media/consent-management/select-korea-central.png" alt-text="Screenshot showing the process data globally screen in the Azure portal with the Korea Central region selected.":::
37+
38+
1. Once you all desired regions are chosen, select **Save**.
39+
40+
:::image type="content" source="./media/consent-management/save-selection.png" lightbox="./media/consent-management/save-selection.png" alt-text="Screenshot showing the save button highlighted in process data globally screen in the Azure portal.":::
41+
42+
Once your updates are saved, one or more new selections appear in the list of regions.
43+
44+
:::image type="content" source="./media/consent-management/new-region-added.png" lightbox="./media/consent-management/new-region-added.png" alt-text="Screenshot showing the process data globally screen in the Azure portal with the Korea Central region added to the list of supported regions.":::
45+
46+
## Configure global data processing using REST API
47+
48+
Consent can be managed using [Azure Maps Account Management REST APIs]. To Configure global data processing, send an [Accounts - Update] `PATCH` request and pass in the `properties.locations` parameter in the body of the request.
49+
50+
Be sure to include the appropriate [subscription key], resource group and Azure Maps account name.
51+
52+
```html
53+
https://management.azure.com/subscriptions/<subscription-key>/resourceGroups/<resource-group-name>/providers/Microsoft.Maps/accounts/<account-name>?api-version=2024-07-01-preview
54+
```
55+
56+
**Header**
57+
58+
Be sure to include a correct [access-token].
59+
60+
```html
61+
Content-Type: application/json
62+
Authorization: Bearer <access-token>
63+
```
64+
65+
**Body**
66+
67+
```json
68+
{
69+
"properties": {
70+
"locations": [
71+
{
72+
"locationName": "Korea Central"
73+
}
74+
]
75+
},
76+
}
77+
```
78+
79+
## Configure global data processing using an ARM deployment template
80+
81+
The following template will add _West Europe_ to the list of valid global data processing regions.
82+
83+
Be sure to include the appropriate Azure Maps account name and location.
84+
85+
```json
86+
{
87+
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
88+
"contentVersion": "1.0.0.0",
89+
"resources": [
90+
{
91+
"type": "Microsoft.Maps/accounts",
92+
"apiVersion": "2024-07-01-preview",
93+
"name": "<account-name>",
94+
"location": "<account-location>",
95+
"sku": {
96+
"name": "G2"
97+
},
98+
"properties":
99+
{
100+
"locations": [
101+
{
102+
"locationName": "West Europe"
103+
}
104+
]
105+
}
106+
}
107+
]
108+
}
109+
```
110+
111+
> [!NOTE]
112+
> Your data is always stored in the region you created your Azure Maps Account, regardless of your global data processing settings.
113+
114+
## Next steps
115+
116+
Azure Maps is a global service that allows specifying a geographic scope, which enables limiting data residency to specific regions.
117+
118+
> [!div class="nextstepaction"]
119+
> [Azure Maps service geographic scope]
120+
121+
[access-token]: azure-maps-authentication.md#microsoft-entra-authentication
122+
[Accounts - Update]: /rest/api/maps-management/accounts/update
123+
[Azure Maps Account Management REST APIs]: /rest/api/maps-management/accounts
124+
[Azure portal]: https://ms.portal.azure.com
125+
[Azure Maps service geographic scope]: geographic-scope.md
126+
[Consent management]: consent-management.md
127+
[subscription key]: quick-demo-map-app.md#get-the-subscription-key-for-your-account
148 KB
Loading
157 KB
Loading
151 KB
Loading
173 KB
Loading
-34.1 KB
Loading

0 commit comments

Comments
 (0)