你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

针对容器的攻击路径分析和增强的风险搜寻

攻击路径分析是基于图的算法,用于扫描云安全图。 扫描会暴露可攻击路径,这些路径可能会被攻击者用来侵入你的环境,以访问具有重大影响的资产。 攻击路径分析会公开攻击路径,并提供关于如何才能以最佳方式解决问题的建议。这些建议可破坏攻击路径,防止攻击者成功破坏环境。

通过根据风险级别、名称、环境和风险因素、入口点、目标、受影响的资源和活动建议对攻击路径进行排序,来探索和调查攻击路径。 浏览资源上的云安全图见解。 见解类型的示例包括:

  • 向 Internet 公开的 Pod
  • 特权容器
  • Pod 使用主机网络
  • 容器映像易受到远程代码执行的攻击

Azure:使用模拟的易受攻击容器映像来测试攻击路径和安全资源管理器

如果攻击路径列表中没有条目,仍可使用模拟容器映像测试此功能。 使用以下步骤设置该测试:

要求:测试范围内的 Azure 容器注册表 (ACR) 实例。

  1. 将模拟的易受攻击映像导入到 Azure 容器注册表:

    1. 首先,通过运行以下操作将基础映像(例如 alpine)拉取到本地环境:

      docker pull alpine
      
    2. 使用以下标签标记映像并将其推送到 ACR。 将 <MYACR> 替换为 Azure 容器注册表名称:

      docker tag alpine <MYACR>.azurecr.io/mdc-mock-0001
      docker push <MYACR>.azurecr.io/mdc-mock-0001
      
    3. 如果没有 AKS(Azure Kubernetes 服务)群集,请使用以下命令创建新的 AKS 群集:

      az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr $MYACR
      
    4. 如果 AKS 未附加到 ACR,请使用以下 Cloud Shell 命令行将 AKS 实例指向从选定 ACR 拉取映像:

      az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-name>
      
  2. 对 Cloud Shell 会话进行身份验证以使用群集:

    az aks get-credentials  --subscription <cluster-suid> --resource-group <your-rg> --name <your-cluster-name>    
    
  3. 安装 ngnix 入口控制器

    helm install ingress-controller oci://ghcr.io/nginxinc/charts/nginx-ingress --version 1.0.1
    
  4. 运行以下命令以部署模拟的易受攻击映像,从而向 Internet 公开易受攻击的容器:

    helm install dcspmcharts  oci://mcr.microsoft.com/mdc/stable/dcspmcharts --version 1.0.0 --namespace mdc-dcspm-demo --create-namespace --set image=<your-image-uri> --set distribution=AZURE
    
  5. 执行以下步骤验证是否成功:

    • 查找mdc-dcspm-demo作为命名空间的条目
    • 在“工作负载-> 部署”选项卡中,验证“pod1”和“pod2”是否已创建 3/3,以及“ingress-controller-nginx-ingress-controller”是否已创建 1/1。
    • 在服务和入口中,查找>服务“service1”和“ingress-controller-nginx-ingress-controller”。 在“入口”选项卡中,验证是否使用 IP 地址和 nginx 类创建了入口

注意

完成上述流程后,最多可能需要 24 小时才能在云安全资源管理器和攻击路径中查看结果。

完成攻击路径测试后,通过转到“攻击路径分析”来调查所创建的攻击路径,并搜索所创建的攻击路径。 有关详细信息,请参阅识别和修正攻击路径

AWS:使用模拟的易受攻击容器映像来测试攻击路径和安全资源管理器

  1. 创建名为“mdc-mock-0001”的 ECR 存储库

  2. 转到 AWS 帐户并选择“命令行或编程访问”

  3. 打开命令行并选择“选项 1: 设置 AWS 环境变量(短期凭据)”。 复制 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY 和 AWS_SESSION_TOKEN 环境变量的凭据。

  4. 运行以下命令以获取 Amazon ECR 注册表的身份验证令牌。 将 <REGION> 替换为你的注册表所在的区域。 将 <ACCOUNT> 替换为你的 AWS 帐户 ID。

    aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <ACCOUNT>.dkr.ecr.<REGION>.amazonaws.com
    
  5. 创建一个按名称标记为易受攻击的 Docker 映像。 该映像的名称中应包含字符串“mdc-mock-0001”。 创建映像后,请使用以下命令将其推送到 ECR 注册表(将 <ACCOUNT><REGION> 替换为你的 AWS 帐户 ID 和区域):

    docker pull alpine
    docker tag alpine <ACCOUNT>.dkr.ecr.<REGION>.amazonaws.com/mdc-mock-0001
    docker push <ACCOUNT>.dkr.ecr.<REGION>.amazonaws.com/mdc-mock-0001
    
  6. 连接到 EKS 群集并安装提供的 Helm 图表。 配置 kubectl 以使用 EKS 群集。 运行以下命令(将 <your-region><your-cluster-name> 替换为你的 EKS 群集区域和名称):

    aws eks --region <your-region> update-kubeconfig --name <your-cluster-name>
    
  7. 验证配置。 你可以通过运行以下命令来检查是否已正确配置 kubectl

    kubectl get nodes
    
  8. 安装 ngnix 入口控制器

    helm install ingress-controller oci://ghcr.io/nginxinc/charts/nginx-ingress --version 1.0.1
    
  9. 安装以下 Helm 图表:

    helm install dcspmcharts oci://mcr.microsoft.com/mdc/stable/dcspmcharts --version 1.0.0 --namespace mdc-dcspm-demo --create-namespace --set image=<ACCOUNT>.dkr.ecr.<REGION>.amazonaws.com/mdc-mock-0001 --set distribution=AWS
    

该 Helm 图表会将资源部署到你的群集上,该群集可用于推断攻击路径。 它还包括易受攻击的映像。

注意

完成上述流程后,最多可能需要 24 小时才能在云安全资源管理器和攻击路径中查看结果。

完成攻击路径测试后,通过转到“攻击路径分析”来调查所创建的攻击路径,并搜索所创建的攻击路径。 有关详细信息,请参阅识别和修正攻击路径

GCP:使用模拟的易受攻击容器映像来测试攻击路径和安全资源管理器

  1. 在 GCP 门户中,搜索“项目注册表”,然后创建名为“mdc-mock-0001”的 GCP 存储库

  2. 按照这些说明将映像推送到存储库。 运行以下 命令:

    docker pull alpine
    docker tag alpine <LOCATION>-docker.pkg.dev/<PROJECT_ID>/<REGISTRY>/<REPOSITORY>/mdc-mock-0001
    docker push <LOCATION>-docker.pkg.dev/<PROJECT_ID>/<REGISTRY>/<REPOSITORY>/mdc-mock-0001
    
  3. 转到 GCP 门户。 然后转到“Kubernetes 引擎”>“群集”。 选择连接按钮。

  4. 连接后,在 Cloud Shell 中运行该命令,或复制连接命令并在计算机上运行它:

    gcloud container clusters get-credentials contra-bugbash-gcp --zone us-central1-c --project onboardingc-demo-gcp-1
    
  5. 验证配置。 你可以通过运行以下命令来检查是否已正确配置 kubectl

    kubectl get nodes
    
  6. 若要安装 Helm 图表,请执行以下步骤:

    1. 在门户中的“项目注册表”下转到存储库,并在“按摘要拉取”下查找映像 URI。

    2. 使用以下命令安装 Helm 图表:

      helm install dcspmcharts oci:/mcr.microsoft.com/mdc/stable/dcspmcharts --version 1.0.0 --namespace mdc-dcspm-demo --create-namespace --set image=<IMAGE_URI> --set distribution=GCP
      

该 Helm 图表会将资源部署到你的群集上,该群集可用于推断攻击路径。 它还包括易受攻击的映像。

注意

完成上述流程后,最多可能需要 24 小时才能在云安全资源管理器和攻击路径中查看结果。

完成攻击路径测试后,通过转到“攻击路径分析”来调查所创建的攻击路径,并搜索所创建的攻击路径。 有关详细信息,请参阅识别和修正攻击路径

使用云安全资源管理器查找容器状况问题

可以通过以下方法之一生成查询:

在以下部分中,我们提供了你可以选择或创建的查询示例。

使用云安全资源管理器模版浏览风险

  1. 在 Defender for Cloud 概述页中,打开云安全资源管理器。

  2. 会显示一些适用于 Kubernetes 的现成模板。 选择其中一个模板:

    • 运行漏洞严重性为高的映像的 Azure Kubernetes Pod
    • Kubernetes 命名空间包含易受攻击的 Pod

    显示在哪里选择模版的屏幕截图。

  3. 选择“打开查询”;模板会在屏幕的上半部分生成查询。 选择“搜索”以查看结果。

    显示生成的查询以及在哪里选择搜索的屏幕截图。

使用云安全资源管理器创建自定义查询

用户还可以创建自己的自定义查询。 以下示例演示了如何搜索 Pod(运行易受远程代码执行攻击的容器映像)。

显示自定义查询的屏幕截图。

结果列在查询下方。

显示自定义查询中结果的屏幕截图。

后续步骤