学習用のAWSアカウントで一時的にEC2やVPCでエラーが表示され操作できなくなりました。自分の操作が原因でしたが、またやりそうなので原因と対応をメモします。
ログインユーザが権限を持っていても、より上位の管理機能で禁止されている可能性があります。AWS Organizationsや権限境界を確認しましょう
現象
以下の現象が発生していました。
- EC2ダッシュボードを開くと「APIエラー」とか「エラーが発生しました」が至るところに表示され何もできない。
- VPCダッシュボードを表示すると「再試行しますか?」と表示されなにもできない。
で、これだけならIAMポリシーで権限がおかしいのかな?と思うんですが、該当ユーザーは管理者で、割り当てられているポリシーは【AWSFullAccess】のみ。何も禁止していません。そしてこの現象がルートユーザーでも発生します。
ルートユーザーは全知全能、権限管理を超越した神のような存在。それも駄目とかどうなっとんねんと。
原因と対応
原因はAWS Organizationsでアカウント自体の権限を制限していたため
AWS Organizationsは複数のAWSアカウントを一元的に管理できる仕組みです。
親となるアカウントを決め、その他のアカウントを子アカウントとして紐づけて管理することができます。
で、今回操作できなくなっていたのは子アカウントとなっているAWSアカウントで、原因は親アカウントからEC2に関連する機能をすべて禁止されていたためでした。(自分で設定して忘れていた)
VPCはEC2に関する全権限が禁止されたことで巻き込まれて動かなくなったものと思われます。
禁止ポリシーを解除して解決
親アカウントにログインし、AWS Organizationsから子アカウントに適用していた禁止ポリシーを解除したところ無事に操作できるようになりました。
まとめ
今回はAWSアカウント上で権限があるのに操作できない場合、上位の管理機能から禁止されている可能性があるよ、という話でした。
これはアカウント間だけでなく、IAMユーザの権限境界等でも発生します。
権限境界とは・・・
IAMユーザに対してあらかじめ設定可能な権限範囲を定めておく機能。ポリシーで権限付与しても権限境界で許可されていない権限は付与されない。
権限があるのににおかしいなと思ったらこの辺を疑ってみましょう。
何が恐ろしいって操作できない状態で稼働を続けているサービスがあるかもしれないことですよね。料金がどんなことになるかわからなくて怖い・・・。