Skip to content

Commit ff50535

Browse files
authored
Merge pull request #262886 from dcurwin/wi-195468-architecture-jan10-2023
Agentless in architecture page
2 parents 18b94f2 + 56e9900 commit ff50535

3 files changed

Lines changed: 47 additions & 31 deletions

File tree

articles/defender-for-cloud/defender-for-containers-architecture.md

Lines changed: 44 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: dcurwin
55
ms.author: dacurwin
66
ms.topic: overview
77
ms.custom: ignite-2022
8-
ms.date: 09/06/2023
8+
ms.date: 01/10/2024
99
---
1010

1111
# Defender for Containers architecture
@@ -36,7 +36,7 @@ To learn more about implementation details such as supported operating systems,
3636

3737
## [**Azure (AKS)**](#tab/defender-for-container-arch-aks)
3838

39-
### Architecture diagram of Defender for Cloud and AKS clusters<a name="jit-asc"></a>
39+
### Architecture diagram of Defender for Cloud and AKS clusters
4040

4141
When Defender for Cloud protects a cluster hosted in Azure Kubernetes Service, the collection of audit log data is agentless and collected automatically through Azure infrastructure with no additional cost or configuration considerations. These are the required components in order to receive the full protection offered by Microsoft Defender for Containers:
4242

@@ -53,7 +53,31 @@ When Defender for Cloud protects a cluster hosted in Azure Kubernetes Service, t
5353
| microsoft-defender-collector-misc-* | kube-system | [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) | A set of containers that focus on collecting inventory and security events from the Kubernetes environment that aren't bounded to a specific node. | N/A | memory: 64Mi <br> <br>cpu: 60m | No |
5454
| microsoft-defender-publisher-ds-* | kube-system | [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) | Publish the collected data to Microsoft Defender for Containers backend service where the data will be processed for and analyzed. | N/A | memory: 200Mi <br> <br> cpu: 60m | Https 443 <br> <br> Learn more about the [outbound access prerequisites](../aks/outbound-rules-control-egress.md#microsoft-defender-for-containers) |
5555

56-
\* Resource limits aren't configurable; Learn more about [Kubernetes resources limits](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes)
56+
\* Resource limits aren't configurable; Learn more about [Kubernetes resources limits](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes).
57+
58+
### How does agentless discovery for Kubernetes in Azure work?
59+
60+
The discovery process is based on snapshots taken at intervals:
61+
62+
:::image type="content" source="media/concept-agentless-containers/diagram-permissions-architecture.png" alt-text="Diagram of the permissions architecture." lightbox="media/concept-agentless-containers/diagram-permissions-architecture.png":::
63+
64+
When you enable the agentless discovery for Kubernetes extension, the following process occurs:
65+
66+
- **Create**:
67+
- If the extension is enabled from Defender CSPM, Defender for Cloud creates an identity in customer environments called `CloudPosture/securityOperator/DefenderCSPMSecurityOperator`.
68+
- If the extension is enabled from Defender for Containers, Defender for Cloud creates an identity in customer environments called `CloudPosture/securityOperator/DefenderForContainersSecurityOperator`.
69+
- **Assign**: Defender for Cloud assigns a built-in role called **Kubernetes Agentless Operator** to that identity on subscription scope. The role contains the following permissions:
70+
71+
- AKS read (Microsoft.ContainerService/managedClusters/read)
72+
- AKS Trusted Access with the following permissions:
73+
- Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/write
74+
- Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/read
75+
- Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/delete
76+
77+
Learn more about [AKS Trusted Access](/azure/aks/trusted-access-feature).
78+
79+
- **Discover**: Using the system assigned identity, Defender for Cloud performs a discovery of the AKS clusters in your environment using API calls to the API server of AKS.
80+
- **Bind**: Upon discovery of an AKS cluster, Defender for Cloud performs an AKS bind operation between the created identity and the Kubernetes role *Microsoft.Security/pricings/microsoft-defender-operator*. The role is visible via API and gives Defender for Cloud data plane read permission inside the cluster.
5781

5882
## [**On-premises / IaaS (Arc)**](#tab/defender-for-container-arch-arc)
5983

@@ -88,9 +112,25 @@ When Defender for Cloud protects a cluster hosted in Elastic Kubernetes Service,
88112
89113
:::image type="content" source="./media/defender-for-containers/architecture-eks-cluster.png" alt-text="Diagram of high-level architecture of the interaction between Microsoft Defender for Containers, Amazon Web Services' EKS clusters, Azure Arc-enabled Kubernetes, and Azure Policy." lightbox="./media/defender-for-containers/architecture-eks-cluster.png":::
90114

115+
### How does agentless discovery for Kubernetes in AWS work?
116+
117+
The discovery process is based on snapshots taken at intervals:
118+
119+
When you enable the agentless discovery for Kubernetes extension, the following process occurs:
120+
121+
- **Create**:
122+
- The Defender for Cloud role *MDCContainersAgentlessDiscoveryK8sRole* must be added to the *aws-auth ConfigMap* of the EKS clusters. The name can be customized.
123+
124+
- **Assign**: Defender for Cloud assigns the *MDCContainersAgentlessDiscoveryK8sRole* role the following permissions:
125+
126+
- `eks:UpdateClusterConfig`
127+
- `eks:DescribeCluster`
128+
129+
- **Discover**: Using the system assigned identity, Defender for Cloud performs a discovery of the EKS clusters in your environment using API calls to the API server of EKS.
130+
91131
## [**GCP (GKE)**](#tab/defender-for-container-gke)
92132

93-
### Architecture diagram of Defender for Cloud and GKE clusters<a name="jit-asc"></a>
133+
### Architecture diagram of Defender for Cloud and GKE clusters
94134

95135
When Defender for Cloud protects a cluster hosted in Google Kubernetes Engine, the collection of audit log data is agentless. These are the required components in order to receive the full protection offered by Microsoft Defender for Containers:
96136

@@ -107,30 +147,6 @@ When Defender for Cloud protects a cluster hosted in Google Kubernetes Engine, t
107147

108148
---
109149

110-
## How does agentless discovery for Kubernetes work?
111-
112-
The discovery process is based on snapshots taken at intervals:
113-
114-
:::image type="content" source="media/concept-agentless-containers/diagram-permissions-architecture.png" alt-text="Diagram of the permissions architecture." lightbox="media/concept-agentless-containers/diagram-permissions-architecture.png":::
115-
116-
When you enable the agentless discovery for Kubernetes extension, the following process occurs:
117-
118-
- **Create**:
119-
- If the extension is enabled from Defender CSPM, Defender for Cloud creates an identity in customer environments called `CloudPosture/securityOperator/DefenderCSPMSecurityOperator`.
120-
- If the extension is enabled from Defender for Containers, Defender for Cloud creates an identity in customer environments called `CloudPosture/securityOperator/DefenderForContainersSecurityOperator`.
121-
- **Assign**: Defender for Cloud assigns a built-in role called **Kubernetes Agentless Operator** to that identity on subscription scope. The role contains the following permissions:
122-
123-
- AKS read (Microsoft.ContainerService/managedClusters/read)
124-
- AKS Trusted Access with the following permissions:
125-
- Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/write
126-
- Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/read
127-
- Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings/delete
128-
129-
Learn more about [AKS Trusted Access](/azure/aks/trusted-access-feature).
130-
131-
- **Discover**: Using the system assigned identity, Defender for Cloud performs a discovery of the AKS clusters in your environment using API calls to the API server of AKS.
132-
- **Bind**: Upon discovery of an AKS cluster, Defender for Cloud performs an AKS bind operation between the created identity and the Kubernetes role “Microsoft.Security/pricings/microsoft-defender-operator”. The role is visible via API and gives Defender for Cloud data plane read permission inside the cluster.
133-
134150
## Next steps
135151

136152
In this overview, you learned about the architecture of container security in Microsoft Defender for Cloud. To enable the plan, see:

articles/defender-for-cloud/includes/defender-for-containers-enable-plan-eks.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ To protect your EKS clusters, enable the Containers plan on the relevant account
3333
> [!NOTE]
3434
> If you disable this configuration, then the `Threat detection (control plane)` feature will be disabled. Learn more about [features availability](../supported-machines-endpoint-solutions-clouds-containers.md).
3535
36-
- [Agentless discovery for Kubernetes](../defender-for-containers-architecture.md#how-does-agentless-discovery-for-kubernetes-work) provides API-based discovery of your Kubernetes clusters. To enable the **Agentless discovery for Kubernetes** feature, toggle the setting to **On**.
36+
- [Agentless discovery for Kubernetes](../defender-for-containers-architecture.md#how-does-agentless-discovery-for-kubernetes-in-aws-work) provides API-based discovery of your Kubernetes clusters. To enable the **Agentless discovery for Kubernetes** feature, toggle the setting to **On**.
3737
- The [Agentless Container Vulnerability Assessment](../agentless-vulnerability-assessment-aws.md) provides vulnerability management for images stored in ECR and running images on your EKS clusters. To enable the **Agentless Container Vulnerability Assessment** feature, toggle the setting to **On**.
3838

3939
1. Continue through the remaining pages of the connector wizard.

articles/defender-for-cloud/tutorial-enable-container-aws.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Protect your Amazon Web Service (AWS) accounts containers with Defender for Containers
33
description: Learn how to enable the Defender for Containers plan on your Amazon Web Service (AWS) accounts for Microsoft Defender for Cloud.
44
ms.topic: install-set-up-deploy
5-
ms.date: 06/29/2023
5+
ms.date: 01/10/2024
66
---
77

88
# Protect your Amazon Web Service (AWS) containers with Defender for Containers
@@ -54,7 +54,7 @@ To protect your EKS clusters, you need to enable the Containers plan on the rele
5454
> [!NOTE]
5555
> If you disable this configuration, then the `Threat detection (control plane)` feature will be disabled. Learn more about [features availability](supported-machines-endpoint-solutions-clouds-containers.md).
5656
57-
- [Agentless discovery for Kubernetes](defender-for-containers-architecture.md#how-does-agentless-discovery-for-kubernetes-work) provides API-based discovery of your Kubernetes clusters. To enable the **Agentless discovery for Kubernetes** feature, toggle the setting to **On**.
57+
- [Agentless discovery for Kubernetes](defender-for-containers-architecture.md#how-does-agentless-discovery-for-kubernetes-in-aws-work) provides API-based discovery of your Kubernetes clusters. To enable the **Agentless discovery for Kubernetes** feature, toggle the setting to **On**.
5858
- The [Agentless Container Vulnerability Assessment](agentless-vulnerability-assessment-aws.md) provides vulnerability management for images stored in ECR and running images on your EKS clusters. To enable the **Agentless Container Vulnerability Assessment** feature, toggle the setting to **On**.
5959

6060
1. Select **Next: Review and generate**.

0 commit comments

Comments
 (0)