如何讓完美的讓USER只能存取一個 S3 bucket - 使用AWS Organizations

前陣子遇到一個這樣的需求, 外部的USER想用傳輸軟體上傳一些圖檔到 S3 ,做為靜態網站使用。直覺上這不是什麼難事, IAM 權限設定一下即可。

但是實際研究了一下, 無論IAM Policy如何設計, 對於S3 第一層的Bucket 列表, 只有兩種選擇, 全部列表出來或是全部隱藏. 並不能列出某一個特定Bucket 給USER看, 這造成兩個問題:

  1. 我不想讓USER(可能是外部USER甚至包商等等), 從S3 Bucket列表名稱裡,猜到公司的一些資訊.
  2. 有些第三方的S3上下傳軟體,依賴著這個List功能, 如果你隱藏了S3 Bucket List, 軟體會判定登入有問題而拒絕進一步操作.

AWS 官方Forum也證明了這個限制(2017/03)

--

使用 AWS Organizations

AWS Organizations是在2016年底 re:Invent 推出的新功能, 簡單來說, 就是管理AWS多帳號的功能。這邊指的多帳號,並不是IAM帳號,而是AWS Root Account. 當公司組織很大, 可以使用這功能開幾個帳號給下面單位使用 …

more ...

AWS Tagging Strategies 筆記

2016年春天, AWS 推出一個小頻道叫做 AWS Answers , 它是 AWS 架構師撰寫的說明文件和解決方案的地方。您可以在這裡找到各種主題的常見問題解答,像是:如何防範DDOS、如何架一個直播平台等等. 是一個值得挖寶的好所在。

什麼是 AWS Tag

AWS 允許客戶對AWS的資源 (例如:EC2) 標記標籤, 你可以標記像是測試機、正式機, 或者研發部門、業務部門這樣的metadata, 當然你可以同時標記多種維度的標籤.

最後你會在你的Detail 帳單.CSV裡看到你標記的標籤, 只要用Excel 的自動篩選功能就可以用各種維度來分析你的成本.

cost-allocation.png

當然,這不只是分析成本才可以使用, 在維運的角度也可以用得上. 例如找出所有的EC2測試機、或者找出任何沒有標籤的EC2機器.

Best Practice 最佳做法

  • Tag 命名習慣要規範,例如大小寫.
  • Tag 的設計考量到以下幾個維度: 權限控制、成本追蹤、自動化、組織
  • 多一點Tag 比少一點Tag好 …
more ...