2014-10-20 168 views
2

當前我登錄到IAM並手動編輯我的S3存儲桶策略。當我在編輯器中改變某些內容時,除非通過取消並退回並查看它退出編輯器,否則我不知道策略是什麼。所以我無法確切知道我改變了什麼。所以編輯是一種痛苦,尤其是考慮到我有時會發現自己正在改變某些東西,然後再測試這些改變,並且沒有簡單的方法回滾到我開始的地方。版本控制策略

由於缺乏版本控制而導致的另一個問題是沒有記錄爲什麼或何時修改了特定權限。例如,我真的很想知道我們在我們的存儲桶上需要ListBucket權限的原因,因爲它需要文件上傳才能正常工作。你知道,你可能會把它放在一個git commit消息中。

既然您已經理解並深切關注我的動機,我想知道如何最好地將我的政策變爲git。在可能的範圍內,我希望通過我寫的代碼來改變權限的唯一方法,假定只要您進行更改,就會提交到存儲庫。這當然不是完美的安全性,但它確實提供了什麼時候發生變化的計算,並給了我們一個單獨的地方來進行修改。

這裏是我的建議:

  • 創建IAM用戶調用policy_editor
  • 所有用戶吊銷策編輯權限
  • 給policy_editor策略編輯權限
  • 不要給policy_editor密碼(因此有使用API​​憑據來更改策略)

我的問題是:

  1. 這可能嗎? (理想情況下,即使root用戶也沒有權限編輯策略,所以不會偶然發生)
  2. 這是個好主意嗎?
  3. 有沒有更好的解決方案?
  4. 有沒有工具可以做到這一點?

謝謝!

回答

1

這可能嗎?

是的,API足夠靈活,可以做到這一點。圍繞IAM編寫自動化功能可謂毋庸置疑。

通過「root用戶」,您的意思是直接在賬戶上使用AWS訪問密鑰嗎?第一步是刪除這些信用(直接在賬戶上),並且只使用IAM用戶做任何事情。

http://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPractices.html

這是一個好主意?

是的,自動化很好。

有沒有更好的解決方案?

好了,這裏有一些相關的想法:

  • 使用CloudTrail記錄所有IAM變化。

  • 如果您禁用了更改IAM的權限,請爲緊急情況創建第二個用戶(啓用MFA)。

  • 對於某些「危險」命令,請使用自動化。 (即給他們一個網頁表格,他們可以刪除一個存儲桶,但你的代碼驗證可以事先刪除)。

  • 避免直接向用戶添加privs。始終使用組來組織權限。不要害怕花一些時間弄清楚什麼是邏輯權限組。例如,你可以有一個「調試生產」組。

  • 不要太細緻(至少不要一開始)。在這裏,安全和官僚作風之間有一個平衡。如果人們必須爲每一個小小的許可而對你進行ping,他們將開始請求priv以「以防萬一」。

  • 使用條件:您可以說「您可以刪除任何沒有'生產'名稱的桶」。或者「您可以終止實例,但它需要MFA」。

  • 定期查看您的政策。人們在團隊之間移動,所以人們通常會得到他們不需要的權限。如果您的團隊名稱很好,您可以讓管理人員審查其下屬所需的權限。

是否有一個工具,它已經做了這個?

不,我知道的。通過API調用很容易,所以有人會寫它。

(這傢伙開始一個項目:https://github.com/percolate/iamer

+0

感謝您的詳細回覆。我將研究CloudTrail,如果這提供了我正在尋找的歷史記錄,我可能會跳過自動化。完全同意其他觀點。順便說一句,有一件事讓我想起編寫代碼來做到這一點,理想情況下,我想輸入用戶名/密碼以便代碼正常工作,但是您只能使用令牌/祕密組合來充當IAM用戶編程。沒什麼大不了的,只是有點煩人,不得不找出最好的辦法。 – Brad 2014-10-21 17:48:55