SuperAPI AI 工具集

iam-identity-management

安全与审计

查看项目

更新于 10-15 08:17

技能介绍

用途

本技能面向在 OCI(Oracle Cloud Infrastructure)上管理身份与访问的工程师,帮助编写正确的 IAM 策略、排查权限错误、配置动态组并调试 IDCS 联合身份。

主要能力

策略编写与常见错误规避

技能强调生产环境中的安全实践:

  • 禁止使用过于宽泛的策略,例如 Allow any-user to manage all-resources in tenancy,应改为显式指定组、资源与隔间,并可结合条件限制,如 Allow group AppDevelopers to manage instance-family in compartment AppDev where target.instance.name =~ 'dev-*'。
  • 策略必须位于目标隔间或其上级(根租户),放在子隔间会导致静默失败。
  • 禁止在生产策略中使用 any-user,应使用显式组成员关系。
  • 禁止用用户主体语法授权实例,实例应使用动态组。
  • 禁止在动态组规则中硬编码资源 OCID,应使用隔间或标签匹配。

权限排查

  • 404 NotAuthorizedOrNotFound:OCI 故意模糊该错误,资源不存在或调用者缺少 inspect 权限均返回 404。排查路径包括确认资源是否存在、调用者是否具备 inspect、策略是否位于目标隔间或以上、动态组/实例主体是否匹配、跨隔间访问时策略位置是否正确。
  • 403 NotAuthorized:调用者已识别但缺少权限。常见原因包括动词错误、资源类型错误、条件不匹配、策略传播延迟(10–60 秒)。
  • 动词层级:inspect < read < use < manage。

策略语法要点

  • 资源类型族:instance-family(不含卷)、volume-family、object-family、database-family 等,需注意区分。
  • 条件子句(WHERE):支持基于标签、资源名称正则、请求属性以及组合条件(all/any)。
  • 位置语法:in compartment、in tenancy、in resource;没有内置的“隔间及所有后代”语法,需将策略放在父隔间。

动态组模式

  • 按隔间:ALL {instance.compartment.id = '<compartment-ocid>'}
  • 按标签:ANY {instance.freeform-tags.app = 'webserver'}
  • 限制性 AND 规则:ALL {instance.compartment.id = '<compartment-ocid>', instance.freeform-tags.environment = 'production'}
  • 测试动态组成员资格:使用 oci compute instance get、oci iam dynamic-group get 检查规则匹配,并在实例内运行 oci os ns get 验证实例主体。

认证方式

技能对比了 API Key、Instance Principal、Resource Principal、Session Token 的适用场景与关键约束。

IDCS 联合注意事项

  • OCI 组名必须与 IDCS 组名完全一致(区分大小写)。
  • 用户能登录控制台但看不到资源,通常缺少针对联合组的 OCI IAM 策略。
  • “Invalid credentials” 可能表示 OCI 租户设置中未配置 IDCS 联合。
  • 组成员关系不同步通常因 OCI 组名与 IDCS 组名不匹配。

隔间层级设计

建议按环境划分层级(Production、Development、SharedServices),而非扁平结构,以明确爆炸半径和成本报告。

使用方式

技能以知识文档形式提供,包含策略示例、排查流程图和命令行示例。当需要编写复杂策略、查询服务特定动词与权限列表、排查策略评估顺序或实施最小权限时,可加载 references/oci-iam-policies-reference.md 参考文件;快速语法示例、403/404 排查和动态组规则无需加载该文件。

适用场景

  • 编写或审查 OCI IAM 策略
  • 排查 403/404 权限错误
  • 配置动态组
  • 调试 IDCS 联合身份
  • 设计隔间层级

限制

本技能聚焦 OCI 特有的 IAM 与身份管理,不涉及其他云平台。具体服务动词和权限列表需参考附加参考文件。