Skip to content

Commit e7a87f5

Browse files
authored
Merge pull request #219146 from MGoedtel/task28756
[Do Not Merge] First draft of AKS Security Update Management content
2 parents 059f933 + eaaedd9 commit e7a87f5

File tree

4 files changed

+165
-33
lines changed

4 files changed

+165
-33
lines changed

articles/aks/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@
7575
href: concepts-clusters-workloads.md
7676
- name: Security
7777
items:
78+
- name: Vulnerability management
79+
href: concepts-vulnerability-management.md
7880
- name: Security Baseline
7981
href: /security/benchmark/azure/baselines/aks-security-baseline?context=/azure/aks/context/aks-context
8082
- name: Container Security

articles/aks/concepts-security.md

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Concepts - Security in Azure Kubernetes Services (AKS)
33
description: Learn about security in Azure Kubernetes Service (AKS), including master and node communication, network policies, and Kubernetes secrets.
44
author: miwithro
55
ms.topic: conceptual
6-
ms.date: 02/22/2023
6+
ms.date: 02/28/2023
77
ms.author: miwithro
88
---
99

@@ -13,10 +13,10 @@ Container security protects the entire end-to-end pipeline from build to the app
1313

1414
The Secure Supply Chain includes the build environment and registry.
1515

16-
Kubernetes includes security components, such as *pod security standards* and *Secrets*. Meanwhile, Azure includes components like Active Directory, Microsoft Defender for Containers, Azure Policy, Azure Key Vault, network security groups and orchestrated cluster upgrades. AKS combines these security components to:
16+
Kubernetes includes security components, such as *pod security standards* and *Secrets*. Azure includes components like Active Directory, Microsoft Defender for Containers, Azure Policy, Azure Key Vault, network security groups and orchestrated cluster upgrades. AKS combines these security components to:
1717

18-
* Provide a complete Authentication and Authorization story.
19-
* Leverage AKS Built-in Azure Policy to secure your applications.
18+
* Provide a complete authentication and authorization story.
19+
* Apply AKS Built-in Azure Policy to secure your applications.
2020
* End-to-End insight from build through your application with Microsoft Defender for Containers.
2121
* Keep your AKS cluster running the latest OS security updates and Kubernetes releases.
2222
* Provide secure pod traffic and access to sensitive credentials.
@@ -25,15 +25,15 @@ This article introduces the core concepts that secure your applications in AKS.
2525

2626
## Build Security
2727

28-
As the entry point for the Supply Chain, it is important to conduct static analysis of image builds before they are promoted down the pipeline. This includes vulnerability and compliance assessment. It is not about failing a build because it has a vulnerability, as that will break development. It is about looking at the "Vendor Status" to segment based on vulnerabilities that are actionable by the development teams. Also leverage "Grace Periods" to allow developers time to remediate identified issues.
28+
As the entry point for the Supply Chain, it is important to conduct static analysis of image builds before they are promoted down the pipeline. This includes vulnerability and compliance assessment. It is not about failing a build because it has a vulnerability, as that breaks development. It's about looking at the **Vendor Status** to segment based on vulnerabilities that are actionable by the development teams. Also use **Grace Periods** to allow developers time to remediate identified issues.
2929

3030
## Registry Security
3131

32-
Assessing the vulnerability state of the image in the Registry will detect drift and will also catch images that didn't come from your build environment. Use [Notary V2](https://github.com/notaryproject/notaryproject) to attach signatures to your images to ensure deployments are coming from a trusted location.
32+
Assessing the vulnerability state of the image in the Registry detects drift and also catches images that didn't come from your build environment. Use [Notary V2](https://github.com/notaryproject/notaryproject) to attach signatures to your images to ensure deployments are coming from a trusted location.
3333

3434
## Cluster security
3535

36-
In AKS, the Kubernetes master components are part of the managed service provided, managed, and maintained by Microsoft. Each AKS cluster has its own single-tenanted, dedicated Kubernetes master to provide the API Server, Scheduler, etc.
36+
In AKS, the Kubernetes master components are part of the managed service provided, managed, and maintained by Microsoft. Each AKS cluster has its own single-tenanted, dedicated Kubernetes master to provide the API Server, Scheduler, etc. For information on how Microsoft manages security vulnerabilities and details about releasing security updates for managed pars of an AKS clusters, see [Vulnerability management for Azure Kubernetes Service][microsoft-vulnerability-management-aks].
3737

3838
By default, the Kubernetes API server uses a public IP address and a fully qualified domain name (FQDN). You can limit access to the API server endpoint using [authorized IP ranges][authorized-ip-ranges]. You can also create a fully [private cluster][private-clusters] to limit API server access to your virtual network.
3939

@@ -42,36 +42,29 @@ You can control access to the API server using Kubernetes role-based access cont
4242
## Node security
4343

4444
AKS nodes are Azure virtual machines (VMs) that you manage and maintain.
45+
4546
* Linux nodes run optimized versions of Ubuntu or Mariner.
4647
* Windows Server nodes run an optimized Windows Server 2019 release using the `containerd` or Docker container runtime.
4748

4849
When an AKS cluster is created or scaled up, the nodes are automatically deployed with the latest OS security updates and configurations.
4950

5051
> [!NOTE]
5152
> AKS clusters using:
52-
> * Kubernetes version 1.19 and greater for Linux node pools use `containerd` as its container runtime. Using `containerd` with Windows Server 2019 node pools is currently in preview. For more details, see [Add a Windows Server node pool with `containerd`][aks-add-np-containerd].
53+
> * Kubernetes version 1.19 and greater for Linux node pools use `containerd` as its container runtime. Using `containerd` with Windows Server 2019 node pools is currently in preview. For more information, see [Add a Windows Server node pool with `containerd`][aks-add-np-containerd].
5354
> * Kubernetes prior to v1.19 for Linux node pools use Docker as its container runtime. For Windows Server 2019 node pools, Docker is the default container runtime.
5455
55-
### Node security patches
56-
57-
#### Linux nodes
58-
Each evening, Linux nodes in AKS get security patches through their distro security update channel. This behavior is automatically configured as the nodes are deployed in an AKS cluster. To minimize disruption and potential impact to running workloads, nodes are not automatically rebooted if a security patch or kernel update requires it. For more information about how to handle node reboots, see [Apply security and kernel updates to nodes in AKS][aks-kured].
59-
60-
Nightly updates apply security updates to the OS on the node, but the node image used to create nodes for your cluster remains unchanged. If a new Linux node is added to your cluster, the original image is used to create the node. This new node will receive all the security and kernel updates available during the automatic check every night but will remain unpatched until all checks and restarts are complete. You can use node image upgrade to check for and update node images used by your cluster. For more details on node image upgrade, see [Azure Kubernetes Service (AKS) node image upgrade][node-image-upgrade].
61-
62-
For AKS clusters on auto upgrade channel "node-image" will not pull security updates through unattended upgrade. They will get security updates through the weekly node image upgrade.
63-
64-
#### Windows Server nodes
65-
66-
For Windows Server nodes, Windows Update doesn't automatically run and apply the latest updates. Schedule Windows Server node pool upgrades in your AKS cluster around the regular Windows Update release cycle and your own validation process. This upgrade process creates nodes that run the latest Windows Server image and patches, then removes the older nodes. For more information on this process, see [Upgrade a node pool in AKS][nodepool-upgrade].
56+
For more information about the security upgrade process for Linux and Windows worker nodes, see [Security patching nodes][aks-vulnerability-management-nodes].
6757

6858
### Node authorization
59+
6960
Node authorization is a special-purpose authorization mode that specifically authorizes API requests made by kubelets to protect against East-West attacks. Node authorization is enabled by default on AKS 1.24 + clusters.
7061

7162
### Node deployment
63+
7264
Nodes are deployed into a private virtual network subnet, with no public IP addresses assigned. For troubleshooting and management purposes, SSH is enabled by default and only accessible using the internal IP address.
7365

7466
### Node storage
67+
7568
To provide storage, the nodes use Azure Managed Disks. For most VM node sizes, Azure Managed Disks are Premium disks backed by high-performance SSDs. The data stored on managed disks is automatically encrypted at rest within the Azure platform. To improve redundancy, Azure Managed Disks are securely replicated within the Azure datacenter.
7669

7770
### Hostile multi-tenant workloads
@@ -96,7 +89,7 @@ To start the upgrade process, specify one of the [listed available Kubernetes ve
9689

9790
During the upgrade process, AKS nodes are individually cordoned from the cluster to prevent new pods from being scheduled on them. The nodes are then drained and upgraded as follows:
9891

99-
1. A new node is deployed into the node pool.
92+
1. A new node is deployed into the node pool.
10093
* This node runs the latest OS image and patches.
10194
1. One of the existing nodes is identified for upgrade.
10295
1. Pods on the identified node are gracefully terminated and scheduled on the other nodes in the node pool.
@@ -113,33 +106,33 @@ For connectivity and security with on-premises networks, you can deploy your AKS
113106

114107
To filter virtual network traffic flow, Azure uses network security group rules. These rules define the source and destination IP ranges, ports, and protocols allowed or denied access to resources. Default rules are created to allow TLS traffic to the Kubernetes API server. You create services with load balancers, port mappings, or ingress routes. AKS automatically modifies the network security group for traffic flow.
115108

116-
If you provide your own subnet for your AKS cluster (whether using Azure CNI or Kubenet), **do not** modify the NIC-level network security group managed by AKS. Instead, create more subnet-level network security groups to modify the flow of traffic. Make sure they don't interfere with necessary traffic managing the cluster, such as load balancer access, communication with the control plane, and [egress][aks-limit-egress-traffic].
109+
If you provide your own subnet for your AKS cluster (whether using Azure CNI or Kubenet), **do not** modify the NIC-level network security group managed by AKS. Instead, create more subnet-level network security groups to modify the flow of traffic. Verify they don't interfere with necessary traffic managing the cluster, such as load balancer access, communication with the control plane, and [egress][aks-limit-egress-traffic].
117110

118111
### Kubernetes network policy
119112

120113
To limit network traffic between pods in your cluster, AKS offers support for [Kubernetes network policies][network-policy]. With network policies, you can allow or deny specific network paths within the cluster based on namespaces and label selectors.
121114

122115
## Application Security
123116

124-
To protect pods running on AKS leverage [Microsoft Defender for Containers][microsoft-defender-for-containers] to detect and restrict cyber attacks against your applications running in your pods. Run continual scanning to detect drift in the vulnerability state of your application and implement a "blue/green/canary" process to patch and replace the vulnerable images.
125-
117+
To protect pods running on AKS, consider [Microsoft Defender for Containers][microsoft-defender-for-containers] to detect and restrict cyber attacks against your applications running in your pods. Run continual scanning to detect drift in the vulnerability state of your application and implement a "blue/green/canary" process to patch and replace the vulnerable images.
126118

127119
## Kubernetes Secrets
128120

129-
With a Kubernetes *Secret*, you inject sensitive data into pods, such as access credentials or keys.
130-
1. Create a Secret using the Kubernetes API.
131-
1. Define your pod or deployment and request a specific Secret.
121+
With a Kubernetes *Secret*, you inject sensitive data into pods, such as access credentials or keys.
122+
123+
1. Create a Secret using the Kubernetes API.
124+
1. Define your pod or deployment and request a specific Secret.
132125
* Secrets are only provided to nodes with a scheduled pod that requires them.
133-
* The Secret is stored in *tmpfs*, not written to disk.
134-
1. When you delete the last pod on a node requiring a Secret, the Secret is deleted from the node's tmpfs.
135-
* Secrets are stored within a given namespace and can only be accessed by pods within the same namespace.
126+
* The Secret is stored in *tmpfs*, not written to disk.
127+
1. When you delete the last pod on a node requiring a Secret, the Secret is deleted from the node's *tmpfs*.
128+
* Secrets are stored within a given namespace and are only accessible from pods within the same namespace.
136129

137-
Using Secrets reduces the sensitive information defined in the pod or service YAML manifest. Instead, you request the Secret stored in Kubernetes API Server as part of your YAML manifest. This approach only provides the specific pod access to the Secret.
130+
Using Secrets reduces the sensitive information defined in the pod or service YAML manifest. Instead, you request the Secret stored in Kubernetes API Server as part of your YAML manifest. This approach only provides the specific pod access to the Secret.
138131

139132
> [!NOTE]
140133
> The raw secret manifest files contain the secret data in base64 format (see the [official documentation][secret-risks] for more details). Treat these files as sensitive information, and never commit them to source control.
141134
142-
Kubernetes secrets are stored in etcd, a distributed key-value store. Etcd store is fully managed by AKS and [data is encrypted at rest within the Azure platform][encryption-atrest].
135+
Kubernetes secrets are stored in etcd, a distributed key-value store. AKS fully manages the Etcd store and [data is encrypted at rest within the Azure platform][encryption-atrest].
143136

144137
## Next steps
145138

@@ -182,3 +175,5 @@ For more information on core Kubernetes and AKS concepts, see:
182175
[private-clusters]: private-clusters.md
183176
[network-policy]: use-network-policies.md
184177
[node-image-upgrade]: node-image-upgrade.md
178+
[microsoft-vulnerability-management-aks]: concepts-vulnerability-management.md
179+
[aks-vulnerability-management-nodes]: concepts-vulnerability-management.md#worker-nodes

0 commit comments

Comments
 (0)