🔍

最小権限がなにか解らないけど意外と付けてはいけないIAMポリシー

2023/08/28に公開

こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな吉井 亮です。

2023年08月27日(日) Security-JAWS 主催の CTF デイに参加しました。
のめり込んであっという間に時間が過ぎたり、セキュリティガチ勢がいたり、奥深い設問があったりで楽しいイベントでした。
私は上位入賞を狙っていたのですが、リアルタイムで表示される順位を見て開始15分で上位は諦めました。

CTF の問題のなかで、アクセスキーとシークレットアクセスキーだけを与えられてそこから推測するような問題がありました。
問題自体はとてもやりがいがあったのですが、ちょっと気になったことがあったので記事にしてみました。

最小権限とは?

その前にですが、大原則として最小権限の付与というものがあります。それ自体は広まっていると思いますし当然意識もしています。
ただ実施の話、何を持ってして最小権限なのかを語れる人は相当なプロフェッショナルだと感じます。

最小権限実現への4ステップアプローチ 前編
最小権限実現への4ステップアプローチ 後編

AWS サービスに対してはサービスロールを作成して最小権限を付与することは頑張ればできます。
人間がマネジメントコンソールを操作する運用での IAM ポリシーは最小にできますでしょうか? 例えば、あるベンダーが管理する EC2 インスタンスだけ表示させたいといったことはできるでしょうか? 操作できないからマネコンで見えるくらいは許容しようと考える管理者はいるはずです。私はそうでした。(そうです)
操作できないインスタンスを表示させると最小権限ではない気がします。気がしますが妥協してしまっている自分がいます。

これだけは付与するな

そんなものは無いですが、、、

CTF にチャレンジしていて、「表示(Read)だけならいいでしょう」がよくないという気持ちになりました。
Read 権限が広く付与されている IAM ユーザーで以下のコマンドを実行すると自分に割り当てられている IAM ポリシーを見るとどのリソースを操作できるのかが判ります。

aws iam list-attached-user-policies --user-name your_name

aws iam list-groups-for-user --user-name your_name

aws iam list-user-policies --user-name your_name

aws iam get-user-policy --user-name your_name --policy-name policy_name

aws iam get-group-policy --group-name your_group --policy-name policy_name

AWS 管理ポリシーだと ReadOnlyAccess、IAMReadOnlyAccess が付与されていたり、IAM 表示系の権限でリソースに "*" が指定されていたりすると危険です。
マネコンでの権限管理は難しいのでとりあえず ReadOnlyAccess 付けてしまおう、マネコン赤くなるのが嫌だから ReadOnlyAccess 付けてしまおうと考えがちですが思い留まったほうが良いかもしれません。

Discussion