IAMで特権ポリシーを操作(アタッチ、デタッチ)できないように制御する

一つのAWSアカウントを複数の部署やチームで共有している場合、権限制御をするために、IAMの管理が必須となります。
今回は、AWがマネージドポリシーとして用意している特権相当のポリシーについて、権限制御するようなIAMポリシーを作成しました。

権限制御をする際にすべてのIAMの操作を制御してしまうとIAM ロールなどの作成ができず開発スピードが落ちてしまうことがあるので、そういう場面で特権のみ制御したIAMの払い出しをできると思います。

やったこと

このIAMポリシーをアタッチしたIAMリソースは、特権IAMポリシーに関する操作が拒否される。

  • 制御アクション
    • IAM User への特権IAMポリシーのアタッチ、デタッチ
    • IAM Role への特権IAMポリシーのアタッチ、デタッチ
    • IAM Group への特権IAMポリシーのアタッチ、デタッチ
  • 制御対象特権IAMポリシー
    • AdministratorAccess
    • PowerUserAccess

IAM Policy

以下のポリシーを制御したいIAM User、Group、Roleのいずれかにアタッチしてください。

aws/policy at master · koonagi/aws · GitHub

テスト

IAM ロールに「PowerUserAccess」をアタッチしようとすると以下のように権限エラーとなります。

f:id:ykoomaru:20191008075157p:plain

最後に

予めアタッチを許可するIAMポリシーが決まっている場合は、今回 "Effect": "Deny" とした箇所を "Effect": "Allow" に変更することで、特定のIAMポリシーのみアタッチさせるよう制御できます。
開発スピードを失わせないようなIAM制御をすることが大切ですね!