本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
连接 Azure 资源
Azure 资源集成使 AWS DevOps 代理能够在事件调查期间发现和调查 Azure 订阅中的资源。该代理使用 Azure 资源图进行资源发现,可以访问 Azure 环境中的指标、日志和配置数据。
这种集成遵循两个步骤:在 AWS 帐户级别注册 Azure,然后将特定的 Azure 订阅与单个代理空间相关联。你可以在一个帐户中创建多个 Azure 资源注册,并在多个帐户中注册同一 AWS Azure 租户。如果您使用应用程序注册,则每次注册都必须使用不同的应用程序(客户端 ID)。有关更多信息,请参阅连接 Azure 。
先决条件
在连接 Azure 资源之前,请确保你有:
访问 AWS DevOps 代理控制台
可以访问目标订阅的 Azure 帐户
对于管理员同意方法:有权在 Microsoft Entra ID 中执行管理员同意的帐户
对于应用程序注册方法:具有配置联合身份凭据权限的 Entra 应用程序,并在您的 AWS 账户中启用了出站身份联合
通过管理员同意注册 Azure 资源
管理员同意方法在 AWS DevOps 代理托管应用程序中使用基于同意的流程。
第 1 步:开始注册
登录 AWS 管理控制台并导航到 AWS DevOps 代理控制台
转到能力提供者页面
找到 Azure 云部分并选择注册
选择 “管理员同意” 注册方法
第 2 步:完成管理员同意
查看所申请的权限
选择继续 — 您将被重定向到 Microsoft Entra 管理员同意页面
使用有权执行管理员同意的用户主账户登录
审查 AWS DevOps 代理人申请并授予同意
第 3 步:完成用户授权
获得管理员同意后,系统会提示您进行用户授权,以验证您作为授权租户成员的身份
使用属于同一 Azure 租户的帐户登录
授权后,您将被重定向回 AWS DevOps 代理控制台,状态为成功
第 4 步:分配角色
请参阅下面的分配 Azure 角色。选择成员时搜索AWS DevOps 代理。
通过应用程序注册注册 Azure 资源
应用程序注册方法使用您自己的 Entra 应用程序和联合身份凭证。
第 1 步:开始注册
在 AWS DevOps 代理控制台中,转到能力提供者页面
找到 Azure 云部分并选择注册
选择应用程序注册方法
第 2 步:创建和配置您的 Entra 应用程序
按照控制台中显示的说明执行以下操作:
在您的 AWS 账户中启用出站身份联合(在 IAM 控制台中,转到账户设置 → 出站身份联合)
使用你的 Microsoft Entra ID 创建 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 Role-Based 访问控制 (RBAC)(推荐)
如果尚未启用 Azure RBAC,则在集群上启用:Azure 门户 → AKS 集群 → 设置 → 安全配置 → 身份验证和授权 → 选择 Azure RBAC
分配只读角色:Azure 门户 → 订阅 → 选择订阅 → 访问控制 (IAM) → 添加角色分配 → 选择 Azure Kubernetes 服务 RBAC 阅读器 → 分配给应用程序
这涵盖了订阅中的所有 AKS 集群。
选项 B:Azure Active Directory (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 门户 → Entra ID → 企业应用程序 → 搜索应用程序名称(获取管理员同意的AWS DevOps 代理或你自己的 Entra 应用程序注册应用程序)。应用于每个集群:
az aks get-credentials --resource-group <rg> --name <cluster-name> kubectl apply -f devops-agent-reader.yaml
Least-privileged 自定义角色(可选)
为了更严格的访问控制,你可以创建仅限 AWS DevOps 代理使用的资源提供者的自定义 Azure 角色,而不是广泛的读者角色:
{ "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 云注册,请转到能力提供者页面并删除注册。必须首先移除所有代理空间关联。