知识卡片

API最小化就是最小特权

普通读书笔记卡 · 1450

内容

最小特权在API设计层面的体现,是让每个管理类API端点只做一件定义明确的小事,而不是开放POSIX API这样”啥都能干”的大接口。大接口的问题不在于”可能被滥用”,而在于天然无法被精细授权——要么给出整个接口权限,要么完全不给。把大接口拆成”装软件包”“改配置”“重启进程”等独立小端点后,才能对每个端点单独设置谁能调用、何时调用、要不要审批,授权粒度随API粒度天然获得,而非额外加出来的。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第5章《最小特权设计》5.3.1节(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_049.html`) - 结论依据:原文将UNIX"让每个程序只做好一件事"的哲学延伸为"让每个API端做好一件事",并以POSIX API这样开放式大接口在交互式会话中难以约束和审计为反例,说明按明确原语拆分API是授权可控的前提。 - 原始内容:让每个程序只做好一件事……为了让这句话适应当前的计算环境,有人会说:"让每个API端做好一件事。"构建一个考虑了安全性和可靠性的系统时,应避免开放式的交互界面,取而代之的是围绕着API功能最小化进行设计。