Skip to content

角色绑定验证

404tk edited this page May 6, 2026 · 1 revision

场景定位

role-binding-check授权环境内对身份做角色 / 策略绑定与解绑动作,用于验证防御平台对权限变更类信号的检测、告警与调查能力:

  • IAM 平台是否能识别并告警"身份获得新权限"
  • CSPM / CNAPP 能否在过度授权(如绑定 AdministratorAccess)发生时及时预警
  • 权限变更链路(请求人 / 时间 / 目标身份 / 目标角色 / 作用域)是否在审计中完整保留

⚠️ 责任使用:仅对自有 / Lab / 已显式授权的身份和角色执行;add / del 会真实改变云账号的权限边界,验证后请立即恢复初始绑定。

支持范围

全部 9 家通用:

厂商 实现
alibaba RAM 用户-策略绑定(AttachPolicyToUser / DetachPolicyFromUser
aws IAM AttachUserPolicy / DetachUserPolicy(managed policy ARN)
tencent CAM AttachUserPolicy / DetachUserPolicy(policyId)
azure ARM Microsoft.Authorization/roleAssignments
gcp Resource Manager project IAM bindings(getIamPolicy / setIamPolicy
huawei IAM 用户加入/退出 keystone group
volcengine IAM AttachUserPolicy / DetachUserPolicy
jdcloud IAM attachSubUserPolicy / detachSubUserPolicy
ucloud UMember AttachPoliciesToUser / DetachPoliciesFromUser

不同云的"角色 / 策略 / scope"语义略有差异:Azure 走 RBAC scope(/subscriptions/<sub>/resourceGroups/<rg>/...)、GCP 走 project ID、AWS / 阿里 / 腾讯 / 火山 / UCloud 走全局策略 ARN/ID、华为走 group 名(信任策略由 group 间接承载)。

metadata 语法

set metadata <action> [principal] [role] [scope]
  • actionlist / add / del
  • principal:身份名(IAM 用户名 / Azure objectId / GCP user:<email> 形式)
  • role:角色 / 策略名或 ARN(不同云不同)
  • scope:可选;默认走 provider 的"主 scope"(Azure 默认 subscription、GCP 默认 project)

示例:

set metadata list                                                 # 列默认 scope 下所有绑定
set metadata list ctk-bot                                         # 按 principal 过滤
set metadata add ctk-bot AdministratorAccess                      # AWS / 阿里 / 腾讯
set metadata add 11111111-2222-3333-4444-555555555555 Reader      # Azure 用 objectId + 内置角色
set metadata add user:demo@example.com roles/viewer projects/ctk-demo  # GCP 显式 scope
set metadata del ctk-bot AdministratorAccess

执行示例

ctk > aws > set payload role-binding-check
payload => role-binding-check
ctk > aws > set metadata add ctk-bot ReadOnlyAccess
metadata => add ctk-bot ReadOnlyAccess
ctk > aws > run

[!] About to run: role-binding-check (sensitive)
    Provider: aws
    Resource: ctk-bot
Proceed? [y/N]: y
[+] 12:00:00 attached arn:aws:iam::aws:policy/ReadOnlyAccess to user ctk-bot

add / del 都需要 y/N 确认(敏感动作)。list 是只读,不弹确认。

无人值守编排

ctk aws rolels  ctk-bot                                  -P lab-aws --json
ctk aws roleadd ctk-bot ReadOnlyAccess                   -P lab-aws -y
ctk aws roledel ctk-bot ReadOnlyAccess                   -P lab-aws -y

ctk azure roleadd 11111111-2222-3333-4444-000000000099 Reader \
    /subscriptions/<sub>/resourceGroups/lab -P lab-azure -y

ctk gcp roleadd user:demo@example.com roles/viewer projects/ctk-demo -P lab-gcp -y

预期遥测(供防御方对照)

各云控制面应记录"绑定 / 解绑动作 + 请求方身份 + 目标身份 + 目标角色 + scope + 时间 + 源 IP"完整链路:

  • AWS:CloudTrail AttachUserPolicy / DetachUserPolicy
  • 阿里:ActionTrail AttachPolicyToUser / DetachPolicyFromUser
  • 腾讯:CloudAudit AttachUserPolicy / DetachUserPolicy
  • Azure:Activity Log Microsoft.Authorization/roleAssignments/write|delete
  • GCP:Cloud Audit SetIamPolicy(含变更 diff)
  • 华为:CTS addUserToGroup / removeUserFromGroup
  • 火山:Audit AttachUserPolicy / DetachUserPolicy
  • 京东:actionTrail 对应事件
  • UCloud:UAct 对应事件

平台若无法识别"高危角色"绑定(如 AdministratorAccess / Owner / roles/owner)的告警,或缺少 scope / requesting principal 字段,都属于可验证的检测覆盖缺口。

demo 回放

role-binding-checkdemo 回放模式下 9 家全部可跑通 list / add / del

Clone this wiki locally