-
Notifications
You must be signed in to change notification settings - Fork 12
角色绑定验证
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 间接承载)。
set metadata <action> [principal] [role] [scope]
-
action:list/add/del -
principal:身份名(IAM 用户名 / Azure objectId / GCPuser:<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 字段,都属于可验证的检测覆盖缺口。
role-binding-check 在 demo 回放模式下 9 家全部可跑通 list / add / del。