Skip to content

Commit eb3af96

Browse files
committed
Merge branch 'master' of https://github.com/MicrosoftDocs/azure-docs-pr into rolyon-rbac-roles-feb
2 parents 55ca4c8 + 07e651c commit eb3af96

File tree

89 files changed

+855
-232
lines changed

Some content is hidden

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

89 files changed

+855
-232
lines changed

.openpublishing.redirection.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48550,6 +48550,16 @@
4855048550
"source_path": "articles/app-service/containers/tutorial-java-enterprise-postgresql-app.md",
4855148551
"redirect_url": "/azure/app-service/containers/configure-language-java",
4855248552
"redirect_document_id": false
48553+
},
48554+
{
48555+
"source_path": "articles/virtual-machines/linux/terraform-install-configure.md",
48556+
"redirect_url": "/azure/terraform/terraform-install-configure",
48557+
"redirect_document_id": false
48558+
},
48559+
{
48560+
"source_path": "articles/virtual-machines/linux/terraform-create-complete-vm.md",
48561+
"redirect_url": "/azure/terraform/terraform-create-complete-vm",
48562+
"redirect_document_id": false
4855348563
}
4855448564
]
4855548565
}

articles/active-directory/develop/howto-convert-app-to-be-multi-tenant.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ ms.service: active-directory
1111
ms.subservice: develop
1212
ms.topic: conceptual
1313
ms.workload: identity
14-
ms.date: 12/10/2019
14+
ms.date: 02/19/2020
1515
ms.author: ryanwi
16-
ms.reviewer: jmprieur, lenalepa, sureshja
16+
ms.reviewer: jmprieur, lenalepa, sureshja, kkrishna
1717
ms.custom: aaddev
1818
---
1919

@@ -33,7 +33,7 @@ There are four simple steps to convert your application into an Azure AD multi-t
3333
3. [Update your code to handle multiple issuer values](#update-your-code-to-handle-multiple-issuer-values)
3434
4. [Understand user and admin consent and make appropriate code changes](#understand-user-and-admin-consent)
3535

36-
Let’s look at each step in detail. You can also jump straight to [this list of multi-tenant samples](https://docs.microsoft.com/samples/browse/?products=azure-active-directory).
36+
Let’s look at each step in detail. You can also jump straight to the sample [Build a multi-tenant SaaS web application that calls Microsoft Graph using Azure AD and OpenID Connect](https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/blob/master/2-WebApp-graph-user/2-3-Multi-Tenant/README.md).
3737

3838
## Update registration to be multi-tenant
3939

articles/aks/quotas-skus-regions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ All other network, compute, and storage limitations apply to the provisioned inf
2828
2929
## Restricted VM sizes
3030

31-
Each node in an AKS cluster contains a fixed amount of compute resources such as vCPU and memory. If an AKS node contains insufficient compute resources, pods might fail to run correctly. To ensure that the required *kube-system* pods and your applications can reliably be scheduled, don't use the following VM SKUs in AKS:
31+
Each node in an AKS cluster contains a fixed amount of compute resources such as vCPU and memory. If an AKS node contains insufficient compute resources, pods might fail to run correctly. To ensure that the required *kube-system* pods and your applications can reliably be scheduled, **don't use the following VM SKUs in AKS**:
3232

3333
- Standard_A0
3434
- Standard_A1

articles/api-management/import-api-from-oas.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ ms.author: apimpm
2020
This article shows how to import an "OpenAPI specification" back-end API residing at https://conferenceapi.azurewebsites.net?format=json. This back-end API is provided by Microsoft and hosted on Azure. The article also shows how to test the APIM API.
2121

2222
> [!IMPORTANT]
23-
> See this [document](https://blogs.msdn.microsoft.com/apimanagement/2018/04/11/important-changes-to-openapi-import-and-export/) for important information and tips related to OpenAPI import.
23+
> See this [document](https://azure.microsoft.com/blog/announcing-the-preview-of-openapi-specification-v3-support-in-azure-api-management/) for important information and tips related to OpenAPI import.
2424
2525
In this article, you learn how to:
2626

articles/azure-app-configuration/TOC.yml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
- name: Azure App Configuration Preview documentation
1+
- name: Azure App Configuration documentation
22
href: index.yml
33
- name: Overview
44
items:
@@ -59,6 +59,8 @@
5959
items:
6060
- name: Key-value store
6161
href: concept-key-value.md
62+
- name: Encrypt using customer-managed keys
63+
href: concept-customer-managed-keys.md
6264
- name: Point-in-time snapshot
6365
href: concept-point-time-snapshot.md
6466
- name: Feature management
@@ -67,14 +69,18 @@
6769
href: concept-github-action.md
6870
- name: Event handling
6971
href: concept-app-configuration-event.md
72+
- name: Authentication
73+
items:
74+
- name: Integrate with Azure Managed Identity
75+
href: howto-integrate-azure-managed-service-identity.md
76+
- name: Enable access using Azure Active Directory
77+
href: concept-enable-rbac.md
7078
- name: High availability
7179
items:
7280
- name: Resiliency and disaster recovery
7381
href: concept-disaster-recovery.md
7482
- name: How-to guides
7583
items:
76-
- name: Integrate with Azure Managed Identity
77-
href: howto-integrate-azure-managed-service-identity.md
7884
- name: Import or export configuration data
7985
href: howto-import-export-data.md
8086
- name: Route events to a custom endpoint
@@ -86,12 +92,12 @@
8692
- name: Configuration
8793
items:
8894
- name: Azure CLI
89-
href: https://docs.microsoft.com/cli/azure/ext/appconfig/appconfig?view=azure-cli-latest
95+
href: https://docs.microsoft.com/cli/azure/appconfig?view=azure-cli-latest
9096
- name: .NET Core provider
9197
href: https://go.microsoft.com/fwlink/?linkid=2074664
9298
- name: .NET Framework builder
9399
href: https://go.microsoft.com/fwlink/?linkid=2074663
94-
- name: Azure SDK for .Net
100+
- name: Azure SDK for .NET
95101
href: https://go.microsoft.com/fwlink/?linkid=2092056
96102
- name: Java Spring provider
97103
href: https://go.microsoft.com/fwlink/?linkid=2074659
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
---
2+
title: Use customer-managed keys to encrypt your configuration data
3+
description: Encrypt your configuration data using customer-managed keys
4+
author: lisaguthrie
5+
6+
ms.author: lcozzens
7+
ms.date: 02/18/2020
8+
ms.topic: conceptual
9+
ms.service: azure-app-configuration
10+
11+
---
12+
# Use customer-managed keys to encrypt your App Configuration data
13+
Azure App Configuration [encrypts sensitive information at rest](../security/fundamentals/encryption-atrest.md). The use of customer-managed keys provides enhanced data protection by allowing you to manage your encryption keys. When managed key encryption is used, all sensitive information in App Configuration is encrypted with a user-provided Azure Key Vault key. This provides the ability to rotate the encryption key on demand. It also provides the ability to revoke Azure App Configuration's access to sensitive information by revoking the App Configuration instance's access to the key.
14+
15+
## Overview
16+
Azure App Configuration encrypts sensitive information at rest using a 256-bit AES encryption key provided by Microsoft. Every App Configuration instance has its own encryption key managed by the service and used to encrypt sensitive information. Sensitive information includes the values found in key-value pairs. When customer-managed key capability is enabled, App Configuration uses a managed identity assigned to the App Configuration instance to authenticate with Azure Active Directory. The managed identity then calls Azure Key Vault and wraps the App Configuration instance's encryption key. The wrapped encryption key is then stored and the unwrapped encryption key is cached within App Configuration for one hour. App Configuration refreshes the unwrapped version of the App Configuration instance's encryption key hourly. This ensures availability under normal operating conditions.
17+
18+
>[!IMPORTANT]
19+
> If the identity assigned to the App Configuration instance is no longer authorized to unwrap the instance's encryption key, or if the managed key is permanently deleted, then it will no longer be possible to decrypt sensitive information stored in the App Configuration instance. Using Azure Key Vault's [soft delete](../key-vault/key-vault-ovw-soft-delete.md) function mitigates the chance of accidentally deleting your encryption key.
20+
21+
When users enable the customer managed key capability on their Azure App Configuration instance, they control the service’s ability to access their sensitive information. The managed key serves as a root encryption key. A user can revoke their App Configuration instance’s access to their managed key by changing their key vault access policy. When this access is revoked, App Configuration will lose the ability to decrypt user data within one hour. At this point, the App Configuration instance will forbid all access attempts. This situation is recoverable by granting the service access to the managed key once again. Within one hour, App Configuration will be able to decrypt user data and operate under normal conditions.
22+
23+
>[!NOTE]
24+
>All Azure App Configuration data is stored for up to 24 hours in an isolated backup. This includes the unwrapped encryption key. This data is not immediately available to the service or service team. In the event of an emergency restore, Azure App Configuration will re-revoke itself from the managed key data.
25+
26+
## Requirements
27+
The following components are required to successfully enable the customer-managed key capability for Azure App Configuration:
28+
- Standard tier Azure App Configuration instance
29+
- Azure Key Vault with soft-delete and purge-protection features enabled
30+
- An RSA or RSA-HSM key within the Key Vault
31+
- The key must not be expired, it must be enabled, and it must have both wrap and unwrap capabilities enabled
32+
33+
Once these resources are configured, two steps remain to allow Azure App Configuration to use the Key Vault key:
34+
1. Assign a managed identity to the Azure App Configuration instance
35+
2. Grant the identity `GET`, `WRAP`, and `UNWRAP` permissions in the target Key Vault's access policy.
36+
37+
## Enable customer-managed key encryption for your Azure App Configuration instance
38+
To begin, you will need a properly configured Azure App Configuration instance. If you do not yet have an App Configuration instance available, follow one of these quickstarts to set one up:
39+
- [Create an ASP.NET Core app with Azure App Configuration](quickstart-aspnet-core-app.md)
40+
- [Create a .NET Core app with Azure App Configuration](quickstart-dotnet-core-app.md)
41+
- [Create a .NET Framework app with Azure App Configuration](quickstart-dotnet-app.md)
42+
- [Create a Java Spring app with Azure App Configuration](quickstart-java-spring-app.md)
43+
44+
>[!TIP]
45+
> The Azure Cloud Shell is a free interactive shell that you can use to run the command line instructions in this article. It has common Azure tools preinstalled, including the .NET Core SDK. If you are logged in to your Azure subscription, launch your [Azure Cloud Shell](https://shell.azure.com) from shell.azure.com. You can learn more about Azure Cloud Shell by [reading our documentation](../cloud-shell/overview.md)
46+
47+
### Create and configure an Azure Key Vault
48+
1. Create an Azure Key Vault using the Azure CLI. Note that both `vault-name` and `resource-group-name` are user-provided and must be unique. We use `contoso-vault` and `contoso-resource-group` in these examples.
49+
50+
```azurecli
51+
az keyvault create --name contoso-vault --resource-group contoso-resource-group
52+
```
53+
54+
1. Enable soft-delete and purge-protection for the Key Vault. Substitute the names of the Key Vault (`contoso-vault`) and Resource Group (`contoso-resource-group`) created in step 1.
55+
56+
```azurecli
57+
az keyvault update --name contoso-vault --resource-group contoso-resource-group --enable-purge-protection --enable-soft-delete
58+
```
59+
60+
1. Create a Key Vault key. Provide a unique `key-name` for this key, and substitute the names of the Key Vault (`contoso-vault`) created in step 1. Specify whether you prefer `RSA` or `RSA-HSM` encryption.
61+
62+
```azurecli
63+
az keyvault key create --name key-name --kty {RSA or RSA-HSM} --vault-name contoso-vault
64+
```
65+
66+
The output from this command shows the key ID ("kid") for the generated key. Make a note of the key ID to use later in this exercise. The key ID has the form: `https://{my key vault}.vault.azure.net/keys/{key-name}/{Key version}`. The key ID has three important components:
67+
1. Key Vault URI: `https://{my key vault}.vault.azure.net
68+
1. Key Vault key name: {Key Name}
69+
1. Key Vault key version: {Key version}
70+
71+
1. Create a system assigned managed identity using the Azure CLI, substituting the name of your App Configuration instance and resource group used in the previous steps. The managed identity will be used to access the managed key. We use `contoso-app-config` to illustrate the name of an App Configuration instance:
72+
73+
```azurecli
74+
az appconfig identity assign --na1. me contoso-app-config --group contoso-resource-group --identities [system]
75+
```
76+
77+
The output of this command includes the principal ID ("principalId") and tenant ID ("tenandId") of the system assigned identity. This will be used to grant the identity access to the managed key.
78+
79+
```json
80+
{
81+
"principalId": {Principal Id},
82+
"tenantId": {Tenant Id},
83+
"type": "SystemAssigned",
84+
"userAssignedIdentities": null
85+
}
86+
```
87+
88+
1. The managed identity of the Azure App Configuration instance needs access to the key to perform key validation, encryption and decryption. The specific set of actions to which it needs access includes: `GET`, `WRAP`, and `UNWRAP` for keys. Granting the access requires the principal ID of the App Configuration instance's managed identity. This value was obtained in the previous step. It is shown below as `contoso-principalId`. Grant permission to the managed key using the command line:
89+
90+
```azurecli
91+
az keyvault set-policy -n contoso-vault --object-id contoso-principalId --key-permissions get wrapKey unwrapKey
92+
```
93+
94+
1. Once the Azure App Configuration instance can access the managed key, we can enable the customer-managed key capability in the service using the Azure CLI. Recall the following properties recorded during the key creation steps: `key name` `key vault URI`.
95+
96+
```azurecli
97+
az appconfig update -g contoso-resource-group -n contoso-app-config --encryption-key-name key-name --encryption-key-version key-version --encryption-key-vault key-vault-Uri
98+
```
99+
100+
Your Azure App Configuration instance is now configured to use a customer-managed key stored in Azure Key Vault.
101+
102+
## Next Steps
103+
In this article, you configured your Azure App Configuration instance to use a customer-managed key for encryption. Learn how to [integrate your service with Azure Managed Identities](howto-integrate-azure-managed-service-identity.md).
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
title: Authorize access to Azure App Configuration using Azure Active Directory
3+
description: Enable RBAC to authorize access to your Azure App Configuration instance
4+
author: lisaguthrie
5+
ms.author: lcozzens
6+
ms.date: 02/13/2020
7+
ms.topic: conceptual
8+
ms.service: azure-app-configuration
9+
10+
---
11+
# Authorize access to Azure App Configuration using Azure Active Directory
12+
Azure App Configuration supports using Azure Active Directory (Azure AD) to authorize requests to App Configuration instances. Azure AD allows you to use role-based access control (RBAC) to grant permissions to a security principal. A security principal may be a user, or an [application service principal](../active-directory/develop/app-objects-and-service-principals.md). To learn more about roles and role assignments, see [Understanding different roles](../role-based-access-control/overview.md).
13+
14+
## Overview
15+
Requests made by security principal (a user, or an application) to access an App Configuration resource must be authorized. With Azure AD, access to a resource is a two-step process.
16+
1. The security principal's identity is authenticated and an OAuth 2.0 token is returned. The resource name to request a token is `https://login.microsoftonline.com/{tenantID}` where `{tenantID}` matches the Azure Active Directory tenant ID to which the service principal belongs.
17+
2. The token is passed as part of a request to the App Configuration service to authorize access to the specified resource.
18+
19+
The authentication step requires that an application request contains an OAuth 2.0 access token at runtime. If an application is running within an Azure entity, such as an Azure Functions app, an Azure Web App, or an Azure VM, it can use a managed identity to access the resources. To learn how to authenticate requests made by a managed identity to Azure App Configuration, see [Authenticate access to Azure App Configuration resources with Azure Active Directory and managed identities for Azure Resources](howto-integrate-azure-managed-service-identity.md).
20+
21+
The authorization step requires that one or more RBAC roles be assigned to the security principal. Azure App Configuration provides RBAC roles that encompass sets of permissions for App Configuration resources. The roles that are assigned to a security principal determine the permissions provided to the principal. For more information about RBAC roles, see [Built-in RBAC roles for Azure App Configuration](#built-in-rbac-roles-for-azure-app-configuration).
22+
23+
## Assign RBAC roles for access rights
24+
Azure Active Directory (Azure AD) authorizes access rights to secured resources through [role-based access control (RBAC)](../role-based-access-control/overview.md).
25+
26+
When an RBAC role is assigned to an Azure AD security principal, Azure grants access to those resources for that security principal. Access is scoped to the App Configuration resource. An Azure AD security principal may be a user, or an application service principal, or a [managed identity for Azure resources](../active-directory/managed-identities-azure-resources/overview.md).
27+
28+
## Built-in RBAC roles for Azure App Configuration
29+
Azure provides the following built-in RBAC roles for authorizing access to App Configuration data using Azure AD and OAuth:
30+
31+
- Azure App Configuration Data Owner: Use this role to give read/write access to App Configuration resources.
32+
- Azure App Configuration Data Reader: Use this role to give read access to App Configuration resources.
33+
- Contributor: Use this role to give admin access to the service without granting access to the data stored in the App Configuration instance.
34+
35+
## Next steps
36+
Learn more about using [managed identities](howto-integrate-azure-managed-service-identity.md) to administer your App Configuration service.

0 commit comments

Comments
 (0)