1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IAMポリシーを触るならポリシーバージョン系アクションは基本全て許可するべし!

Posted at

はじめに

AdministratorAccess権限では権限が強すぎるので、AWSのインフラ運用者にPowerUserAccess権限やSystemAdministrator権限を与えて、それらの権限で触ることができないIAM系の権限を追加で設定してインフラ運用者側でIAMロールやIAMポリシーを管理・運用しているシステムは多いのではないかと思います。

そんなシステムで私が経験した問題を共有しようと思います。

IAMポリシーバージョンとは

IAMポリシーは過去のIAMポリシー設定をバージョン管理しており、IAMポリシー画面の、「ポリシーのバージョン」のタブより、過去5世代前までのバージョンの設定に戻すことができるようになっています。

IAMポリシーを作成する権限となるCreatePolicyなどと比べると分かりづらい権限とはなりますが、IAMポリシーを運用するためには必要な権限となります。

IAMポリシーバージョンのアクションは全部で以下5つとなりますのでAWSマネジメントコンソール上から操作する際にどの部分の設定に当たるかをそれぞれ紹介します。

アクション 内容
ListPolicyVersions IAMポリシーバージョンのリストを表示するのに必要
GetPolicyVersion IAMポリシー内容の表示に必要
CreatePolicyVersion 新しいIAMポリシーバージョンを作成する場合に必要
DeletePolicyVersion IAMポリシーバージョンを削除する場合に必要
SetDefaultPolicyVersion デフォルトのIAMポリシーバージョンを変更する場合に必要

ListPolicyVersions

ポリシーのバージョン」から存在するポリシーバージョン一覧を確認するために必要な権限となります。

Monosnap_20250208_153104.png

GetPolicyVersion

許可」から現在のポリシー設定を表示させるために必要な権限となります。

また、権限がない場合、ポリシー設定の「編集」画面にも遷移できなくなるため、AWSマネジメントコンソール上でIAMポリシーを設定するためには必須となる権限となります。

Monosnap_20250208_153939.png

CreatePolicyVersion

IAMポリシーを更新する際に必要な権限となります。

なお、CreatePolicyVersionの権限が必要となるのはIAMポリシーを更新する場合であり、IAMポリシーを新規作成する際には不要となります。

DeletePolicyVersion

ポリシーのバージョン」から古いバージョンを削除する場合に必要な権限となります。

Monosnap_20250208_153258.png

SetDefaultPolicyVersion

ポリシーのバージョン」から最新以外のバージョンをデフォルトとして設定する場合に必要な権限となります。

Monosnap_20250208_153209.png

IAMポリシーを管理・運用していくために最低限必要なIAMポリシーバージョン権限

AWSマネジメントコンソールでIAMポリシーの作成・更新を行うことを前提とした最低限の権限としては最低限以下2つあれば、ある程度のIAMポリシーの運用を行うことが可能となります。

  • CreatePolicyVersion
  • GetPolicyVersion

最低限の権限で運用したい方は上記のみの権限でも可能ですが、後述の問題が発生することを理解したうえで検討してください。

最低限の権限での問題

最低限の権限でもIAMポリシーの作成・更新ができますが、以下のような問題が発生します。

許可画面で表示されるIAMポリシー設定と編集画面で表示されるIAMポリシーが異なる

ListPolicyVersionsのアクションは「ポリシーのバージョン」タブのバージョン一覧の表示に必要となる権限となりますが、バージョン一覧の表示だけではなく、IAMポリシーの編集にも関わってくる問題となります。

許可」タブで表示されるIAMポリシーの設定は、前述の通りGetPolicyVersionの権限があれば以下のように画面表示され、デフォルトのポリシーバージョンの設定が表示されます。

Monosnap_20250208_131401.png

IAMポリシーの編集画面に遷移するとポリシー設定が以下のように表示されますが、ListPolicyVersionsの権限が無いと、デフォルトのポリシーバージョンの設定ではなく、最初のポリシーバージョンの設定(つまりバージョン1の設定)が表示されます。

Monosnap_20250208_131612.png

推測となりますが、おそらく編集画面でIAMポリシーの設定を表示する際、ListPolicyVersions権限で、存在するポリシーバージョンを取得し、デフォルトとなるIAMポリシーの設定を画面表示していると思われます。

その際、ListPolicyVersions権限が無いと、存在するポリシーバージョンが分からないため、IAMポリシー新規作成時に作られるバージョン1の設定が読み込まれます。
※編集画面の設定には最新バージョンに存在する「s3:*」の設定が無い

policy.png

ちなみにListPolicyVersions権限が無く、5世代以上更新していて最初のバージョン1が削除されている場合は以下のようにv1が無いと表示されることからバージョン1を読み込みに行っていることが確認できます。

Monosnap_20250208_161302.png

編集画面でListPolicyVersionsに関するエラーが表示されるのであれば気づくことができますが、バージョン1のポリシー設定を読み込む際の権限はGetPolicyVersion権限で読み込まれ、もちろんポリシーの編集画面までたどり着けているのであればGetPolicyVersion権限は付与されていることからエラーも表示されません。

エラーも表示されないことから気づくのが困難なので個人的にこの問題が一番事故につながる問題だと感じています。

IAMポリシーを5回更新したら更新できなくなる

IAMポリシーのバージョンは過去5世代分しか保持できないため、IAMポリシー更新時に5世代を超える場合、一番古いバージョンの削除が行われます。

そのためListPolicyVersionsDeletePolicyVersion権限が付与されていない場合、古いバージョンの削除が行えず、以下のようにIAMポリシーの更新ができなくなります。

Monosnap_20250208_143154.png

DeletePolicyVersion権限だけではなくListPolicyVersionsの権限も必要となる理由としては、前述の「許可画面で表示されるIAMポリシー設定と編集画面で表示されるIAMポリシーが異なる」と同様の理由で必要となると思われます。

SetDefaultPolicyVersion権限は無くても何とかなる?

「全て許可するべし!」とタイトルをつけていますが、他の権限に比べればSetDefaultPolicyVersionの権限は無くても何とかなります。

SetDefaultPolicyVersion権限が使われる場面としては、別バージョンに変更する場合となるため、常に最新バージョンを使う限りは影響ありません。

あるとすればIAMポリシー更新時に「この新しいバージョンをデフォルトとして設定します。」のチェックを外して更新した後、バージョン変更するときには多少影響がありますが、SetDefaultPolicyVersion以外の権限が許可されていれば、「この新しいバージョンをデフォルトとして設定します。」のチェックを行ったうえで再度ポリシーを更新し直すことでデフォルトバージョンが最新バージョンに切り替わるので、無くても何とかなります。

ただ、SetDefaultPolicyVersion以外の権限を付与しているのであれば、あえてSetDefaultPolicyVersionだけ除外する必要もないかと思うので、全て許可しておいたほうが良いでしょう。

おわりに

ポリシーバージョン系のアクションは、SetDefaultPolicyVersion以外は、どれを抜いたとしても運用に大きく支障が出てしまうものとなります。

許可画面と編集画面のポリシー設定差異の問題については知っていないと大事故に繋がる可能性があり、さらに過去の設定に戻ってしまっている(デグレード)ことで作業品質や作業ミスを疑われてしまう可能性もあるため、IAMポリシーを運用する立場の場合、ポリシーバージョン系アクションは全て許可するようにしましょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?