03
權限範圍:Team API Key 不等於單一應用程式隔離
Team API Key 按 App Store Connect 角色授權,但覆蓋該團隊的應用程式;Individual API Key 則繼承關聯使用者的應用程式存取範圍與權限。這是兩者在企業治理上的核心差異,而不是單純的便利性比較。
Apple 的角色權限說明應作為角色審批依據;應用程式存取範圍則應對照 Apple 的 App 存取控制文件。降低 Team API Key 的角色,只能降低可執行的操作,不代表它因此被限制到某一個應用程式。
因此,以下結論不能成立:
- 把 Team API Key 命名為
app-a-release,不會產生伺服器端的 App A 隔離。
- 把不同密鑰放進不同 CI 變數群組,不等於洩漏後的權限影響範圍已縮小。
- 把同一個團隊密鑰交給多條流水線,會令所有使用它的應用程式共同承受洩漏風險。
如果團隊只有一個應用程式,且發布任務和其他 App Store Connect 操作已經分離,Team API Key 可以是合理的生產選擇。若同一 Apple 團隊包含多個產品線,則應按任務拆分密鑰與流水線;當真正需要強應用程式隔離、又無法透過現有 API 權限達成時,才評估拆分 Apple 團隊邊界。
Team API Key 與 Individual API Key 的實際差異
| 評估指標 |
Team API Key |
Individual API Key |
| 權限來源 |
由團隊為密鑰指定角色 |
繼承關聯使用者的 App 存取與權限 |
| 應用程式範圍 |
團隊層級,不能僅靠命名變成單一 App |
可隨使用者的 App 存取範圍收斂 |
| 人員依賴 |
不綁定單一員工,較適合生產基礎設施 |
綁定使用者,適合責任明確的有限自動化 |
| Provisioning |
可作為相關自動化的候選,但仍須核對角色與端點 |
不適合作為此類長期自動化憑證 |
notarytool |
需依 Apple 官方流程核對 |
不可把 Individual API Key 當作替代方案 |
| 洩漏後影響 |
取決於團隊角色,可能跨多個應用程式 |
取決於該使用者的 App 存取與角色 |
| 離職或停權影響 |
不依附單一員工,但仍須建立專人治理 |
使用者狀態變更可能直接影響流水線 |
企業 CI 應該使用 Team API Key 還是 Individual API Key
決策不應是「永遠選 Team」或「永遠選 Individual」,而應依照下列條件分支:
- 若工作是正式發布、TestFlight 分發、Provisioning 或共用 CI 基礎設施,則選按任務拆分的 Team API Key,並把角色降到任務所需的最低程度。
- 若工作只代表某位使用者執行有限的 App Store Connect 自動化,且不涉及 Provisioning 或
notarytool,則可選Individual API Key。
- 若工具只支援 Apple Account 登入、或尚未確認支援的 API 端點,則回退到人工審批或隔離的過渡流程,不要直接把員工個人憑證放進生產 CI。
- 若同一 Team API Key 被多個產品線、簽名任務和管理任務共用,則先拆分任務和流水線,再判斷是否需要更高層級的 Apple 團隊隔離。
- 若安全團隊無法取得密鑰存取、撤銷演練及任務後清理證據,則不要把該密鑰視為可上線的生產憑證。
這個分支也回答了 Team API Key 與 Individual API Key 的實務選擇:生產基礎設施需要人員獨立性,有限的使用者自動化才接受個人權限繼承。