本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
连接 Azure 资源
Azure 资源集成使 AWS DevOps 代理能够在事件调查期间发现和调查 Azure 订阅中的资源。代理使用 Azure 资源图进行资源发现,并且可以访问 Azure 环境中的指标、日志和配置数据。
此集成遵循两个步骤的过程:在 AWS 帐户级别注册 Azure,然后将特定的 Azure 订阅与各个代理空间相关联。
先决条件
在连接 Azure 资源之前,请确保你有:
访问 AWS DevOps 代理控制台
有权访问目标订阅的 Azure 帐户
对于管理员同意方法:有权在 Microsoft Entra ID 中进行管理员同意的帐户
对于应用程序注册方法:具有配置联合身份凭证权限的 Entra 应用程序,并在您的 AWS 账户中启用了出站联合身份验证
通过管理员同意注册 Azure 资源
管理员同意方法在 AWS DevOps 代理托管的应用程序中使用基于同意的流程。
第 1 步:开始注册
登录 AWS 管理控制台并导航到 AWS DevOps 代理控制台
转到能力提供者页面
找到 “A zure 云” 部分,然后单击 “注册”
选择管理员同意注册方法
第 2 步:完成管理员同意
查看正在申请的权限
点击继续 — 您将被重定向到 Microsoft Entra 管理员同意页面
使用有权执行管理员同意的用户主账号登录
审查 AWS DevOps 代理申请并授予同意
步骤 3:完成用户授权
管理员同意后,系统会提示您进行用户授权,以验证您作为授权租户成员的身份
使用属于同一 Azure 租户的帐户登录
授权后,您将重定向回 AWS DevOps 代理控制台,状态为成功
步骤 4:分配角色
请参阅下面的分配 Azure 角色。选择成员时搜索AWS DevOps 代理。
通过应用程序注册注册 Azure 资源
应用程序注册方法使用您自己的 Entra 应用程序和联合身份凭证。
第 1 步:开始注册
在 AWS DevOps 代理控制台中,转到功能提供者页面
找到 “A zure 云” 部分,然后单击 “注册”
选择应用程序注册方法
第 2 步:创建和配置您的 Entra 应用程序
按照控制台中显示的说明执行以下操作:
在您的 AWS 账户中启用出站身份联合(在 IAM 控制台中,前往账户设置 → 出站联合身份验证)
在你的 Microsoft Entra ID 中创建 Entra 应用程序,或者使用现有的 Entra 应用程序
在应用程序上配置联合身份凭证
第 3 步:提供注册详情
在注册表中填写以下内容:
租户 ID — 你的 Azure 租户标识符
租户名称-租户的显示名称
客户端 ID — 您创建的 Entra 应用程序的应用程序(客户端)ID
受众-联邦凭证的受众标识符
步骤 4:创建 IAM 角色
当您通过控制台提交注册时,将自动创建 IAM 角色。它允许 AWS DevOps 代理使用凭据并调用sts:GetWebIdentityToken。
步骤 5:分配角色
请参阅下面的分配 Azure 角色。搜索您在选择成员时创建的 Entra 应用程序。
第 6 步:完成注册
在 AWS DevOps 代理控制台中确认配置
单击 “提交” 完成注册
分配 Azure 角色
注册后,授予应用程序对你的 Azure 订阅的读取权限。管理员同意和应用程序注册方法的此步骤相同。
在 Azure 门户中,导航到你的目标订阅
前往访问控制 (IAM)
单击 “添加” > “添加角色分配”
选择读者角色并单击 “下一步”
单击 “选择成员”,搜索应用程序(要么是获得管理员同意的AWS DevOps 代理,要么是您自己的 Entra 应用程序进行应用程序注册)
选择应用程序,然后单击 “查看 + 分配”
(可选)要使代理能够访问 Azure Kubernetes 服务 (AKS) 集群,请完成以下 AKS 访问权限设置。
AKS 访问设置(可选)
步骤 1:Azure 资源管理器 (ARM) 级别访问权限
为应用程序分配 Azure Kubernetes 服务集群用户角色。
在 Azure 门户中,前往 “订阅” → “选择订阅” → “访问控制 (IAM)” → “添加角色分配” → 选择 Azure Kubernetes 服务集群用户角色 → 分配给应用程序(要么是获得管理员同意的AWS DevOps 代理,要么是你自己的 Entra 应用程序进行应用程序注册)。
这涵盖了订阅中的所有 AKS 集群。要将范围限定到特定群集,请改为在资源组或单个群集级别进行分配。
第 2 步:访问 Kubernetes API
根据集群的身份验证配置选择一个选项:
选项 A:适用于 Kubernetes 的 Azure 基于角色的访问控制 (RBAC)(推荐)
如果尚未启用,请在集群上启用 Azure RBAC:Azure 门户 → AKS 集群 → 设置 → 安全配置 → 身份验证和授权 → 选择 Azure RBAC
分配只读角色:Azure 门户 → 订阅 → 选择订阅 → 访问控制 (IAM) → 添加角色分配 → 选择 Azure Kubernetes 服务 RBAC 阅读器 → 分配给应用程序
这涵盖了订阅中的所有 AKS 集群。
选项 B:Azure 活动目录 (Azure AD) + Kubernetes RBAC
如果你的集群已经使用默认的 Azure AD 身份验证配置,并且你不想启用 Azure RBAC,则使用此选项。这需要按集群进行kubectl设置。
将以下清单另存为
devops-agent-reader.yaml:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: devops-agent-reader rules: - apiGroups: [""] resources: ["namespaces", "pods", "pods/log", "services", "events", "nodes"] verbs: ["get", "list"] - apiGroups: ["apps"] resources: ["deployments", "replicasets", "statefulsets", "daemonsets"] verbs: ["get", "list"] - apiGroups: ["metrics.k8s.io"] resources: ["pods", "nodes"] verbs: ["get", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: devops-agent-reader-binding subjects: - kind: User name: "<SERVICE_PRINCIPAL_OBJECT_ID>" apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: devops-agent-reader apiGroup: rbac.authorization.k8s.io
<SERVICE_PRINCIPAL_OBJECT_ID>替换为服务主体的对象 ID。要找到它,请执行以下操作:Azure Portal → Entra ID → 企业应用程序 → 搜索应用程序名称(要么是获得管理员同意的AWS DevOps 代理,要么是你自己的 Entra 应用程序进行应用程序注册)。适用于每个集群:
az aks get-credentials --resource-group <rg> --name <cluster-name> kubectl apply -f devops-agent-reader.yaml
权限最低的自定义角色(可选)
为了实现更严格的访问控制,你可以创建一个自定义 Azure 角色,该角色的范围仅限于 A AWS DevOps gent 使用的资源提供者,而不是广泛的读者角色:
{ "Name": "AWS DevOps Agent - Azure Reader", "Description": "Least-privilege read-only access for AWS DevOps Agent incident investigations.", "Actions": [ "Microsoft.AlertsManagement/*/read", "Microsoft.Compute/*/read", "Microsoft.ContainerRegistry/*/read", "Microsoft.ContainerService/*/read", "Microsoft.ContainerService/managedClusters/commandResults/read", "Microsoft.DocumentDB/*/read", "Microsoft.Insights/*/read", "Microsoft.KeyVault/vaults/read", "Microsoft.ManagedIdentity/*/read", "Microsoft.Monitor/*/read", "Microsoft.Network/*/read", "Microsoft.OperationalInsights/*/read", "Microsoft.ResourceGraph/resources/read", "Microsoft.ResourceHealth/*/read", "Microsoft.Resources/*/read", "Microsoft.Sql/*/read", "Microsoft.Storage/*/read", "Microsoft.Web/*/read" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/{your-subscription-id}" ] }
将订阅与代理空间关联
在帐户级别注册 Azure 后,将特定订阅与您的代理空间相关联:
在 AWS DevOps 代理控制台中,选择您的代理空间
前往 “功能” 选项卡
在 “次要来源” 部分中,单击 “添加”
选择 Azure
为要关联的 Azure 订阅提供订阅 ID
单击 “添加” 完成关联
你可以将多个订阅与同一个代理空间相关联,让代理在你的 Azure 环境中可见。
管理 Azure 资源连接
查看已连接的订阅-在 “功能” 选项卡中,“次要来源” 部分列出了所有连接的 Azure 订阅。
删除订阅-要断开订阅与代理空间的连接,请在 “辅助来源” 列表中选择该订阅并单击 “删除”。这不会影响账户级别的注册。
移除注册-要完全删除 Azure Cloud 注册,请转到功能提供者页面并删除注册。必须先移除所有代理空间关联。