如何创建IAM策略限制用户仅访问2023年3月及以后的AWS账单?
限制IAM用户仅查看2023年3月及以后AWS账单的正确IAM策略配置
用户需求为创建IAM策略,限制IAM用户仅能查看2023年3月及以后的AWS账单,无法访问此前账单,但当前使用的策略未达到预期效果。
用户当前使用的错误策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1678707882255", "Action": [ "billing:GetBillingData", "billing:GetBillingDetails", "billing:GetBillingNotifications", "billing:GetBillingPreferences", "billing:GetContractInformation", "billing:GetCredits", "billing:GetIAMAccessPreference", "billing:GetSellerOfRecord", "billing:ListBillingViews", "billing:PutContractInformation", "billing:RedeemCredits", "billing:UpdateBillingPreferences", "billing:UpdateIAMAccessPreference" ], "Effect": "Deny", "Resource": "*", "Condition": { "DateLessThan": { "aws:CurrentTime": "2023-01-28T23:59:59Z" } } } ] }
问题分析
- 条件键使用错误:
aws:CurrentTime代表的是用户发起请求的时间,而非账单对应的时间范围,无法用来限制账单的时间区间。需要使用AWS账单专属的条件键billing:BillingPeriodStartDate来针对账单周期进行过滤。 - Action范围冗余:策略中包含了
PutContractInformation、UpdateBillingPreferences等写操作权限,若仅需查看账单,应只保留只读类Action。 - 日期设置错误:用户需求是限制2023年3月之前的账单,但当前策略的日期设为2023-01-28,不符合需求。
正确的IAM策略配置
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReadAccessToPostMarch2023Bills", "Effect": "Allow", "Action": [ "billing:GetBillingData", "billing:GetBillingDetails", "billing:GetBillingNotifications", "billing:GetBillingPreferences", "billing:GetContractInformation", "billing:GetCredits", "billing:GetIAMAccessPreference", "billing:GetSellerOfRecord", "billing:ListBillingViews" ], "Resource": "*" }, { "Sid": "DenyAccessToPreMarch2023Bills", "Effect": "Deny", "Action": [ "billing:GetBillingData", "billing:GetBillingDetails" ], "Resource": "*", "Condition": { "DateLessThan": { "billing:BillingPeriodStartDate": "2023-03-01T00:00:00Z" } } } ] }
策略说明
- 首先通过
Allow语句赋予用户必要的账单只读权限,确保用户能访问符合条件的账单。 - 然后通过
Deny语句,利用billing:BillingPeriodStartDate条件键,拒绝用户访问账单周期开始时间早于2023年3月1日的账单数据。 - 保留的Action均为只读操作,避免赋予不必要的修改权限。
内容的提问来源于stack exchange,提问作者Usman
相关产品推荐
相关产品推荐

