权限策略是什么
权限策略是描述“谁可以对哪些资源做哪些操作”的 JSON 文档,由效果、动作、资源与条件四部分构成。云平台的鉴权引擎把它翻译成判定结果:显式拒绝优先于允许,没有匹配的允许即视为默认拒绝。绝大多数权限问题,根因都能在策略的这四要素里找到。
四个核心要素
| Effect | Allow 或 Deny;显式 Deny 优先于任何 Allow |
|---|---|
| Action | 服务名:操作名,支持前缀通配,如 ecs:Describe* |
| Resource | 资源标识(阿里云是 ARN 形式),可用通配符限定范围 |
| Condition | 附加约束:来源 IP、时间、是否使用 MFA、标签等 |
| 版本字段 | 阿里云用 Version 标识语法版本;腾讯云策略也有版本概念 |
| 生效范围 | 可绑定到子用户、用户组或角色,用户组便于批量继承 |
阿里云 RAM 策略片段
阿里云 RAM 策略片段
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": ["ecs:Describe*", "ecs:StartInstance", "ecs:StopInstance"],
"Resource": ["acs:ecs:cn-hangzhou:*:instance/i-bp1*"],
"Condition": {"IpAddress": {"acs:SourceIp": "203.0.113.0/24"}}
}
]
}写策略时的判断点
| 写法 | 结果 | 建议 |
|---|---|---|
| Action 用 ecs:* | 删除、变配等高危操作一并放行 | 按需列出动作,删除类操作单独评估 |
| Resource 写 * | 授权覆盖同账号全部资源 | 至少限定到地域与前缀,生产资源按实例 ID 收窄 |
| 只写 Allow 不写 Condition | 任何来源、任何时间都能调用 | 配合来源 IP 与 MFA 条件收窄高危动作 |
| Deny 与 Allow 并存 | Deny 生效,Allow 被覆盖 | 用 Deny 做兜底限制时先确认不误伤自动化调用 |
| 策略未校验直接绑定 | 语法错误的策略可能不生效且无明确报错 | 绑定前用平台的策略校验或模拟功能验证 |
常见策略设计做法
- 按职责分用户组:只读组、运维组、财务组各绑一份策略,人员入组即继承
- 高危动作加条件:删除类操作要求 MFA 或限定来源网段
- 按标签授权:腾讯云可按标签做资源范围的批量授权,适合按项目隔离
- 程序权限用角色:机器身份用角色拿到临时凭证,不共享长期密钥
Action 写通配符是权限收窄失效的主要原因:ecs:* 把删除与变配一起放行,事后审计只能看到“权限过大”,无法阻止已经发生的删除动作。给运维角色授权时,把删除、改规格、改安全组这三类动作单独列出来评估。
策略变更后不一定立即全局生效:部分场景需要重新登录或等待缓存刷新。排查“策略明明改了却仍被拒绝”时,先确认变更是否已生效,再检查是否存在其他身份叠加的 Deny 策略。