MEGAZONE 株式会社 のテック陣「MEGAZONEのゆかいな仲間たち」がおくる、Megazone Japan Advent Calendar 2023 の8日目のエントリーです。
はじめに
前回の記事に補足でIAMポリシーを自作できることをお伝えしました。
AWSマネージドポリシー(AmazonEC2FullAccess等)では、関連する他のAWSサービスも許可されていたりするため、「本当にEC2だけのフルアクセス権限にしたい」 といった場合はカスタムポリシーを作成することで実現できます。
具体的には以下のようなEC2以外のAWSサービスの権限を消して...
↓↓↓
それでは上記を満たすカスタムポリシーを作成してみましょう。
カスタムポリシーの作成(EC2だけのフルアクセス権限)
IAMのページに移動し、ナビゲーションペイン(左メニュー)のPoliciesをクリックします。
IAMポリシーが一覧表示されるので右上のCreate policyをクリックします。
Policy editorはVisualを選択します。
Serviceの項目で「EC2」と入力すると候補が出てくるので、EC2を選択します。
今回作成するカスタムポリシーはEC2のフルアクセス権限なので、All EC2 actions (ec2:*) にチェックを入れます。EC2に関する全てのActionが許可されます。
下の方に注意マークで、Required permissions not selected.(必要な権限が選択されていません。)と出ていますね。
これは(EC2側で)許可したActionの中で、他のActionも許可する必要があるという注意となります。「1more」などをクリックすると詳細が表示され、別途許可が必要なActionが確認できます。
下記の場合はIAMの「iam:PassRole」が必要であることが分かります。※今回は許可設定しません
Resourcesは「All」を選択し、右下のNextをクリックします。
Review and createページではPolicy nameを決めて入力します。
作成するポリシーの権限を確認したら、右下のCreate policyをクリックします。
その後、マネジメントコンソールの上部に「Policy [Policy name] created.」と表示されたら作成完了です
作成したカスタムポリシーの確認
IAMのPoliciesのページでPolicy nameを検索すると、作成したポリシー(カスタムポリシー)が確認できます。
※私はAmazonEC2FullAccess-EC2Only_CustomPolicyという名前にしました
ポリシーをクリックすると詳細が表示されます。EC2のFull accessだけであることが確認できました。
作成したカスタムポリシーの挙動確認
さっそくtest-user君にアタッチしてみました。
EC2以外のAWSサービスは警告が表示され、内容は確認できないようになっています。
EC2のページへ移動してみると、すでにAuto Scaling GroupsとLoad balancersの数が表示できずエラーになっていますね。(※権限があれば表示されます)
EC2インスタンスのMonitoring関連ではCloudWatchの権限がないため、グラフの表示ができません。
エラー文面詰め込みすぎ
To view this widget you need cloudwatch:GetMetricData because no identity-based policy allows the cloudwatch:GetMetricData action permission.
(このウィジェットを表示するには、cloudwatch:GetMetricData アクション権限を許可する ID ベースのポリシーがないため、cloudwatch:GetMetricData が必要です。)
ついでにIAMに関する権限もないため、IAMのページでも表示エラーとなり、自分にどんな権限があるかも分からず。
EC2インスタンスの起動や停止、EBSの作成等はできるので、EC2だけのシンプルな操作であれば問題なさそうです。
MonitoringについてはAWS外の監視ソリューションで行うって手もあるか
おわりに
必要なアクセス許可のみ設定というのがベストプラクティスですが、どの権限が必要なのかを把握するのが課題になりそうですね。
「きめ細かな~」って言葉が好きなのですが、細かすぎると管理者が変わったら対応できなくなったり...。そのあたりは要件や運用ポリシーと相談でしょうか。