2019年7月27日 星期六

how to give an IAM user full access except account and payment methods information

依最小權限的安全原則,AWS服務允許設定IAM群組/使用者,只賦予特定任務所須權限,以完成基本任務要求。
可是,IAM群組/使用者在使用服務時又常常須要隨時觀察服務使用量,以避免帳單超額。
理由是AWS帳號須綁信用卡,且無法設定付款上限,所以觀察服務用量,避免浪費才是省錢王道。

照理說AWS應該將觀察使用金額列為基本功能,偏偏AWS為了避免帳單等敏感資料遭非帳號擁有者看到,
將帳單和成本管理(Billing and Cost Management)的許可(Permission)分為如下幾類:
   aws-portal:ViewBilling
   aws-portal:ModifyBilling
   aws-portal:ViewAccount
   aws-portal:ModifyAccount
   aws-portal:ViewPaymentMethods 
   aws-portal:ModifyPaymentMethods
   aws-portal:ViewUsage
   -
   budgets:ViewBudget
   budgets:ModifyBudget
   -
   cur:DescribeReportDefinitions
   cur:PutReportDefinitions
   cur:DeleteReportDefinition
同時預設所有IAM群組/使用者不能取用上述帳單和成本管理服務,簡稱Billing服務。
這樣除了帳號擁有者自己看得到,其他受委託任務的IAM群組/使用者將無從直接觀察服務使用量,
只能間接等設定的預算超額收到通知才知道用量太多,容易造成帳單意外超額。

所以,假設帳號擁有者希望IAM群組/使用者擁有管理者權限,但不能看帳戶,付款方法等敏感資料,
則建議帳號擁有者可作如下組態設定。

1.Console/My Account: 啟動IAM存取選項,使其有機會取用Billing服務

2.Console/IAM: 為IAM群組/用戶套用如下政策,可用Billing服務,但拒絕其中敏感的帳戶及付款方法服務 受管政策: 連接政策,例如: 預設的管理者權限AdministratorAccess,包含Billing服務, 如下 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] } 內嵌政策: 建立群組政策,例如: 建立自行命名的 policygen-deny_view_account_paymentmethods-201907271730 如下 { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1564219794000", "Effect": "Deny", "Action": [ "aws-portal:ViewAccount", "aws-portal:ModifyAccount", "aws-portal:ModifyBilling", "aws-portal:ViewPaymentMethods", "aws-portal:ModifyPaymentMethods" ], "Resource": [ "*" ] } ] }
註1: 上述作法雖方便管理者在敏感資料獲保護下,以適當權限委託IAM群組/使用者, 使其得以一邊看帳單用量,一邊完成任務,避免帳單超額, 但是在看帳單用量部份,目前AWS無法細分那些服務用量能給誰看, 也就是說其他IAM群組/使用者的用量也會一併看到,這是其缺點。 註2: 針對公司或學校,若只想開一個AWS帳戶給一個專案使用,則上述作法很適合參考。 因為同一個專案用戶本來就知道會用到那些服務,無須保密。 又給其管理者權限也無妨,因為專案本來就可能作各種服務測試,無從事先設限。 只要設定一個有限預算金額,設定預算達到多少用量就自動寄發通知(Alert)間接提醒, 再搭配專案用戶隨時可直接查看有時間延遲的使用量,應可有效防止意外的帳單超額情形。 註3: AWS針對學生及教育工作者有提供AWS Educate帳號,可獲得定量的免費學習配額。 若不綁信用卡,可建立免費配額較低的AWS Educate Starter帳號,用完為止。 但無法使用某些特定或局部的AWS服務,詳AWS Educate Starter帳號提供的服務清單。 Cf: Billing and Cost Management 許可參考

沒有留言: