後端工程有個很不浪漫的事實:真正的大魔王通常不是效能,也不是資料庫,而是 3A:
* AuthN(認證):你是誰
* AuthZ(授權):你能做什麼
* Auditing(審計):你做了什麼、何時做的、能不能追溯
只要這三個沒搞清楚,你的服務很容易就變成在網路上裸奔。
## 為什麼「只靠 API Key」很常翻車
很多 API 為了方便,直接用一組 API key 當門票。
它的問題不是不好用,而是它的安全語義太弱:
1. 它通常代表的是「某個程式/某個 client」
你知道是某個 app 在呼叫,但你不知道背後是誰在操作。
2. 它是靜態憑證
外流一次就很麻煩:
* 很難追到是誰拿走的
* 很難做到細粒度撤銷
* 也很難做行為歸因
3. 把權限切到每個使用者的 key