限制代理程式的權限
已完成定義允許操作、資源和條件。在模型外驗證權限,並區分實作與發布。
檢查理解程度你要求代理程式只編輯一個分支,但它的權杖可以推送到預設分支。實際有效的邊界是什麼?進行練習
學習目標
- 用操作、資源和條件描述權限。
- 區分任務核准與執行授權。
- 測試禁止的操作是否遭到拒絕。
授予存取權前,先描述任務
讀取程式碼的代理程式,與部署服務的代理程式,需要不同權限。不要只因同一產品支援兩種操作,就同時授予兩組權限。
用三部分定義權限:操作、資源和條件。以虛構報表修正為例,任務進行期間,代理程式可以寫入一個功能分支,也能讀取核准的儲存庫檔案;但不能修改正式環境資料或儲存庫保護規則。
| 必要操作 | 邊界範例 |
|---|---|
| 檢查程式碼 | 讀取指定儲存庫 |
| 執行檢查 | 使用隔離環境與虛構測試資料 |
| 準備變更 | 寫入任務分支 |
| 請求審查 | 開啟 PR,但不合併 |
| 發布軟體 | 使用另一個受保護的部署流程 |
具體落實方式取決於工具。如果權杖無法表達分支限制,就使用額外儲存庫控制或執行服務。誠實記錄仍然保有的權限。
在模型外落實限制
提示詞不是存取控制系統。執行元件必須依目前權限,檢查請求的操作與目標資源,不能接受模型聲稱「已經核准」就直接執行。
AWS 建議為適當工作負載使用有限權限與暫時存取憑證。OWASP 也將類似的最小權限原則套用到代理程式和工具。這些原則必須在實際身分與執行系統中實作。AWS IAM 指引、OWASP 代理程式指引。
系統支援時,使用短效存取憑證。不要讓不相關機密值留在環境中。唯讀儲存庫任務,不應從開發者的 shell 繼承正式環境資料庫密碼。
將核准綁定實際操作
核准準備變更,不代表核准部署。部署決定應指出建置產物、目標環境和相關條件。這些項目改變時,原先決定可能不再適用。
假設代理程式提出安全的資料庫讀取操作,獲得核准後卻執行另一個查詢。有用的核准機制會檢查真正執行的操作。沒有定義目標資源、只說「繼續」的訊息,可能掩蓋這項差異。
也要區分身分與能力。記錄由哪個人或工作負載啟動執行,並在操作發生時,驗證該身分仍有權限。撤銷某人的存取權,應對排隊工作有明確影響。
測試拒絕與中斷
不要只驗證成功路徑。在隔離測試環境,嘗試對允許資源之外的對象執行操作,確認執行系統拒絕它。檢查稽核事件,但不要記錄存取憑證。
接著測試取消或存取憑證到期。確認哪些工作立即停止,哪些操作可以完成。停止按鈕不一定能撤回已到達其他系統的操作。
隨任務保留簡短權限紀錄,包括負責人、核准範圍、實際控制、拒絕測試和到期時間。這樣後續審查才夠具體,能改善工作流程。
進行練習
為修正報表篩選的代理程式定義權限。列出三項允許與三項禁止操作,納入儲存庫、分支、環境和到期時間。描述如何在不修改正式環境的情況下,測試每項拒絕規則。
下載工作表(Markdown)取消此選項,會刪除此瀏覽器儲存的所有進度。
進度只留在此瀏覽器。無須帳戶,沒有追蹤。