Neil Kuan
May 27, 2021

AWS IAM Policy Generater with iamlive

Posted on May 27, 2021  •  1 minutes  • 211 words

前言

踏入 IT界 也快2年了,時代快速發展,為了因應快速發展,許多企業都開始擁抱雲端計算,當然目前小弟在的公司也不例外,而我比較常接觸的雲端計算平台為AWS,在使用了AWS 這麼久,身為 IT 最重要的就是如何為 application 配予適當的 iam 權限(policy),以達到 zero trust,給 application 越是剛剛好的權限越是好,而不是每個 application 要調用 s3 時,你就給他 arn:aws:iam::aws:policy/AmazonS3FullAccessapplication 要調用 sqs 時,你就給他 arn:aws:iam::aws:policy/AmazonSQSFullAccess

iamlive

source github: https://github.com/iann0036/iamlive

有一天我在逛 github 的時候,突然發現一位AWS Hore 寫了一個 相當令我感興趣的 open source,那就是 iamlive ,我們來看看他的說明簡介

Generate an IAM policy from AWS calls using client-side monitoring (CSM) or embedded proxy。 透過監控 用戶端對 AWS 調用資源的 api 來持續幫你,產生 iam policay,來幫助您知道您調用的api 是需要多少權限。

到 release page 下載與執行環境可運行的binary

https://github.com/iann0036/iamlive/releases 像我就選擇 iamlive-v0.36.0-darwin-amd64.dmg 並將 binary 放入您的 $PATH 路徑中。

打開兩個視窗

  1. 第一個視窗輸入 iamlive --set-ini --profile [aws_profile] 指定 aws profile.
  2. 第二個視窗先 一個檔案 touch a.txt file

嘗試 list s3 bucket

  1. 第一個視窗 已經被 iamlive process 吃住
  2. 第二個視窗先 嘗試 aws s3 ls --profile [aws_profile] 你會發現第一個視窗會發現你下了 list bucket 的指令,並立即產生s3:ListAllMyBuckets iam policy 給你。

嘗試 put object to s3 bucket

  1. 第一個視窗 已經被 iamlive process 吃住
  2. 第二個視窗先 嘗試 aws s3 cp a.txt s3://[your_bucket_name]/ --profile [aws_profile] 你會發現第一個視窗會發現你下了 s3 cp 的指令,並立即產生 s3:PutObject iam policy 給你。

嘗試 rm object on s3 bucket

  1. 第一個視窗 已經被 iamlive process 吃住
  2. 第二個視窗先 嘗試 aws s3 rm s3://[your_bucket_name]/a.txt --profile [aws_profile] 你會發現第一個視窗會發現你下了 s3 rm 的指令,並立即產生 s3:DeleteObject iam policy 給你。

雖然目前只能偵測到 Action 沒辦法細微的偵測到什麼樣的 resource (目前為 “*”) 但我認為已經相當實用了, 推薦給大家。

發現 support SDK ,所以就手癢來試試看。

有興趣的歡迎參考一下 我的 demo repo for python boto3 sdk.

demo github repo : https://github.com/neilkuan/iamlive-for-python-boto3

以及 大家如果有興趣 可以多多 follow 這位來自 澳洲 雪梨的 AWS Hero. 他的 github 裡面真的有很多令人驚豔的 open source like AWSConsoleRecorderformer2 etc…

20210527 Neil Kuan

Follow me

Here's where I hang out in social media