IAM ポリシーのバージョニング - AWS Identity and Access Management

IAM ポリシーのバージョニング

お客様が IAM カスタマー管理ポリシーを変更した場合、または AWS が AWS 管理ポリシーを変更した場合、変更されたポリシーで既存のポリシーは上書きされません。代わりに、IAM は管理ポリシーの新しいバージョンを作成します。IAM は、最大 5 つのバージョンのカスタマー管理ポリシーを保存します。IAM はインラインポリシーのバージョニングをサポートしていません。

次の図は、カスタマー管理ポリシーのバージョニングを示しています。この例では、バージョン 1~4 が保存されます。IAM には、最大 5 つのマネージドポリシーバージョンを保存できます。6 番目の保存バージョンを作成することになるポリシーを編集する場合、以後保存しないこととする古いバージョンを選択できます。いつでも他の 4 つの保存済みバージョンのいずれかに戻すことができます。


      管理ポリシーを変更するとポリシーのバージョンが新しくなる

ポリシーのバージョンは、Version ポリシーの要素とは異なります。Version ポリシー要素は、ポリシー内で使用され、ポリシー言語のバージョンを定義します。Version ポリシー要素の詳細については、「IAM JSON ポリシー要素Version」を参照してください。

バージョンを使用して、管理ポリシーの変更を追跡できます。たとえば、管理ポリシーに変更を加えた後で、その変更が意図しない結果をもたらしたことに気付く場合があります。この場合、以前のバージョンをデフォルトのバージョンとして設定することで、管理ポリシーを以前のバージョンにロールバックできます。

以下のトピックでは、管理ポリシーにバージョニングを使用する方法を説明しています。

ポリシーのデフォルトバージョンの設定におけるアクセス権限

ポリシーのデフォルトバージョンを設定するために必要なアクセス権限は、このタスクの AWS API オペレーションに対応します。ポリシーのデフォルトバージョンを設定するには、CreatePolicyVersion または SetDefaultPolicyVersion API オペレーションを使用できます。ユーザーが既存のポリシーにデフォルトバージョンのポリシーを設定できるようにするには、iam:CreatePolicyVersion アクションあるいは iam:SetDefaultPolicyVersion アクションのいずれかへのアクセスを許可できます。iam:CreatePolicyVersion アクションは、ポリシーの新しいバージョンを作成して、デフォルトとしてこのバージョンを設定できるようにします。iam:SetDefaultPolicyVersion アクションは、既存のすべてのポリシーをデフォルトとして設定できるようにします。

重要

ユーザーポリシーで iam:SetDefaultPolicyVersion アクションを拒否することは、ユーザーが新しいポリシーバージョンを作成して、それをデフォルトとして設定することを阻止しません。

ユーザーが既存のカスタマー管理ポリシーの変更にアクセスすることを拒否するには、次のポリシーを使用できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "iam:CreatePolicyVersion", "iam:SetDefaultPolicyVersion" ], "Resource": "arn:aws:iam::*:policy/POLICY-NAME" } ] }

カスタマー管理ポリシーのデフォルトバージョンの設定

管理ポリシーのバージョンのうちの 1 つはデフォルトバージョンに設定されています。ポリシーのデフォルトバージョンは動作バージョン、つまり管理ポリシーをアタッチするすべてのプリンシパルエンティティ (ユーザー、ユーザーグループ、ロール) に対して有効なバージョンです。

カスタマー管理ポリシーを作成すると、ポリシーは v1 として識別される単一バージョンから始まります。管理ポリシーのバージョンが 1 つのみの場合は、そのバージョンが自動的にデフォルトとして設定されます。カスタマー管理ポリシーに複数のバージョンがある場合は、デフォルトとして設定するバージョンを選択します。AWS 管理ポリシーのデフォルトバージョンは AWS によって設定されます。次の図にその概念を示します。


        管理ポリシーのバージョンが 1 つのみの場合は、そのバージョンがデフォルトバージョンになる


        カスタマー管理ポリシーに 3 つのバージョンがある場合は、v2 がデフォルトバージョンになる

カスタマー管理ポリシーのデフォルトバージョンを設定すると、そのバージョンは、ポリシーがアタッチされているすべての IAM アイデンティティ (ユーザー、ユーザーグループ、ロール) に対してそのバージョンを適用できます。 AWS 管理ポリシーまたはインラインポリシーのデフォルトバージョンを設定することはできません。

カスタマー管理ポリシーのデフォルトバージョンを設定するには (コンソール)
  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[ポリシー] を選択します。

  3. ポリシーのリストで、デフォルトバージョンを設定するポリシーのポリシー名を選択します。検索ボックスを使用して、ポリシーのリストをフィルタリングできます。

  4. [ポリシーのバージョン] タブを選択します。デフォルトのバージョンとして設定するバージョンの横にあるチェックボックスをオンにし、[デフォルトとして設定] を選択します。

AWS Command Line Interface または AWS API からカスタマー管理ポリシーのデフォルトバージョンを設定するには、「カスタマー管理ポリシーの編集 (AWS CLI)」を参照してください。

バージョンを使用して変更をロールバックする

カスタマー管理ポリシーのデフォルトバージョンを設定して、変更をロールバックすることができます。たとえば、次のシナリオを考えてみます。

AWS Management Console を使用して特定の Amazon S3 バケットの管理をユーザーに許可するカスタマー管理ポリシーを作成するとします。作成した時点では、存在するバージョンは v1 として識別される 1 つのバージョンのみであり、そのバージョンが自動的にデフォルトとして設定されます。ポリシーは目的どおりに機能します。

後から、ポリシーを更新して 2 つ目の Amazon S3 バケットを管理するアクセス許可を追加します。IAM は、変更内容を含む v2 ポリシーの新しいバージョンを作成します。v2 をデフォルトのバージョンとして設定してからしばらくして、Amazon S3 コンソールを使用する権限がないという報告をユーザーから受けたとします。この場合は、ポリシーのバージョンを、目的どおりに機能することがわかっている v1 にロールバックできます。これを行うには、デフォルトのバージョンとして v1 を設定します。ユーザーは Amazon S3 コンソールを使用して元のバケットを管理できるようになりました。

後で、ポリシーのバージョン v2 のエラーを確認してから、再度ポリシーを更新して 2 つ目の Amazon S3 バケットを管理するアクセス許可を追加します。IAM は、v3 として識別される別の新しいバージョンのポリシーを作成します。デフォルトのバージョンとして v3 を設定すると、このバージョンは目的どおりに機能します。この時点で、ポリシーのバージョン v2 を削除します。

バージョンの制限

マネージド ポリシーは最大 5 つのバージョンを持つことができます。AWS Command Line Interface または AWS API を使用して、管理ポリシーのバージョンを 5 つ以上にする必要がある場合は、まず既存のバージョンを 1 つ以上削除する必要があります。AWS Management Console を使用している場合は、ポリシーを編集する前にバージョンを削除する必要はありません。6 番目のバージョンを保存する際、デフォルト以外のポリシーのバージョンを 1 つ以上削除することを求めるダイアログボックスが表示されます。確認しやすいように、各バージョンの JSON ポリシードキュメントを表示します。このダイアログボックスについては、「IAM ポリシーの編集」を参照してください。

管理ポリシーのデフォルトバージョン以外の任意のバージョンを削除できます。バージョンを削除しても、残りのバージョンのバージョン ID は変更されません。その結果、バージョン ID はシーケンシャルではなくなる場合があります。たとえば、管理ポリシーのバージョン v2 と v4 を削除して 2 つの新しいバージョンを追加すると、残ったバージョンの ID は v1、v3、v5、v6、v7 となる可能性があります。