Skip to content

Commit 5bebf55

Browse files
authored
Merge pull request #106838 from jluk/master
Update hardened OS doc wording & update multi nodepool: subnet per pool
2 parents b3eb05f + 81776b6 commit 5bebf55

File tree

2 files changed

+47
-21
lines changed

2 files changed

+47
-21
lines changed

articles/aks/security-hardened-vm-host-image.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,36 @@
22
title: Security hardening in AKS virtual machine hosts
33
description: Learn about the security hardening in AKS VM host OS
44
services: container-service
5-
author: saudas
5+
author: mlearned
66
ms.topic: article
77
ms.date: 09/11/2019
8-
ms.author: saudas
8+
ms.author: mlearned
99
ms.custom: mvc
1010
---
1111

12-
# Security hardening in AKS virtual machine hosts
12+
# Security hardening for AKS agent node host OS
1313

1414
Azure Kubernetes Service (AKS) is a secure service compliant with SOC, ISO, PCI DSS, and HIPAA standards. This article covers the security hardening applied to AKS virtual machine hosts. For more information about AKS security, see [Security concepts for applications and clusters in Azure Kubernetes Service (AKS)](https://docs.microsoft.com/azure/aks/concepts-security).
1515

16-
AKS clusters are deployed on host virtual machines, which run a security optimized OS. This host OS is currently based on an Ubuntu 16.04.LTS image with a set of additional security hardening steps applied (see Security hardening details).
16+
> [!Note]
17+
> This document is scoped to Linux agents in AKS only.
1718
18-
The goal of the security hardened host OS is to reduce the surface area of attack and allow the deployment of containers in a secure fashion.
19+
AKS clusters are deployed on host virtual machines, which run a security optimized OS which is utilized for containers running on AKS. This host OS is based on an **Ubuntu 16.04.LTS** image with additional security hardening and optimizations applied (see Security hardening details).
20+
21+
The goal of the security hardened host OS is to reduce the surface area of attack and optimize for the deployment of containers in a secure manner.
1922

2023
> [!Important]
21-
> The security hardened OS is NOT CIS benchmarked. While there are overlaps with CIS benchmarks, the goal is not to be CIS-compliant. The goal for host OS hardening is to converge on a level of security consistent with Microsofts own internal host security standards.
24+
> The security hardened OS is NOT CIS benchmarked. While there are overlaps with CIS benchmarks, the goal is not to be CIS-compliant. The goal for host OS hardening is to converge on a level of security consistent with Microsoft's own internal host security standards.
2225
23-
## Security hardening features
26+
## Security hardening features
2427

25-
* AKS provides a security optimized host OS by default. There is no current option to select an alternate operating system.
28+
* AKS provides a security optimized host OS by default. There is no option to select an alternate operating system.
2629

2730
* Azure applies daily patches (including security patches) to AKS virtual machine hosts. Some of these patches will require a reboot, while others will not. You are responsible for scheduling AKS VM host reboots as needed. For guidance on how to automate AKS patching see [patching AKS nodes](https://docs.microsoft.com/azure/aks/node-updates-kured).
2831

29-
Below is a summary of image hardening work that is implemented in AKS-Engine to produce the security optimized host OS. The work was implemented [in this GitHub project](https://github.com/Azure/aks-engine/projects/7).
30-
31-
AKS-Engine does not promote or adhere to any specific security standard at this time, but CIS (Center for Internet Security) audit IDs are provided for convenience where applicable.
32-
33-
## What's configured?
32+
## What is configured
3433

35-
| CIS | Audit description|
34+
| CIS | Audit description|
3635
|---|---|
3736
| 1.1.1.1 |Ensure mounting of cramfs filesystems is disabled|
3837
| 1.1.1.2 |Ensure mounting of freevxfs filesystems is disabled|
@@ -73,9 +72,9 @@ AKS-Engine does not promote or adhere to any specific security standard at this
7372

7473
## Additional notes
7574

76-
* To further reduce the attack surface area, some unnecessary kernel module drivers have been disabled in the OS.
75+
* To further reduce the attack surface area, some unnecessary kernel module drivers have been disabled in the OS.
7776

78-
* The security hardened OS is NOT supported outside of the AKS platform.
77+
* The security hardened OS is built and maintained specifically for AKS and is NOT supported outside of the AKS platform.
7978

8079
## Next steps
8180

articles/aks/use-multiple-node-pools.md

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ The following limitations apply when you create and manage AKS clusters that sup
2929
* The AKS cluster must use the Standard SKU load balancer to use multiple node pools, the feature is not supported with Basic SKU load balancers.
3030
* The AKS cluster must use virtual machine scale sets for the nodes.
3131
* The name of a node pool may only contain lowercase alphanumeric characters and must begin with a lowercase letter. For Linux node pools the length must be between 1 and 12 characters, for Windows node pools the length must be between 1 and 6 characters.
32-
* All node pools must reside in the same virtual network and subnet.
33-
* When creating multiple node pools at cluster create time, all Kubernetes versions used by node pools must match the version set for the control plane. This version can be updated after the cluster has been provisioned by using per node pool operations.
32+
* All node pools must reside in the same virtual network.
33+
* When creating multiple node pools at cluster create time, all Kubernetes versions used by node pools must match the version set for the control plane. This can be updated after the cluster has been provisioned by using per node pool operations.
3434

3535
## Create an AKS cluster
3636

@@ -117,6 +117,29 @@ The following example output shows that *mynodepool* has been successfully creat
117117
> [!TIP]
118118
> If no *VmSize* is specified when you add a node pool, the default size is *Standard_DS2_v3* for Windows node pools and *Standard_DS2_v2* for Linux node pools. If no *OrchestratorVersion* is specified, it defaults to the same version as the control plane.
119119
120+
### Add a node pool with a unique subnet (preview)
121+
122+
A workload may require splitting a cluster's nodes into separate pools for logical isolation. This isolation can be supported with separate subnets dedicated to each node pool in the cluster. This can address requirements such as having non-contiguous virtual network address space to split across node pools.
123+
124+
#### Limitations
125+
126+
* All subnets assigned to nodepools must belong to the same virtual network.
127+
* System pods must have access to all nodes in the cluster to provide critical functionality such as DNS resolution via coreDNS.
128+
* Assignment of a unique subnet per node pool is limited to Azure CNI during preview.
129+
* Using network policies with a unique subnet per node pool is not supported during preview.
130+
131+
To create a node pool with a dedicated subnet, pass the subnet resource ID as an additional parameter when creating a node pool.
132+
133+
```azurecli-interactive
134+
az aks nodepool add \
135+
--resource-group myResourceGroup \
136+
--cluster-name myAKSCluster \
137+
--name mynodepool \
138+
--node-count 3 \
139+
--kubernetes-version 1.15.5
140+
--vnet-subnet-id <YOUR_SUBNET_RESOURCE_ID>
141+
```
142+
120143
## Upgrade a node pool
121144

122145
> [!NOTE]
@@ -691,18 +714,22 @@ az group deployment create \
691714

692715
It may take a few minutes to update your AKS cluster depending on the node pool settings and operations you define in your Resource Manager template.
693716

694-
## Assign a public IP per node in a node pool
717+
## Assign a public IP per node for a node pool (preview)
695718

696719
> [!WARNING]
697720
> During the preview of assigning a public IP per node, it cannot be used with the *Standard Load Balancer SKU in AKS* due to possible load balancer rules conflicting with VM provisioning. As a result of this limitation, Windows agent pools are not supported with this preview feature. While in preview you must use the *Basic Load Balancer SKU* if you need to assign a public IP per node.
698721

699-
AKS nodes do not require their own public IP addresses for communication. However, some scenarios may require nodes in a node pool to have their own public IP addresses. An example is gaming, where a console needs to make a direct connection to a cloud virtual machine to minimize hops. This scenario can be achieved by registering for a separate preview feature, Node Public IP (preview).
722+
AKS nodes do not require their own public IP addresses for communication. However, scenarios may require nodes in a node pool to receive their own dedicated public IP addresses. An common scenario is for gaming workloads, where a console needs to make a direct connection to a cloud virtual machine to minimize hops. This scenario can be achieved on AKS by registering for a preview feature, Node Public IP (preview).
723+
724+
Register for the Node Public IP feature by issuing the following Azure CLI command.
700725

701726
```azurecli-interactive
702727
az feature register --name NodePublicIPPreview --namespace Microsoft.ContainerService
703728
```
704729

705-
After successful registration, deploy an Azure Resource Manager template following the same instructions as [above](#manage-node-pools-using-a-resource-manager-template) and add the boolean value property `enableNodePublicIP` to agentPoolProfiles. Set the value to `true` as by default it is set as `false` if not specified. This property is a create-time only property and requires a minimum API version of 2019-06-01. This can be applied to both Linux and Windows node pools.
730+
After successful registration, deploy an Azure Resource Manager template following the same instructions as [above](#manage-node-pools-using-a-resource-manager-template) and add the boolean property `enableNodePublicIP` to agentPoolProfiles. Set the value to `true` as by default it is set as `false` if not specified.
731+
732+
This property is a create-time only property and requires a minimum API version of 2019-06-01. This can be applied to both Linux and Windows node pools.
706733

707734
## Clean up resources
708735

0 commit comments

Comments
 (0)