Skip to content

Commit 985a9e5

Browse files
committed
2 parents bd72e13 + 42451b8 commit 985a9e5

File tree

151 files changed

+1051
-1180
lines changed

Some content is hidden

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

151 files changed

+1051
-1180
lines changed

.openpublishing.redirection.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42602,6 +42602,16 @@
4260242602
"source_path": "articles/security/fundamentals/mvp.md",
4260342603
"redirect_url": "https://mvp.microsoft.com/",
4260442604
"redirect_document_id": false
42605+
},
42606+
{
42607+
"source_path": "articles/azure-cache-for-redis/cache-how-to-troubleshoot.md",
42608+
"redirect_url": "/azure/azure-cache-for-redis/cache-troubleshoot-server",
42609+
"redirect_document_id": false
42610+
},
42611+
{
42612+
"source_path": "articles/azure-cache-for-redis/cache-howto-manage-redis-cache-powershell.md",
42613+
"redirect_url": "/azure/azure-cache-for-redis/cache-how-to-manage-redis-cache-powershell",
42614+
"redirect_document_id": false
4260542615
}
4260642616
]
4260742617
}

articles/active-directory/authentication/active-directory-passwords-troubleshoot.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ A best practice when you troubleshoot problems with password writeback is to ins
140140
| 33001| ADUnKnownError| This event indicates that there was an unknown error returned by Active Directory. Check the Azure AD Connect server event log for events from the ADSync source for more information.|
141141
| 33002| ADUserNotFoundError| This event indicates that the user who is trying to reset or change a password was not found in the on-premises directory. This error can occur when the user has been deleted on-premises but not in the cloud. This error can also occur if there is a problem with sync. Check your sync logs and the last few sync run details for more information.|
142142
| 33003| ADMutliMatchError| When a password reset or change request originates from the cloud, we use the cloud anchor specified during the setup process of Azure AD Connect to determine how to link that request back to a user in your on-premises environment. This event indicates that we found two users in your on-premises directory with the same cloud anchor attribute. Check your sync logs and the last few sync run details for more information.|
143-
| 33004| ADPermissionsError| This event indicates that the Active Directory Management Agent (ADMA) service account does not have the appropriate permissions on the account in question to set a new password. Ensure that the ADMA account in the user’s forest has reset and change password permissions on all objects in the forest. For more information on how to set the permissions, see Step 4: Set up the appropriate Active Directory permissions.|
143+
| 33004| ADPermissionsError| This event indicates that the Active Directory Management Agent (ADMA) service account does not have the appropriate permissions on the account in question to set a new password. Ensure that the ADMA account in the user’s forest has reset and change password permissions on all objects in the forest. For more information on how to set the permissions, see Step 4: Set up the appropriate Active Directory permissions. This error could also occur when the user's attribute AdminCount is set to 1.|
144144
| 33005| ADUserAccountDisabled| This event indicates that we attempted to reset or change a password for an account that was disabled on-premises. Enable the account and try the operation again.|
145145
| 33006| ADUserAccountLockedOut| This event indicates that we attempted to reset or change a password for an account that was locked out on-premises. Lockouts can occur when a user has tried a change or reset password operation too many times in a short period. Unlock the account and try the operation again.|
146146
| 33007| ADUserIncorrectPassword| This event indicates that the user specified an incorrect current password when performing a password change operation. Specify the correct current password and try again.|

articles/active-directory/authentication/concept-authentication-passwordless.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ The following providers offer FIDO2 security keys of different form factors that
7373
| HID | [https://www.hidglobal.com/contact-us](https://www.hidglobal.com/contact-us) |
7474
| Ensurity | [https://www.ensurity.com/contact](https://www.ensurity.com/contact) |
7575
| eWBM | [https://www.ewbm.com/page/sub1_5](https://www.ewbm.com/page/sub1_5) |
76+
| AuthenTrend | [https://authentrend.com/about-us/#pg-35-3](https://authentrend.com/about-us/#pg-35-3) |
7677

7778
If you are a vendor and want to get your device on this list, contact [[email protected]](mailto:[email protected]).
7879

articles/active-directory/conditional-access/concept-conditional-access-block-legacy-authentication.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ Before you can block legacy authentication in your directory, you need to first
3030

3131
1. Navigate to the Azure portal > Azure Active Directory > Sign-ins.
3232
1. Add the Client App column if it is not shown by clicking on Columns > Client App.
33-
1. Filter by Client App > Other Clients and click Apply.
33+
1. Filter by Client App > check all the Other Client options presented and click Apply.
34+
1. Filter by Status > Success and click Apply.
35+
1. Expand your date range if necessary using the Date filter.
3436

35-
Filtering will only show you sign-in attempts that were made by legacy authentication protocols. Clicking on each individual sign-in attempt will show you additional details. The Client App field under the Basic Info tab will indicate which legacy authentication protocol was used.
37+
Filtering will only show you successful sign-in attempts that were made by the selected legacy authentication protocols. Clicking on each individual sign-in attempt will show you additional details. The Client App column or the Client App field under the Basic Info tab after selecting an individual row of data will indicate which legacy authentication protocol was used.
3638
These logs will indicate which users are still depending on legacy authentication and which applications are using legacy protocols to make authentication requests. For users that do not appear in these logs and are confirmed to not be using legacy authentication, implement a Conditional Access policy or enable the Baseline policy: block legacy authentication for these users only.
3739

3840
## Moving away from legacy authentication

articles/ansible/ansible-manage-azure-dynamic-inventories.md

Lines changed: 69 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,20 @@ Ansible can be used to pull inventory information from various sources (includin
6666
6767
You can [use tags to organize your Azure resources](https://docs.microsoft.com/azure/azure-resource-manager/resource-group-using-tags#azure-cli) by user-defined categories.
6868
69+
### Using Ansible version < 2.8
6970
Enter the following [az resource tag](/cli/azure/resource?view=azure-cli-latest.md#az-resource-tag) command to tag the virtual machine `ansible-inventory-test-vm1` with the key `nginx`:
7071
7172
```azurecli-interactive
7273
az resource tag --tags nginx --id /subscriptions/<YourAzureSubscriptionID>/resourceGroups/ansible-inventory-test-rg/providers/Microsoft.Compute/virtualMachines/ansible-inventory-test-vm1
7374
```
75+
76+
### Using Ansible version >= 2.8
77+
Enter the following [az resource tag](/cli/azure/resource?view=azure-cli-latest.md#az-resource-tag) command to tag the virtual machine `ansible-inventory-test-vm1` with the key `Ansible=nginx`:
78+
79+
```azurecli-interactive
80+
az resource tag --tags Ansible=nginx --id /subscriptions/<YourAzureSubscriptionID>/resourceGroups/ansible-inventory-test-rg/providers/Microsoft.Compute/virtualMachines/ansible-inventory-test-vm1
81+
```
82+
7483
## Generate a dynamic inventory
7584

7685
Once you have your virtual machines defined (and tagged), it's time to generate the dynamic inventory.
@@ -119,10 +128,14 @@ Starting with Ansible 2.8, Ansible provides an [Azure dynamic-inventory plugin](
119128
1. The inventory plugin requires a configuration file. The configuration file must end in `azure_rm` and have an extension of either `yml` or `yaml`. For this tutorial example, save the following playbook as `myazure_rm.yml`:
120129
121130
```yml
122-
plugin: azure_rm
123-
include_vm_resource_groups:
124-
- ansible-inventory-test-rg
125-
auth_source: auto
131+
plugin: azure_rm
132+
include_vm_resource_groups:
133+
- ansible-inventory-test-rg
134+
auth_source: auto
135+
136+
keyed_groups:
137+
- prefix: tag
138+
key: tags
126139
```
127140
128141
1. Run the following command to ping VMs in the resource group:
@@ -151,33 +164,49 @@ Starting with Ansible 2.8, Ansible provides an [Azure dynamic-inventory plugin](
151164
```
152165
153166
## Enable the VM tag
154-
Once you've set a tag, you need to "enable" that tag. One way to enable a tag is by exporting the tag to an environment variable `AZURE_TAGS` via the `export` command:
155167
156-
```azurecli-interactive
157-
export AZURE_TAGS=nginx
158-
```
168+
### If you're using Ansible < 2.8,
159169
160-
- If you're using Ansible < 2.8, run the following command:
170+
- Once you've set a tag, you need to "enable" that tag. One way to enable a tag is by exporting the tag to an environment variable `AZURE_TAGS` via the `export` command:
171+
172+
```azurecli-interactive
173+
export AZURE_TAGS=nginx
174+
```
175+
176+
- Run the following command:
161177
162178
```bash
163179
ansible -i azure_rm.py ansible-inventory-test-rg -m ping
164180
```
181+
182+
You now see only one virtual machine (the one whose tag matches the value exported into the `AZURE_TAGS` environment variable):
183+
184+
```Output
185+
ansible-inventory-test-vm1 | SUCCESS => {
186+
"changed": false,
187+
"failed": false,
188+
"ping": "pong"
189+
}
190+
```
191+
192+
### If you're using Ansible >= 2.8
193+
194+
- run the this command `ansible-inventory -i myazure_rm.yml --graph` to get the following:
195+
196+
```Output
197+
@all:
198+
|--@tag_Ansible_nginx:
199+
| |--ansible-inventory-test-vm1_9e2f
200+
|--@ungrouped:
201+
| |--ansible-inventory-test-vm2_7ba9
202+
```
165203
166-
- If you're using Ansible >= 2.8, run the following command:
204+
- You can also run the following command to test connection to the Nginx VM:
167205
168206
```bash
169-
ansible all -m ping -i ./myazure_rm.yml
207+
ansible -i ./myazure_rm.yml -m ping tag_Ansible_nginx
170208
```
171209
172-
You now see only one virtual machine (the one whose tag matches the value exported into the `AZURE_TAGS` environment variable):
173-
174-
```Output
175-
ansible-inventory-test-vm1 | SUCCESS => {
176-
"changed": false,
177-
"failed": false,
178-
"ping": "pong"
179-
}
180-
```
181210
182211
## Set up Nginx on the tagged VM
183212
@@ -192,19 +221,19 @@ The purpose of tags is to enable the ability to quickly and easily work with sub
192221
1. Paste the following sample code into the editor:
193222

194223
```yml
195-
---
196-
- name: Install and start Nginx on an Azure virtual machine
197-
hosts: all
198-
become: yes
199-
tasks:
200-
- name: install nginx
201-
apt: pkg=nginx state=installed
202-
notify:
203-
- start nginx
204-
205-
handlers:
206-
- name: start nginx
207-
service: name=nginx state=started
224+
---
225+
- name: Install and start Nginx on an Azure virtual machine
226+
hosts: all
227+
become: yes
228+
tasks:
229+
- name: install nginx
230+
apt: pkg=nginx state=installed
231+
notify:
232+
- start nginx
233+
234+
handlers:
235+
- name: start nginx
236+
service: name=nginx state=started
208237
```
209238
210239
1. Save the file and exit the editor.
@@ -213,15 +242,15 @@ The purpose of tags is to enable the ability to quickly and easily work with sub
213242

214243
- Ansible < 2.8:
215244

216-
```bash
217-
ansible-playbook -i azure_rm.py nginx.yml
218-
```
245+
```bash
246+
ansible-playbook -i azure_rm.py nginx.yml
247+
```
219248

220249
- Ansible >= 2.8:
221250

222-
```bash
223-
ansible-playbook -i ./myazure_rm.yml nginx.yml
224-
```
251+
```bash
252+
ansible-playbook -i ./myazure_rm.yml nginx.yml --limit=tag_Ansible_nginx
253+
```
225254

226255
1. After running the playbook, you see output similar to the following results:
227256

@@ -286,4 +315,4 @@ This section illustrates one technique to test that Nginx is installed on your v
286315
## Next steps
287316

288317
> [!div class="nextstepaction"]
289-
> [Quickstart: Configure Linux virtual machines in Azure using Ansible](/azure/virtual-machines/linux/ansible-create-vm)
318+
> [Quickstart: Configure Linux virtual machines in Azure using Ansible](/azure/virtual-machines/linux/ansible-create-vm)

articles/app-service/overview-local-cache.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ You enable Local Cache on a per-web-app basis by using this app setting:
9090
```
9191

9292
## Change the size setting in Local Cache
93-
By default, the local cache size is **300 MB**. This includes the /site and /siteextensions folders that are copied from the content store, as well as any locally created logs and data folders. To increase this limit, use the app setting `WEBSITE_LOCAL_CACHE_SIZEINMB`. You can increase the size up to **2 GB** (2000 MB) per app.
93+
By default, the local cache size is **1 GB**. This includes the /site and /siteextensions folders that are copied from the content store, as well as any locally created logs and data folders. To increase this limit, use the app setting `WEBSITE_LOCAL_CACHE_SIZEINMB`. You can increase the size up to **2 GB** (2000 MB) per app.
9494

9595
## Best practices for using App Service Local Cache
9696
We recommend that you use Local Cache in conjunction with the [Staging Environments](../app-service/deploy-staging-slots.md) feature.
@@ -102,6 +102,7 @@ We recommend that you use Local Cache in conjunction with the [Staging Environme
102102
* Sticky settings include name and sticky to a slot. So when the Staging slot gets swapped into Production, it inherits the Local Cache app settings. The newly swapped Production slot will run against the local cache after a few minutes and will be warmed up as part of slot warmup after swap. So when the slot swap is complete, your Production slot is running against the local cache.
103103

104104
## Frequently asked questions (FAQ)
105+
105106
### How can I tell if Local Cache applies to my app?
106107
If your app needs a high-performance, reliable content store, does not use the content store to write critical data at runtime, and is less than 2 GB in total size, then the answer is "yes"! To get the total size of your /site and /siteextensions folders, you can use the site extension "Azure Web Apps Disk Usage."
107108

articles/availability-zones/az-overview.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ The combinations of Azure services and regions that support Availability Zones a
6767
| Event Hubs | &#10003; | &#10003; | &#10003; | &#10003; | &#10003; | &#10003; | &#10003; | &#10003; | &#10003; | &#10003; |
6868
| **Integration** | | | | | | | | | | |
6969
| Service Bus (Premium Tier Only) | &#10003; | &#10003; | &#10003; | &#10003; | &#10003; | &#10003; |&#10003; | &#10003; |&#10003; | &#10003; |
70+
| Event Grid | &#10003; | &#10003; | &#10003; | &#10003; | &#10003; | &#10003; |&#10003; | &#10003; |&#10003; | &#10003; |
7071

7172

7273

articles/azure-cache-for-redis/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@
8989
href: cache-administration.md#schedule-updates
9090
- name: Configure redis-cli.exe access
9191
href: cache-how-to-redis-cli-tool.md
92+
- name: Deprecate use of TLS 1.0 and 1.1
93+
href: cache-deprecate-tls-10-11.md
9294
- name: Monitor
9395
items:
9496
- name: Monitor in Azure portal
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
---
2+
title: Remove use of TLS 1.0 and 1.1 with Azure Cache for Redis | Microsoft Docs
3+
description: Learn how to remove TLS 1.0 and 1.1 from your application when communicating with Azure Cache for Redis
4+
services: cache
5+
documentationcenter: ''
6+
author: yegu-ms
7+
manager: maiye
8+
editor: ''
9+
10+
ms.assetid:
11+
ms.service: cache
12+
ms.workload: tbd
13+
ms.tgt_pltfrm: cache
14+
ms.devlang: na
15+
ms.topic: article
16+
ms.date: 10/22/2019
17+
ms.author: yegu
18+
19+
---
20+
21+
# Remove use of TLS 1.0 and 1.1 with Azure Cache for Redis
22+
23+
There is an industry-wide push towards using TLS 1.2 or higher exclusively. TLS Versions 1.0 and 1.1 are known to be susceptible to attacks such as BEAST and POODLE and have other Common Vulnerabilities and Exposures (CVE) weaknesses. They also do not support the modern encryption methods and cipher suites recommended by PCI compliance standards. This [TLS security blog](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/) explains some of these vulnerabilities in more details.
24+
25+
While none of these pose immediate problems, you should consider moving away from using TLS 1.0 and 1.1 as early as possible. Azure Cache for Redis will stop supporting these TLS versions starting on March 31, 2020. Your application will be required to use at least TLS 1.2 in order to communicate with your cache after this date.
26+
27+
This article provides general guidance on how to detect and remove these dependencies from your application.
28+
29+
## Check if your application is already compliant
30+
31+
The easiest way to figure out if your application will work with TLS 1.2 is to set the Minimum TLS version on a test or staging cache it uses to TLS 1.2. You can find the Minimum TLS version setting in the [Advanced settings](cache-configure.md#advanced-settings) of your cache instance in the Azure portal. If the application continues to function as expected after this change, it is most likely to be compliant. Some Redis client libraries used by our application may need to be specifically configured to enable TLS 1.2 in order to connect to Azure Cache for Redis over that security protocol.
32+
33+
## Configure your application to use TLS 1.2
34+
35+
Most applications utilize Redis client libraries to handle communication with their caches. Below are instructions on how to configure some of the popular client libraries in various programming languages and frameworks to use TLS 1.2.
36+
37+
### .NET Framework
38+
39+
Redis .NET clients use the lowest TLS version by default on .NET Framework 4.5.2 or below and the highest TLS version on 4.6 or above. If you're using an older version of .NET Framework, you can enable TLS 1.2 manually:
40+
41+
* StackExchange.Redis: set `ssl=true` and `sslprotocls=tls12` in the connection string.
42+
* ServiceStack.Redis: follow [these instructions](https://github.com/ServiceStack/ServiceStack.Redis/pull/247).
43+
44+
### .NET Core
45+
46+
Redis .NET Core clients use the highest TLS version by default.
47+
48+
### Java
49+
50+
Redis Java clients use TLS 1.0 on Java version 6 or below. Jedis, Lettuce and Radisson won't be able to connect to Azure Cache for Redis if TLS 1.0 is disabled on the cache. There is no known workaround currently.
51+
52+
On Java 7 or above, Redis clients don't use TLS 1.2 by default but may be configured for it. Lettuce and Radisson don't support this right now. They will break if the cache only accepts TLS 1.2 connections. Jedis allows you to specify the underlying TLS settings with the following code snippet:
53+
54+
``` Java
55+
SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
56+
SSLParameters sslParameters = new SSLParameters();
57+
sslParameters.setEndpointIdentificationAlgorithm("HTTPS");
58+
sslParameters.setProtocols(new String[]{"TLSv1", "TLSv1.1", "TLSv1.2"});
59+
60+
URI uri = URI.create("rediss://host:port");
61+
JedisShardInfo shardInfo = new JedisShardInfo(uri, sslSocketFactory, sslParameters, null);
62+
63+
shardInfo.setPassword("cachePassword");
64+
65+
Jedis jedis = new Jedis(shardInfo);
66+
```
67+
68+
### Node.js
69+
70+
Node Redis and IORedis use TLS 1.2 by default.
71+
72+
### PHP
73+
74+
Predis on PHP 7 won't work since the latter only supports TLS 1.0. On PHP 7.2.1 or below, Predis uses TLS 1.0 or 1.1 by default. You can specify TLS 1.2 when instantiating the client:
75+
76+
``` PHP
77+
$redis=newPredis\Client([
78+
'scheme'=>'tls',
79+
'host'=>'host',
80+
'port'=>6380,
81+
'password'=>'password',
82+
'ssl'=>[
83+
'crypto_type'=>STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
84+
],
85+
]);
86+
```
87+
88+
On PHP 7.3 or above, Predis uses the latest TLS version.
89+
90+
PhpRedis doesn't support TLS on any PHP version.
91+
92+
### Python
93+
94+
Redis-py uses TLS 1.2 by default.
95+
96+
### GO
97+
98+
Redigo uses TLS 1.2 by default.
99+
100+
## Additional information
101+
102+
- [How to configure Azure Cache for Redis](cache-configure.md)

articles/azure-cache-for-redis/cache-troubleshoot-client.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Troubleshoot Redis client | Microsoft Docs
2+
title: Troubleshoot Azure Cache for Redis client-side issues | Microsoft Docs
33
description: Learn how to resolve common client-side issues with Azure Cache for Redis
44
services: cache
55
documentationcenter: ''

0 commit comments

Comments
 (0)