SEC03-BP02 授予最低權限存取權 - AWS 建構良好的架構

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

SEC03-BP02 授予最低權限存取權

僅授予使用者在特定情況下對特定資源執行特定動作所需的存取權。使用群組和身分屬性大規模動態設定許可,而不是定義個別使用者的許可。例如,您可以允許一組開發人員的存取權,以只管理其專案的資源。如此一來,當開發人員退出專案時,其存取權將自動被撤銷,而無需變更基礎存取政策。

預期成果:使用者只擁有其特定工作職能所需的最低許可。您可以分開 AWS 帳戶 來隔離開發人員與實際執行環境。當開發人員需要存取特定任務的實際執行環境時,他們會獲得授予有限且受控的存取權,且僅限於任務期間有效。他們的實際執行存取權會在完成必要的工作後立即撤銷。您定期審查許可,並在不再需要時立即撤銷許可,例如,使用者變更角色或離開組織時。您可以將管理員權限侷限在一小群可信任的群組,以減少暴險。您僅給予機器或系統帳戶執行其預期任務所需的最低許可。

常見的反模式:

  • 根據預設,您會對使用者授予管理員許可。

  • 您使用根使用者帳戶從事日常活動。

  • 您建立過度寬鬆的政策,而未適當界定範圍。

  • 您不常檢閱許可,這會導致許可滲透。

  • 您完全依賴屬性型存取控制來隔離環境或管理許可。

未建立此最佳實務時的曝險等級:

實作指引

最低權限原則指出,僅應允許身分執行完成特定任務所需的最小動作集。這平衡了可用性、效率和安全性。根據此原則運作有助於限制意外存取,也有助於追蹤誰有權存取哪些資源。IAM 使用者和角色在預設情況下沒有任何許可。根使用者預設擁有完整存取權,應受到嚴格監控,並僅用於需要根存取權的任務

IAM 政策用於明確授予許可給 IAM 角色或特定資源。例如,以身分為基礎的政策可以連接到 IAM 群組,而 S3 儲存貯體可由以資源為基礎的政策控制。

建立 IAM 政策時,您就可以指定必須為 true 的服務動作、資源和條件,以便 AWS 允許或拒絕存取。AWS 支援各種條件,以協助您縮減存取權範圍。例如,透過使用 PrincipalOrgID 條件金鑰,就可以在請求者不屬於您的 AWS 組織時拒絕動作。

此外,您還可以使用 CalledVia 條件金鑰控制 AWS 服務代您發出的請求,例如建立 AWS Lambda 函數的 AWS CloudFormation。您可以將不同的政策類型分層,以便建立深度防禦並限制使用者的整體許可。您還可以限制在什麼條件下,可以授予哪些許可。例如,您可以允許工作負載團隊為他們建置的系統建立自己的 IAM 政策,但前提是須套用許可界限來限制他們可授予的最大許可。

實作步驟

  • 實作最低權限政策:將具有最低權限的存取政策指派給 IAM 群組和角色,以反映您已定義的使用者角色或職能。

  • 透過分隔 AWS 帳戶 來隔離開發和實際執行環境:針對開發和實際執行環境使用不同的 AWS 帳戶,並使用服務控制政策、資源政策和身分政策來控制兩者之間的存取權。

  • API 使用方式的基本政策:確定所需許可的一種方法是檢閱 AWS CloudTrail 日誌。您可以利用這種檢閱根據使用者在 AWS 內實際執行的動作,建立適合的許可。IAM Access Analyzer 可根據存取活動自動產生 IAM 政策。您可以在組織或帳戶層級使用 IAM Access Advisor 來追蹤特定政策的最後存取資訊

  • 考慮使用 AWS 受管政策來執行工作職能:當您開始制定精細的許可政策時,針對帳單、資料庫管理員和資料科學家等常見的任務角色使用 AWS 受管政策會很實用。這些政策可在您決定如何實施最低權限政策的同時,協助縮小使用者的存取權。

  • 移除不必要的許可:偵測並移除未使用的 IAM 實體、憑證和許可,以實踐最低權限原則。您可以使用 IAM Access Analyzer 來識別外部和未使用的存取權,而 IAM Access Analyzer 政策產生功能可協助微調許可政策。

  • 確保使用者對生產環境具有有限的存取權:使用者應只能存取具有有效使用案例的生產環境。在使用者執行完需要生產存取權的特定任務後,就應撤銷存取權。限制對生產環境的存取,有助於防止發生會影響生產的意外事件,也能降低意外存取的影響範圍。

  • 考慮使用許可界限:許可界限是一種使用受管政策功能,其主要設定以身分為基礎的政策可授予 IAM 實體的最大許可權限。實體的許可界限可讓其只執行由身分類型政策和其許可界限同時允許的動作。

  • 使用屬性型存取控制和資源標籤讓存取權更精簡:(若支援) 使用資源標籤的屬性型存取控制 (ABAC) 可用來精簡許可。您可以使用 ABAC 模型,此模型會比較主體標籤與資源標籤,以根據您定義的自訂維度來精簡存取權。這種方法可以簡化並減少組織中的許可政策數量。

    • 建議僅在主體和資源皆為您的 AWS Organization 所擁有時,才使用 ABAC 進行存取控制。外部對象可以將與您的組織相同的標籤名稱和值,用於其自有主體和資源。如果您完全依賴這些名稱-值對來對外部對象的主體或資源授予存取權,則可能會提供意外的許可。

  • 使用 AWS Organizations 的服務控制政策:服務控制政策可集中控制組織中成員帳戶的最大可用許可數。重要的是,您可以使用服務控制政策來限制成員帳戶中的根使用者許可。此外,還可以考慮使用 AWS Control Tower,它提供規範性受管控制,可以豐富 AWS Organizations。您也可以在 Control Tower 中定義自己的控制。

  • 為您的組織制定使用者生命週期政策:使用者生命週期政策定義了當使用者上線至 AWS、變更職務或範圍或不再需要存取 AWS 時要執行的任務。在使用者生命週期的每個步驟進行許可審查,以確定許可受到適當限制並避免許可滲透的問題。

  • 建立定期審查許可的排程,並移除任何不需要的許可:您應該定期審查使用者存取權,確認使用者沒有過度寬鬆的存取權。AWS Config 和 IAM Access Analyzer 可在使用者許可稽核過程中提供協助。

  • 建立職務矩陣:職務矩陣會以視覺化的方式顯示您 AWS 足跡內所需的各種角色和存取層級。利用職務對照表,即可根據組織內的使用者職責定義和區分許可。使用群組,而不是將許可直接套用至個別使用者或角色。

資源

相關文件:

相關影片:

相關範例: