AWS
EC2
IAM
ElasticIP

IAMポリシーでElastic IP(EIP)の解放を許可しない

More than 1 year has passed since last update.

メンテナンスで、EC2インスタンスのElastic IP(EIP)を付け替える場合があります。
古いEC2インスタンスからアドレスの関連付け解除後、新しいEC2インスタンスへアドレスの関連付けする際、「アドレスの関連付け」をメニューから選択するのですが、誤って「アドレスの解放」を選択した事がありました。

qiita20171104-1.png
「アドレスの関連付け」と「アドレスの解放」のメニューが上下隣り合わせにあるので間違えやすい。

qiita20171104-2.png
一応、確認のダイアログは表示されるけど、うっかり「リリース」の青いボタンを押しそうに・・・。
「リリース」ボタンを押す直前で気付きました。
脳が疲れていていると、注意力が低下してミスを犯しやすくなります。

IAMポリシーを記述する

誤ってEIPを解放すると、対象インスタンスに接続するための設定が随所にある場合、設定変更や関係者への周知が非常に手間です。
そこで、運用が安定したAWSアカウントでは、割り当て済みのEIPを解放する予定が当面無いので、IAMポリシーで解放を許可しないよう設定しました。
同様に、KeyPairやVPCの削除も同様に設定すると良いかもしれません。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "一意の識別子",
      "Action": [
        "ec2:ReleaseAddress"
      ],
      "Effect": "Deny",
      "Resource": "*"
    }
  ]
}

※一意の識別子=ポリシー内で固有のID. Stmt10000000000001など。

検証

ポリシー作成後、ユーザやグループにアタッチして、EIPが解放できない事を検証します。
※検証用に新規に割り当てたEIPを使用する等、実運用で使用していないEIPで検証してください。
qiita20171104-3.png
正しくポリシーが適用されていれば、アドレスの解放の確認ダイアログで「リリース」ボタンを押した際にエラーになります。