Skip to content

Commit 29b73b0

Browse files
committed
Merge branch 'master' of https://github.com/MicrosoftDocs/azure-docs-pr into normesta-migrate-gen1
2 parents e6fbe58 + 2f3fc79 commit 29b73b0

File tree

66 files changed

+1921
-225
lines changed

Some content is hidden

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

66 files changed

+1921
-225
lines changed

articles/active-directory/manage-apps/howto-saml-token-encryption.md

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ ms.workload: identity
1313
ms.tgt_pltfrm: na
1414
ms.devlang: na
1515
ms.topic: conceptual
16-
ms.date: 02/06/2019
16+
ms.date: 03/13/2020
1717
ms.author: mimart
1818
ms.reviewer: paulgarn
1919
ms.collection: M365-identity-device-management
2020
---
21-
# How to: Configure Azure AD SAML token encryption (Preview)
21+
# How to: Configure Azure AD SAML token encryption
2222

2323
> [!NOTE]
2424
> Token encryption is an Azure Active Directory (Azure AD) premium feature. To learn more about Azure AD editions, features, and pricing, see [Azure AD pricing](https://azure.microsoft.com/pricing/details/active-directory/).
@@ -118,9 +118,6 @@ When you configure a keyCredential using Graph, PowerShell, or in the applicatio
118118
119119
### To configure token encryption using PowerShell
120120
121-
This functionality is coming soon.
122-
123-
<!--
124121
1. Use the latest Azure AD PowerShell module to connect to your tenant.
125122
126123
1. Set the token encryption settings using the **[Set-AzureApplication](https://docs.microsoft.com/powershell/module/azuread/set-azureadapplication?view=azureadps-2.0-preview)** command.
@@ -137,8 +134,6 @@ This functionality is coming soon.
137134
$app.TokenEncryptionKeyId
138135
```
139136
140-
-->
141-
142137
### To configure token encryption using the application manifest
143138
144139
1. From the Azure portal, go to **Azure Active Directory > App registrations**.

articles/active-directory/manage-apps/toc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
href: manage-certificates-for-federated-single-sign-on.md
6969
- name: Tenant restrictions
7070
href: tenant-restrictions.md
71-
- name: Configure SAML token encryption (Preview)
71+
- name: Configure SAML token encryption
7272
href: howto-saml-token-encryption.md
7373
- name: End-user portals
7474
href: end-user-experiences.md
-61.5 KB
Loading
-52.3 KB
Loading
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
---
2+
title: Encrypt your application source at rest
3+
description: Encrypt your application data in Azure Storage and deploy it as a package file.
4+
ms.topic: article
5+
ms.date: 03/06/2020
6+
---
7+
8+
# Encryption at rest using customer-managed keys
9+
10+
Encrypting your web app's application data at rest requires an Azure Storage Account and an Azure Key Vault. These services are used when you run your app from a deployment package.
11+
12+
- [Azure Storage provides encryption at rest](../storage/common/storage-service-encryption.md). You can use system-provided keys or your own, customer-managed keys. This is where your application data is stored when it's not running in a web app in Azure.
13+
- [Running from a deployment package](deploy-run-package.md) is a deployment feature of App Service. It allows you to deploy your site content from an Azure Storage Account using a Shared Access Signature (SAS) URL.
14+
- [Key Vault references](app-service-key-vault-references.md) are a security feature of App Service. It allows you to import secrets at runtime as application settings. Use this to encrypt the SAS URL of your Azure Storage Account.
15+
16+
## Set up encryption at rest
17+
18+
### Create an Azure Storage account
19+
20+
First, [create an Azure Storage account](../storage/common/storage-account-create.md) and [encrypt it with customer managed keys](../storage/common/storage-service-encryption.md#customer-managed-keys-with-azure-key-vault). Once the storage account is created, use the [Azure Storage Explorer](../vs-azure-tools-storage-manage-with-storage-explorer.md) to upload package files.
21+
22+
Next, use the Storage Explorer to [generate an SAS](../vs-azure-tools-storage-manage-with-storage-explorer.md?tabs=windows#generate-a-sas-in-storage-explorer).
23+
24+
> [!NOTE]
25+
> Save this SAS URL, this is used later to enable secure access of the deployment package at runtime.
26+
27+
### Configure running from a package from your storage account
28+
29+
Once you upload your file to Blob storage and have an SAS URL for the file, set the `WEBSITE_RUN_FROM_PACKAGE` application setting to the SAS URL. The following example does it by using Azure CLI:
30+
31+
```
32+
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_RUN_FROM_PACKAGE="<your-SAS-URL>"
33+
```
34+
35+
Adding this application setting causes your web app to restart. After the app has restarted, browse to it and make sure that the app has started correctly using the deployment package. If the application didn't start correctly, see the [Run from package troubleshooting guide](deploy-run-package.md#troubleshooting).
36+
37+
### Encrypt the application setting using Key Vault references
38+
39+
Now you can replace the value of the `WEBSITE_RUN_FROM_PACKAGE` application setting with a Key Vault reference to the SAS-encoded URL. This keeps the SAS URL encrypted in Key Vault, which provides an extra layer of security.
40+
41+
1. Use the following [`az keyvault create`](/cli/azure/keyvault#az-keyvault-create) command to create a Key Vault instance.
42+
43+
```azurecli
44+
az keyvault create --name "Contoso-Vault" --resource-group <group-name> --location eastus
45+
```
46+
47+
1. Follow [these instructions to grant your app access](app-service-key-vault-references.md#granting-your-app-access-to-key-vault) to your key vault:
48+
49+
1. Use the following [`az keyvault secret set`](/cli/azure/keyvault/secret#az-keyvault-secret-set) command to add your external URL as a secret in your key vault:
50+
51+
```azurecli
52+
az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-URL>"
53+
```
54+
55+
1. Use the following [`az webapp config appsettings set`](/cli/azure/webapp/config/appsettings#az-webapp-config-appsettings-set) command to create the `WEBSITE_RUN_FROM_PACKAGE` application setting with the value as a Key Vault reference to the external URL:
56+
57+
```azurecli
58+
az webapp config appsettings set --settings WEBSITE_RUN_FROM_PACKAGE="@Microsoft.KeyVault(SecretUri=https://Contoso-Vault.vault.azure.net/secrets/external-url/<secret-version>"
59+
```
60+
61+
The `<secret-version>` will be in the output of the previous `az keyvault secret set` command.
62+
63+
Updating this application setting causes your web app to restart. After the app has restarted, browse to it make sure it has started correctly using the Key Vault reference.
64+
65+
## How to rotate the access token
66+
67+
It is best practice to periodically rotate the SAS key of your storage account. To ensure the web app does not inadvertently loose access, you must also update the SAS URL in Key Vault.
68+
69+
1. Rotate the SAS key by navigating to your storage account in the Azure portal. Under **Settings** > **Access keys**, click the icon to rotate the SAS key.
70+
71+
1. Copy the new SAS URL, and use the following command to set the updated SAS URL in your key vault:
72+
73+
```azurecli
74+
az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-URL>"
75+
```
76+
77+
1. Update the key vault reference in your application setting to the new secret version:
78+
79+
```azurecli
80+
az webapp config appsettings set --settings WEBSITE_RUN_FROM_PACKAGE="@Microsoft.KeyVault(SecretUri=https://Contoso-Vault.vault.azure.net/secrets/external-url/<secret-version>"
81+
```
82+
83+
The `<secret-version>` will be in the output of the previous `az keyvault secret set` command.
84+
85+
## How to revoke the web app's data access
86+
87+
There are two methods to revoke the web app's access to the storage account.
88+
89+
### Rotate the SAS key for the Azure Storage account
90+
91+
If the SAS key for the storage account is rotated, the web app will no longer have access to the storage account, but it will continue to run with the last downloaded version of the package file. Restart the web app to clear the last downloaded version.
92+
93+
### Remove the web app's access to Key Vault
94+
95+
You can revoke the web app's access to the site data by disabling the web app's access to Key Vault. To do this, remove the access policy for the web app's identity. This is the same identity you created earlier while configuring key vault references.
96+
97+
## Summary
98+
99+
Your application files are now encrypted at rest in your storage account. When your web app starts, it retrieves the SAS URL from your key vault. Finally, the web app loads the application files from the storage account.
100+
101+
If you need to revoke the web app's access to your storage account, you can either revoke access to the key vault or rotate the storage account keys, which invalidates the SAS URL.
102+
103+
## Frequently Asked Questions
104+
105+
### Is there any additional charge for running my web app from the deployment package?
106+
107+
Only the cost associated with the Azure Storage Account and any applicable egress charges.
108+
109+
### How does running from the deployment package affect my web app?
110+
111+
- Running your app from the deployment package makes `wwwroot/` read-only. Your app receives an error when it attempts to write to this directory.
112+
- TAR and GZIP formats are not supported.
113+
- This feature is not compatible with local cache.
114+
115+
## Next steps
116+
117+
- [Key Vault references for App Service](app-service-key-vault-references.md)
118+
- [Azure Storage encryption for data at rest](../storage/common/storage-service-encryption.md)

articles/app-service/deploy-run-package.md

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -59,33 +59,6 @@ az webapp config appsettings set --name <app-name> --resource-group <resource-gr
5959

6060
If you publish an updated package with the same name to Blob storage, you need to restart your app so that the updated package is loaded into App Service.
6161

62-
### Use Key Vault References
63-
64-
For added security, you can use Key Vault References in conjunction with your external URL. This keeps the URL encrypted at rest and allows to leverage Key Vault for secret management and rotation. It is recommended to use Azure Blob storage so you can easily rotate the associated SAS key. Azure Blob storage is encrypted at rest, which keeps your application data secure when it is not deployed on App Service.
65-
66-
1. Create an Azure Key Vault.
67-
68-
```azurecli
69-
az keyvault create --name "Contoso-Vault" --resource-group <group-name> --location eastus
70-
```
71-
72-
1. Add your external URL as a secret in Key Vault.
73-
74-
```azurecli
75-
az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<insert-your-URL>"
76-
```
77-
78-
1. Create the `WEBSITE_RUN_FROM_PACKAGE` app setting and set the value as a Key Vault Reference to the external URL.
79-
80-
```azurecli
81-
az webapp config appsettings set --settings WEBSITE_RUN_FROM_PACKAGE="@Microsoft.KeyVault(SecretUri=https://Contoso-Vault.vault.azure.net/secrets/external-url/<secret-version>"
82-
```
83-
84-
See the following articles for more information.
85-
86-
- [Key Vault references for App Service](app-service-key-vault-references.md)
87-
- [Azure Storage encryption for data at rest](../storage/common/storage-service-encryption.md)
88-
8962
## Troubleshooting
9063

9164
- Running directly from a package makes `wwwroot` read-only. Your app will receive an error if it tries to write files to this directory.

articles/app-service/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@
175175
href: configure-ssl-certificate-in-code.md
176176
- name: Configure TLS mutual authentication
177177
href: app-service-web-configure-tls-mutual-auth.md
178+
- name: Encrypt site data
179+
href: configure-encrypt-at-rest-using-cmk.md
178180
- name: Scale app
179181
items:
180182
- name: Scale up server capacity

articles/azure-app-configuration/concept-private-endpoint.md

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Using private endpoints for your App Configuration store enables you to:
2222
> [!NOTE]
2323
> Azure App Configuration offers the use of private endpoints as a public preview. Public preview offerings allow customers to experiment with new features prior to their official release. Public preview features and services are not meant for production use.
2424
25-
## Conceptual Overview
25+
## Conceptual overview
2626

2727
A private endpoint is a special network interface for an Azure service in your [Virtual Network](../virtual-network/virtual-networks-overview.md) (VNet). When you create a private endpoint for your App Config store, it provides secure connectivity between clients on your VNet and your configuration store. The private endpoint is assigned an IP address from the IP address range of your VNet. The connection between the private endpoint and the configuration store uses a secure private link.
2828

@@ -34,26 +34,18 @@ When you create a private endpoint for a service in your VNet, a consent request
3434

3535
Service account owners can manage consent requests and private endpoints through the `Private Endpoints` tab of the config store in the [Azure portal](https://portal.azure.com).
3636

37-
### Private Endpoints for App Configuration
37+
### Private endpoints for App Configuration
3838

3939
When creating a private endpoint, you must specify the App Configuration store to which it connects. If you have multiple App Configuration instances within an account, you need a separate private endpoint for each store.
4040

41-
#### Resources for creating private endpoints
42-
43-
For more detailed information on creating a private endpoint for your App Configuration store, refer to the following articles:
44-
45-
- [Create a private endpoint using the Private Link Center in the Azure portal](../private-link/create-private-endpoint-portal.md)
46-
- [Create a private endpoint using Azure CLI](../private-link/create-private-endpoint-cli.md)
47-
- [Create a private endpoint using Azure PowerShell](../private-link/create-private-endpoint-powershell.md)
48-
49-
### Connecting to Private Endpoints
41+
### Connecting to private endpoints
5042

5143
Azure relies upon DNS resolution to route connections from the VNet to the configuration store over a private link. You can quickly find connections strings in the Azure portal by selecting your App Configuration store, then selecting **Settings** > **Access Keys**.
5244

5345
> [!IMPORTANT]
5446
> Use the same connection string to connect to your App Configuration store using private endpoints as you would use for a public endpoint. Don't connect to the storage account using its `privatelink` subdomain URL.
5547
56-
## DNS changes for Private Endpoints
48+
## DNS changes for private endpoints
5749

5850
When you create a private endpoint, the DNS CNAME resource record for the configuration store is updated to an alias in a subdomain with the prefix `privatelink`. Azure also creates a [private DNS zone](../dns/private-dns-overview.md) corresponding to the `privatelink` subdomain, with the DNS A resource records for the private endpoints.
5951

@@ -68,13 +60,19 @@ If you are using a custom DNS server on your network, clients must be able to re
6860
> [!TIP]
6961
> When using a custom or on-premises DNS server, you should configure your DNS server to resolve the store name in the `privatelink` subdomain to the private endpoint IP address. You can do this by delegating the `privatelink` subdomain to the private DNS zone of the VNet, or configuring the DNS zone on your DNS server and adding the DNS A records.
7062
71-
#### Resources for configuring your DNS server with private endpoints
63+
## Pricing
7264

73-
For more information, see:
65+
Enabling private endpoints requires a [Standard tier](https://azure.microsoft.com/pricing/details/app-configuration/) App Configuration store. To learn about private link pricing details, see [Azure Private Link pricing](https://azure.microsoft.com/pricing/details/private-link).
7466

75-
- [Name resolution for resources in Azure virtual networks](/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances#name-resolution-that-uses-your-own-dns-server)
76-
- [DNS configuration for Private Endpoints](/azure/private-link/private-endpoint-overview#dns-configuration)
67+
## Next steps
7768

78-
## Pricing
69+
Learn more about creating a private endpoint for your App Configuration store, refer to the following articles:
70+
71+
- [Create a private endpoint using the Private Link Center in the Azure portal](../private-link/create-private-endpoint-portal.md)
72+
- [Create a private endpoint using Azure CLI](../private-link/create-private-endpoint-cli.md)
73+
- [Create a private endpoint using Azure PowerShell](../private-link/create-private-endpoint-powershell.md)
74+
75+
Learn to configure your DNS server with private endpoints:
7976

80-
Enabling private endpoints requires a [Standard tier](https://azure.microsoft.com/pricing/details/app-configuration/) App Configuration store. To learn about private link pricing details, see [Azure Private Link pricing](https://azure.microsoft.com/pricing/details/private-link).
77+
- [Name resolution for resources in Azure virtual networks](/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances#name-resolution-that-uses-your-own-dns-server)
78+
- [DNS configuration for Private Endpoints](/azure/private-link/private-endpoint-overview#dns-configuration)

articles/azure-functions/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@
288288
href: ../app-service/overview-managed-identity.md?toc=%2fazure%2fazure-functions%2ftoc.json
289289
- name: Reference secrets from Key Vault
290290
href: ../app-service/app-service-key-vault-references.md?toc=%2fazure%2fazure-functions%2ftoc.json
291+
- name: Encrypt site data
292+
href: configure-encrypt-at-rest-using-cmk.md
291293
- name: Integrate
292294
items:
293295
- name: Add bindings

0 commit comments

Comments
 (0)