Kanji
・雲端架構工程師 / 自由職業 ・1993年出生 ・愛媛縣出身 / 現居東京都澀谷區 ・5年 AWS 實戰經驗 個人檔案詳情
目錄
設計 IAM 許可權的主要挑戰之一是確定如何嚴格地應用最小許可權原則。
作為最佳實踐,建議僅向 IAM 使用者和 IAM 角色授予必要的最低許可權。
但是,限制IAM使用者和角色的許可權可能會增加系統管理員的操作負擔。
因此, 提前評估與授予的IAM許可權相關的業務風險並在可接受的風險範圍內授予許可權非常重要。
除了 IAM 許可權控制之外,使用 AWS Organizations 的 SCP(服務控制策略)可以幫助減輕 IAM 許可權設計的負擔。
正確劃分AWS賬戶也很重要。透過劃分AWS賬戶,即使IAM許可權被不當授予,影響也可以受到限制。
您可以使用三種型別的策略來授予 IAM 許可權:
內聯政策
AWS 託管策略
客戶管理政策
其中,“AWS 託管策略”由 AWS 提供,並在 AWS 正確評估許可權後提供。透過使用這些策略,您可以授予每個 AWS 服務的寫入和讀取許可權。
基本上,建議使用AWS託管策略。但是,由於 AWS 託管策略可能會授予過多的許可權,因此請考慮使用“客戶託管策略”或“內聯策略”來根據需要進一步限制許可權。
例如,在以下模式中,考慮使用“客戶管理策略”或“內聯策略”來限制許可權。
要使用 AWS 託管策略授予 KMS 金鑰的管理許可權,您可以使用 AWS 託管策略“AWSKeyManagementServicePowerUser”。
參考: AWSKeyManagementServicePowerUser - AWS 託管策略
但是,使用此策略將為 KMS 金鑰授予強大的許可權,例如建立或刪除金鑰以及更改 IAM 策略。
因此, 考慮使用 IAM 策略僅授予特定 KMS 金鑰的許可權。
例如,以下 IAM 策略授予解密使用具有特定標籤的 KMS 金鑰加密的資料的許可權:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/System": "SystemA" } } } ] }
授予 AWS 資源(例如 Lambda 或 Step Functions)的執行許可權時,您將授予執行這些資源時所行使的許可權。
如果執行這些資源會帶來業務風險,請考慮使用 IAM 策略限制執行許可權。
例如,透過使用以下 IAM 策略,您可以授予執行遵循特定命名約定的 Lambda 函式的許可權。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:ap-northeast-1:123456789012:function:SystemA-*" ] } ] }
當您需要在外部賬戶中代入 IAM 角色時,您可以使用 IAM 策略授予 AssumeRole 許可權。
無法使用 AWS 託管策略授予此許可權,因此您必須使用自定義 IAM 策略來授予許可權。
例如,以下 IAM 策略授予擔任特定 IAM 角色的許可權。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::123456789012:role/SystemA-*" ] } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::systema-bucket", "arn:aws:s3:::systema-bucket/*" ] } ] }