Skip to content

Commit 5d0334e

Browse files
author
duongau
committed
Merge branch 'master' of https://github.com/MicrosoftDocs/azure-docs-pr into afdupdates
2 parents 321335e + 96e93c3 commit 5d0334e

File tree

62 files changed

+190
-154
lines changed

Some content is hidden

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

62 files changed

+190
-154
lines changed

articles/aks/concepts-security.md

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,50 @@
22
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
services: container-service
5-
author: georgewallace
5+
author: miwithro
66
ms.topic: conceptual
7-
ms.date: 03/11/2021
8-
ms.author: gwallace
7+
ms.date: 11/11/2021
8+
ms.author: miwithro
99
---
1010

1111
# Security concepts for applications and clusters in Azure Kubernetes Service (AKS)
1212

13-
Cluster security protects your customer data as you run application workloads in Azure Kubernetes Service (AKS).
13+
Container security protects the entire end-to-end pipeline from build to the application workloads running in Azure Kubernetes Service (AKS).
1414

15-
Kubernetes includes security components, such as *network policies* and *Secrets*. Meanwhile, Azure includes components like network security groups and orchestrated cluster upgrades. AKS combines these security components to:
15+
The Secure Supply Chain includes the build environment and registry.
16+
17+
Kubernetes includes security components, such as *pod security standards* and *Secrets*. Meanwhile, Azure includes components like Active Directory, Microsoft Defender for Cloud, Azure Policy, Azure Key Vault, network security groups and orchestrated cluster upgrades. AKS combines these security components to:
18+
* Provide a complete Authentication and Authorization story.
19+
* Leverage AKS Built-in Azure Policy to secure your applications.
20+
* End-to-End insight from build through your application with Microsoft Defender for Containers.
1621
* Keep your AKS cluster running the latest OS security updates and Kubernetes releases.
1722
* Provide secure pod traffic and access to sensitive credentials.
1823

1924
This article introduces the core concepts that secure your applications in AKS:
2025

2126
- [Security concepts for applications and clusters in Azure Kubernetes Service (AKS)](#security-concepts-for-applications-and-clusters-in-azure-kubernetes-service-aks)
22-
- [Master security](#master-security)
27+
- [Build security](#build-security)
28+
- [Registry security](#registry-security)
29+
- [Cluster security](#cluster-security)
2330
- [Node security](#node-security)
2431
- [Compute isolation](#compute-isolation)
2532
- [Cluster upgrades](#cluster-upgrades)
2633
- [Cordon and drain](#cordon-and-drain)
2734
- [Network security](#network-security)
2835
- [Azure network security groups](#azure-network-security-groups)
36+
- [Application Security](#application-security)
2937
- [Kubernetes Secrets](#kubernetes-secrets)
3038
- [Next steps](#next-steps)
3139

32-
## Master security
40+
## Build Security
41+
42+
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 off a build because it has a high 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.
43+
44+
## Registry Security
45+
46+
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.
47+
48+
## Cluster security
3349

3450
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.
3551

@@ -112,6 +128,11 @@ If you provide your own subnet for your AKS cluster (whether using Azure CNI or
112128

113129
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.
114130

131+
## Application Security
132+
133+
To protect pods running on AKS leverage [Azure Defender for Kubernetes][azure-defender-for-kubernetes] 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.
134+
135+
115136
## Kubernetes Secrets
116137

117138
With a Kubernetes *Secret*, you inject sensitive data into pods, such as access credentials or keys.
@@ -150,6 +171,7 @@ For more information on core Kubernetes and AKS concepts, see:
150171
[encryption-atrest]: ../security/fundamentals/encryption-atrest.md
151172

152173
<!-- LINKS - Internal -->
174+
[azure-defender-for-kubernetes]: ../defender-for-cloud/container-security.md
153175
[aks-daemonsets]: concepts-clusters-workloads.md#daemonsets
154176
[aks-upgrade-cluster]: upgrade-cluster.md
155177
[aks-aad]: ./managed-aad.md

articles/azure-arc/data/create-data-controller-direct-cli.md

Lines changed: 43 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ ms.reviewer: mikeray
77
services: azure-arc
88
ms.service: azure-arc
99
ms.subservice: azure-arc-data
10-
ms.date: 11/03/2021
10+
ms.date: 11/12/2021
1111
ms.topic: overview
1212
---
1313

@@ -29,7 +29,7 @@ Creating an Azure Arc data controller in **direct** connectivity mode involves t
2929
> [!NOTE]
3030
> Currently, this step can only be performed from the portal. For details, see [Release notes](release-notes.md).
3131
32-
## Create an Azure Arc-enabled data services extension
32+
## Step 1: Create an Azure Arc-enabled data services extension
3333

3434
Use the k8s-extension CLI to create a data services extension.
3535

@@ -40,11 +40,15 @@ Set the following environment variables, which will be then used in next step.
4040
#### Linux
4141

4242
``` terminal
43-
# where you want the connected cluster resource to be created in Azure
43+
## variables for Azure location, extension and namespace
4444
export subscription=<Your subscription ID>
4545
export resourceGroup=<Your resource group>
46-
export resourceName=<name of your connected kubernetes cluster>
46+
export clusterName=<name of your connected kubernetes cluster>
4747
export location=<Azure location>
48+
export adsExtensionName="ads-ext"
49+
export namespace="arcds"
50+
51+
## variables for Metrics and Monitoring dashboard credentials
4852
export AZDATA_LOGSUI_USERNAME=<username for Kibana dashboard>
4953
export AZDATA_LOGSUI_PASSWORD=<password for Kibana dashboard>
5054
export AZDATA_METRICSUI_USERNAME=<username for Grafana dashboard>
@@ -53,11 +57,15 @@ export AZDATA_METRICSUI_PASSWORD=<password for Grafana dashboard>
5357

5458
#### Windows PowerShell
5559
``` PowerShell
56-
# where you want the connected cluster resource to be created in Azure
60+
## variables for Azure location, extension and namespace
5761
$ENV:subscription="<Your subscription ID>"
5862
$ENV:resourceGroup="<Your resource group>"
59-
$ENV:resourceName="<name of your connected kubernetes cluster>"
63+
$ENV:clusterName="<name of your connected kubernetes cluster>"
6064
$ENV:location="<Azure location>"
65+
$ENV:adsExtensionName="<name of Data controller extension"
66+
$ENV:namespace="namespace where extension and data controller will be deployed"
67+
68+
## variables for Metrics and Monitoring dashboard credentials
6169
$ENV:AZDATA_LOGSUI_USERNAME="<username for Kibana dashboard>"
6270
$ENV:AZDATA_LOGSUI_PASSWORD="<password for Kibana dashboard>"
6371
$ENV:AZDATA_METRICSUI_USERNAME="<username for Grafana dashboard>"
@@ -69,63 +77,62 @@ $ENV:AZDATA_METRICSUI_PASSWORD="<password for Grafana dashboard>"
6977
#### Linux
7078

7179
```bash
72-
az k8s-extension create -c ${resourceName} -g ${resourceGroup} --name ${ADSExtensionName} --cluster-type connectedClusters --extension-type microsoft.arcdataservices --auto-upgrade false --scope cluster --release-namespace arc --config Microsoft.CustomLocation.ServiceAccount=sa-bootstrapper
80+
az k8s-extension create --cluster-name ${clusterName} --resource-group ${resourceGroup} --name ${adsExtensionName} --cluster-type connectedClusters --extension-type microsoft.arcdataservices --auto-upgrade false --scope cluster --release-namespace ${namespace} --config Microsoft.CustomLocation.ServiceAccount=sa-arc-bootstrapper
7381

74-
az k8s-extension show -g ${resourceGroup} -c ${resourceName} --name ${ADSExtensionName} --cluster-type connectedclusters
82+
az k8s-extension show --resource-group ${resourceGroup} --cluster-name ${resourceName} --name ${adsExtensionName} --cluster-type connectedclusters
7583
```
7684

7785
#### Windows PowerShell
7886
```PowerShell
79-
$ENV:ADSExtensionName="ads-extension"
8087
81-
az k8s-extension create -c "$ENV:resourceName" -g "$ENV:resourceGroup" --name "$ENV:ADSExtensionName" --cluster-type connectedClusters --extension-type microsoft.arcdataservices --auto-upgrade false --scope cluster --release-namespace arc --config Microsoft.CustomLocation.ServiceAccount=sa-bootstrapper
88+
az k8s-extension create --cluster-name $ENV:clusterName --resource-group $ENV:resourceGroup --name $ENV:adsExtensionName --cluster-type connectedClusters --extension-type microsoft.arcdataservices --auto-upgrade false --scope cluster --release-namespace $ENV:namespace --config Microsoft.CustomLocation.ServiceAccount=sa-arc-bootstrapper
8289
83-
az k8s-extension show -g "$ENV:resourceGroup" -c "$ENV:resourceName" --name "$ENV:ADSExtensionName" --cluster-type connectedclusters
90+
az k8s-extension show --resource-group $ENV:resourceGroup --cluster-name $ENV:clusterName --name $ENV:adsExtensionName --cluster-type connectedclusters
8491
```
8592

8693
#### Deploy Azure Arc data services extension using private container registry and credentials
8794

8895
Use the below command if you are deploying from your private repository:
8996

9097
```azurecli
91-
az k8s-extension create -c "<connected cluster name>" -g "<resource group>" --name "<extension name>" --cluster-type connectedClusters --extension-type microsoft.arcdataservices --scope cluster --release-namespace "<namespace>" --config Microsoft.CustomLocation.ServiceAccount=sa-bootstrapper --config imageCredentials.registry=<registry info> --config imageCredentials.username=<username> --config systemDefaultValues.image=<registry/repo/arc-bootstrapper:<imagetag>> --config-protected imageCredentials.password=$ENV:DOCKER_PASSWORD --debug
98+
az k8s-extension create --cluster-name "<connected cluster name>" --resource-group "<resource group>" --name "<extension name>" --cluster-type connectedClusters --extension-type microsoft.arcdataservices --scope cluster --release-namespace "<namespace>" --config Microsoft.CustomLocation.ServiceAccount=sa-arc-bootstrapper --config imageCredentials.registry=<registry info> --config imageCredentials.username=<username> --config systemDefaultValues.image=<registry/repo/arc-bootstrapper:<imagetag>> --config-protected imageCredentials.password=$ENV:DOCKER_PASSWORD --debug
9299
```
93100

94101
For example
95102
```azurecli
96-
az k8s-extension create -c "my-connected-cluster" -g "my-resource-group" --name "arc-data-services" --cluster-type connectedClusters --extension-type microsoft.arcdataservices --scope cluster --release-namespace "arc" --config Microsoft.CustomLocation.ServiceAccount=sa-bootstrapper --config imageCredentials.registry=mcr.microsoft.com --config imageCredentials.username=arcuser --config systemDefaultValues.image=mcr.microsoft.com/arcdata/arc-bootstrapper:latest --config-protected imageCredentials.password=$ENV:DOCKER_PASSWORD --debug
103+
az k8s-extension create --cluster-name "my-connected-cluster" --resource-group "my-resource-group" --name "arc-data-services" --cluster-type connectedClusters --extension-type microsoft.arcdataservices --scope cluster --release-namespace "arc" --config Microsoft.CustomLocation.ServiceAccount=sa-bootstrapper --config imageCredentials.registry=mcr.microsoft.com --config imageCredentials.username=arcuser --config systemDefaultValues.image=mcr.microsoft.com/arcdata/arc-bootstrapper:latest --config-protected imageCredentials.password=$ENV:DOCKER_PASSWORD --debug
97104
```
98105

99106

100107
> [!NOTE]
101-
> The Arc data services extension install can take a couple of minutes to finish.
108+
> The Arc data services extension install can take a few minutes to complete.
102109
103110
### Verify the Arc data services extension is created
104111

105-
You can verify if the Azure Arc-enabled data services extension is created either from the portal or by connecting directly to the Azure Arc-enabled Kubernetes cluster.
112+
You can verify the status of the deployment of Azure Arc-enabled data services extension either from the portal or by connecting directly to the Azure Arc-enabled Kubernetes cluster.
106113

107-
#### Azure portal
114+
#### Check status from Azure portal
108115
1. Log in to the Azure portal and browse to the resource group where the Kubernetes connected cluster resource is located.
109116
1. Select the Azure Arc-enabled kubernetes cluster (Type = "Kubernetes - Azure Arc") where the extension was deployed.
110117
1. In the navigation on the left side, under **Settings**, select **Extensions**.
111118
1. You should see the extension that was created earlier in an installed state.
112119

113120
:::image type="content" source="media/deploy-data-controller-direct-mode-prerequisites/dc-extensions-dashboard.png" alt-text="Extensions dashboard":::
114121

115-
#### kubectl CLI
122+
#### Check status using kubectl CLI
116123

117124
1. Connect to your Kubernetes cluster via a Terminal window.
118125
1. Run the below command and ensure the (1) namespace mentioned above is created and (2) the `bootstrapper` pod is in 'running' state before proceeding to the next step.
119126

120127
``` console
121-
kubectl get pods -n <name of namespace used in the json template file above>
128+
kubectl get pods --name <name of namespace used in the json template file above>
122129
```
123130

124131
For example, the following example gets the pods from `arc` namespace.
125132

126133
```console
127134
#Example:
128-
kubectl get pods -n arc
135+
kubectl get pods --name arc
129136
```
130137

131138
## Retrieve the managed identity and grant roles
@@ -150,7 +157,7 @@ az role assignment create --assignee $Env:MSI_OBJECT_ID --role "Monitoring Metri
150157
151158
```
152159

153-
## Create a custom location using custom location CLI extension
160+
## Step 2: Create a custom location using ```customlocation``` CLI extension
154161

155162
A custom location is an Azure resource that is equivalent to a namespace in a Kubernetes cluster. Custom locations are used as a target to deploy resources to or from Azure. Learn more about custom locations in the [Custom locations on top of Azure Arc-enabled Kubernetes documentation](../kubernetes/conceptual-custom-locations.md).
156163

@@ -160,24 +167,22 @@ A custom location is an Azure resource that is equivalent to a namespace in a Ku
160167

161168
```bash
162169
export clName=mycustomlocation
163-
export clNamespace=arc
164-
export hostClusterId=$(az connectedk8s show -g ${resourceGroup} -n ${resourceName} --query id -o tsv)
165-
export extensionId=$(az k8s-extension show -g ${resourceGroup} -c ${resourceName} --cluster-type connectedClusters --name ${ADSExtensionName} --query id -o tsv)
166170

167-
az customlocation create -g ${resourceGroup} -n ${clName} --namespace ${clNamespace} \
168-
--host-resource-id ${hostClusterId} \
169-
--cluster-extension-ids ${extensionId} --location eastus
171+
export hostClusterId=$(az connectedk8s show --resource-group ${resourceGroup} --name ${clusterName} --query id -o tsv)
172+
export extensionId=$(az k8s-extension show --resource-group ${resourceGroup} --cluster-name ${clusterName} --cluster-type connectedClusters --name ${adsExtensionName} --query id -o tsv)
173+
174+
az customlocation create --resource-group ${resourceGroup} --name ${clName} --namespace ${namespace} --host-resource-id ${hostClusterId} --cluster-extension-ids ${extensionId} --location ${location}
170175
```
171176

172177
#### Windows PowerShell
173178
```PowerShell
174179
$ENV:clName="mycustomlocation"
175-
$ENV:clNamespace="arc"
176180
177-
$ENV:hostClusterId=(az connectedk8s show -g $ENV:resourceGroup -n $ENV:resourceName --query id -o tsv)
178-
$ENV:extensionId=(az k8s-extension show -g $ENV:resourceGroup -c $ENV:resourceName --cluster-type connectedClusters --name $ENV:ADSExtensionName --query id -o tsv)
179181
180-
az customlocation create -g $ENV:resourceGroup -n $ENV:clName --namespace $ENV:clNamespace --host-resource-id $ENV:hostClusterId --cluster-extension-ids $ENV:extensionId
182+
$ENV:hostClusterId=(az connectedk8s show --resource-group $ENV:resourceGroup --name $ENV:clusterName --query id -o tsv)
183+
$ENV:extensionId=(az k8s-extension show --resource-group $ENV:resourceGroup --cluster-name $ENV:clusterName --cluster-type connectedClusters --name $ENV:adsExtensionName --query id -o tsv)
184+
185+
az customlocation create --resource-group $ENV:resourceGroup --name $ENV:clName --namespace $ENV:namespace --host-resource-id $ENV:hostClusterId --cluster-extension-ids $ENV:extensionId
181186
```
182187

183188
## Validate the custom location is created
@@ -188,31 +193,30 @@ From the terminal, run the below command to list the custom locations, and valid
188193
az customlocation list -o table
189194
```
190195

191-
## Create the Azure Arc data controller
196+
## Step 3: Create the Azure Arc data controller
192197

193198
After the extension and custom location are created, proceed to deploy the Azure Arc data controller as follows.
194199

195200
```
196-
az arcdata dc create --name <name> --resource-group <resourcegroup> --location <location> --connectivity-mode direct --profile-name <profile name> --auto-upload-logs true --custom-location <name of custom location>
201+
az arcdata dc create --name <name> --resource-group <resourcegroup> --location <location> --connectivity-mode direct --profile-name <profile name> --auto-upload-logs true --auto-upload-metrics true --custom-location <name of custom location>
197202
# Example
198-
az arcdata dc create -n arc-dc1 --resource-group my-resource-group --location eastasia --connectivity-mode direct --profile-name azure-arc-aks-premium-storage --auto-upload-logs true --custom-location mycustomlocation
203+
az arcdata dc create --name arc-dc1 --resource-group my-resource-group --location eastasia --connectivity-mode direct --profile-name azure-arc-aks-premium-storage --auto-upload-logs true --auto-upload-metrics true --custom-location mycustomlocation
199204
```
200205

201206
If you want to create the Azure Arc data controller using a custom configuration template, follow the steps described in [Create custom configuration profile](create-custom-configuration-template.md) and provide the path to the file as follows:
202207

203208
```
204-
az arcdata dc create --name <name> --resource-group <resourcegroup> --location <location> --connectivity-mode direct --path ./azure-arc-custom --auto-upload-logs true --custom-location <name of custom location>
209+
az arcdata dc create --name <name> --resource-group <resourcegroup> --location <location> --connectivity-mode direct --path ./azure-arc-custom --auto-upload-logs true --auto-upload-metrics true --custom-location <name of custom location>
205210
# Example
206-
az arcdata dc create --name arc-dc1 --resource-group my-resource-group --location eastasia --connectivity-mode direct --path ./azure-arc-custom --auto-upload-logs true --custom-location mycustomlocation
211+
az arcdata dc create --name arc-dc1 --resource-group my-resource-group --location eastasia --connectivity-mode direct --path ./azure-arc-custom --auto-upload-logs true --auto-upload-metrics true --custom-location mycustomlocation
207212
```
208213

214+
## Monitor the status of Azure Arc data controller deployment
209215

210-
## Monitor the creation
211-
212-
When the Azure portal deployment status shows the deployment was successful, you can check the status of the Arc data controller deployment on the cluster as follows:
216+
The deployment status of the Arc data controller on the cluster can be monitored as follows:
213217

214218
```console
215-
kubectl get datacontrollers -n arc
219+
kubectl get datacontrollers --name arc
216220
```
217221

218222
## Next steps

0 commit comments

Comments
 (0)