管理ポリシーとインラインポリシー - AWS Identity and Access Management

管理ポリシーとインラインポリシー

IAM ID のアクセス許可を設定する必要がある場合は、AWS 管理ポリシー、カスタマー管理ポリシー、またはインラインポリシーを使用するかどうかを決定する必要があります。以下のセクションでは、各種のアイデンティティベースのポリシーとそれぞれの用途について詳しく説明します。

AWS マネージドポリシー

AWS 管理ポリシーは、AWS が作成および管理するスタンドアロンポリシーです。スタンドアロンポリシーとは、ポリシー名を含む独自の Amazon リソースネーム (ARN) の付いたポリシーです。たとえば、arn:aws:iam::aws:policy/IAMReadOnlyAccess は AWS 管理ポリシーです。ARN の詳細については、IAM ARNを参照してください。

AWS 管理ポリシーは、多くの一般的ユースケースでアクセス許可を提供できるように設計されています。フルアクセスの AWS 管理ポリシー (例: AmazonDynamoDBFullAccess および IAMFullAccess) では、フルアクセスをサービスに付与して、サービス管理者のアクセス許可を定義します。パワーユーザーの AWS 管理ポリシー (例: AWSCodeCommitPowerUser および AWSKeyManagementServicePowerUser) は、パワーユーザーを対象に設計されています。部分的なアクセスの AWS 管理ポリシー (例: AmazonMobileAnalyticsWriteOnlyAccess および AmazonEC2ReadOnlyAccess) では、アクセス許可管理のアクセスレベルアクセス許可を付与せずに、特定のアクセスレベルを AWS サービスに付与することができます。AWS 管理ポリシーでは、ポリシーを自身で記述する場合よりも簡単に、適切なアクセス許可がユーザー、グループ、ロールに割り当てられます。

AWS 管理ポリシーの中でも特に有用なカテゴリーは、ジョブ機能用に設計されているものです。これらのポリシーは、IT 業界でよく使用されるジョブ機能に密接に連携しています。この目的は、これらの一般的なジョブ機能への権限付与を簡単にすることです。ジョブ機能ポリシーを使用する重要な利点としては、新しいサービスとして AWS によってこれらの保守や更新が行われ、API オペレーションが導入されることが 1 つ挙げられます。たとえば、AdministratorAccess ジョブ関数は、AWS の各サービスおよびリソースへのフルアクセスを許可し、アクセス許可の委任が可能です。このポリシーは、アカウント管理者のみに使用することをお勧めします。IAM と Organizations への制限されたアクセスを除き、すべてのサービスへのフルアクセスを必要とするパワーユーザーの場合は、PowerUserAccess ジョブ関数を使用します。ジョブ機能ポリシーのリストと説明については、AWSジョブ機能の 管理ポリシー を参照してください。

AWS 管理ポリシーで定義されているアクセス許可は変更できません。AWS は、AWS 管理ポリシーで定義されているアクセス許可を不定期に更新します。AWS によるこの更新は、ポリシーがアタッチされているすべてのプリンシパルエンティティ (ユーザー、グループ、およびロール) に影響を与えます。AWS は、新しい AWS サービスが開始されたときや既存のサービスで新しい API コールが利用可能になったときに、AWS 管理ポリシーを更新する可能性が最も高くなります。たとえば、ReadOnlyAccess という AWS 管理ポリシーでは、すべての AWS サービスおよびリソースへの読み取り専用アクセスが許可されます。AWS は新しいサービスを開始すると、AWS により ReadOnlyAccess ポリシーを更新して、新しいサービスに対する読み取り専用アクセス許可を追加します。更新されたアクセス権限は、ポリシーがアタッチされているすべてのプリンシパルエンティティに適用されます。

次の図は AWS 管理ポリシーを示しています。図には、3 つの AWS 管理ポリシー (AdministratorAccessPowerUserAccessAWS CloudTrailReadOnlyAccess) が示されています。1 つの AWS 管理ポリシーを複数の AWS アカウントのプリンシパルエンティティに、また、1 つの AWS アカウントの複数のプリンシパルエンティティにアタッチできることに注意してください。


        AWS 管理ポリシーの図

カスタマー管理ポリシー

お客様の AWS アカウントで管理できるスタンドアロンのポリシーを作成することができ、これはカスタマー管理ポリシーと呼ばれています。次に、AWS アカウントの複数のプリンシパルエンティティにポリシーをアタッチできます。ポリシーをプリンシパルエンティティにアタッチすると、ポリシーで定義されたアクセス権限がエンティティに付与されます。

お客様が管理するポリシーを作成する優れた方法は、既存の AWS 管理ポリシーをコピーして開始することです。この方法で、最初の段階でポリシーが正しいことがわかっていれば、ご使用の環境に合わせて必要なカスタマイズを行うことができます。

次の図は、カスタマー管理ポリシーを示しています。各ポリシーは、IAM 内の独自の Amazon リソースネーム (ARN) (ポリシー名を含む) を持つエンティティです。同じポリシーを複数のプリンシパルエンティティにアタッチできること (たとえば、同じ DynamoDB-books-app ポリシーが異なる 2 つの IAM ロールにアタッチされていること) に注目してください。


        カスタマー管理ポリシーの図

AWS 管理ポリシーを使用したアクセス許可の使用開始

最小権限を付与するポリシーを使用するか、タスクの実行に必要なアクセス許可のみを付与することをお勧めします。最小特権を付与する最も安全な方法は、チームに必要な権限のみを使用してカスタマー管理ポリシーを作成することです。必要に応じて、チームがより多くの権限を要求できるようにプロセスを作成する必要があります。チームに必要な許可のみを提供する IAM カスタマーマネージドポリシーを作成するには、時間と専門知識が必要です。

IAM ID (ユーザー、ユーザーのグループ、およびロール) にアクセス許可を追加するために、AWS マネージドポリシー を使用できます。AWS 管理ポリシーは、最小特権のアクセス許可を付与しません。プリンシパルにジョブに必要な以上のアクセス許可を付与すると、セキュリティ上のリスクを考慮する必要があります。

ジョブ機能を含む AWS 管理ポリシーを任意の IAM ID にアタッチできます。最小特権のアクセス許可に切り替えるには、AWS Identity and Access Management Access Analyzerを実行して、AWS 管理ポリシーでプリンシパルをモニタリングします。どのアクセス許可を使用しているかを学習したら、カスタムポリシーを作成するか、チームに必要なアクセス許可のみを持つポリシーを生成できます。これは安全性が低くなりますが、チームが AWS をどのように使用しているかを学習するにつれて柔軟性が高まります。

AWS 管理ポリシーは、多くの一般的ユースケースでアクセス許可を提供できるように設計されています。特定のジョブ機能用に設計された AWS 管理ポリシーの詳細については、AWSジョブ機能の 管理ポリシー を参照してください。

インラインポリシー

インラインポリシーは、IAM アイデンティティ (ユーザー、グループ、またはロール) に埋め込まれたポリシーです。つまり、ポリシーは本質的にアイデンティティの一部です。ID の作成時、またはそれ以降で、ポリシーを作成して ID に埋め込むことができます。

次の図はインラインポリシーを示しています。各ポリシーは本質的にユーザー、グループ、またはロールの一部です。2 つのロールに同じポリシー (DynamoDB-books-app ポリシー) が含まれているが、1 つのポリシーを共有していないことに注目してください。各ロールにはポリシーの独自のコピーが含まれています。


        インラインポリシーの図

管理ポリシーとインラインポリシーの比較

各用途向けにさまざまなポリシーが用意されています。通常、インラインポリシーではなく、管理ポリシーを使用することをお勧めします。

管理ポリシーは次の機能を備えています。

再利用可能性

1 つの管理ポリシーを複数のプリンシパルエンティティ (ユーザー、グループ、ロール) にアタッチすることができます。実際には、AWS アカウントにとって有用なアクセス許可を定義するポリシーのライブラリを作成し、これらのポリシーを必要に応じてプリンシパルエンティティにアタッチできます。

一元化された変更管理

管理ポリシーを変更すると、変更はポリシーがアタッチされているすべてのプリンシパルエンティティに適用されます。たとえば、新しい AWS API のアクセス許可を追加する場合、管理されたポリシーをアクセス許可を追加するように更新できます。(AWS 管理ポリシーを使用している場合は、AWS がポリシーを更新します) ポリシーが更新されると、変更はポリシーがアタッチされているすべてのプリンシパルエンティティに適用されます。一方、インラインポリシーを変更するには、ポリシーを含む各アイデンティティを個別に編集する必要があります。たとえば、グループとロールの両方に同じインラインポリシーがある場合、ポリシーを変更するには、両方のプリンシパルエンティティを個別に編集する必要があります。

バージョニングとロールバック

カスタマー管理ポリシーを変更しても、変更されたポリシーによって既存のポリシーが上書きされることはありません。代わりに、IAM は管理ポリシーの新しいバージョンを作成します。IAM は、最大 5 つのバージョンのカスタマー管理ポリシーを保存します。ポリシーバージョンを使用して、必要に応じてポリシーを以前のバージョンに戻すことができます。

注記

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

アクセス許可管理の委任

ポリシーで定義されたアクセス許可を制御しながら、AWS アカウントのユーザーにポリシーのアタッチとデタッチを許可できます。実際には、完全な権限を持つ管理者 (ポリシーを作成、更新、削除できる管理者) として一部のユーザーを指定できます。次に、権限が制限された管理者として他のユーザーを指定できます。これらの管理者は、許可されたポリシーのみを他のプリンシパルエンティティにアタッチできます。

アクセス権限の委任の詳細については、「ポリシーへのアクセスの制御」を参照してください。

AWS 管理ポリシーの自動更新

AWS は、必要に応じて (新しい AWS サービスのアクセス許可を追加するためなど)、AWS 管理ポリシーを維持して更新します。お客様が変更を加える必要はありません。更新は、AWS 管理ポリシーをアタッチしているプリンシパルエンティティに自動的に適用されます。

インラインポリシーの使用

インラインポリシーは、ポリシーとそれが適用されている ID との厳密な 1 対 1 の関係を維持する必要がある場合に便利です。たとえば、ポリシー内のアクセス権限が意図したアイデンティティ以外のアイデンティティに間違って割り当てられないようにする必要がある場合などです。インラインポリシーを使用すると、ポリシーのアクセス許可が間違ったアイデンティティにアタッチされることはありません。また、AWS Management Console を使用してアイデンティティを削除すると、そのアイデンティティに組み込まれたポリシーも削除されます。これは、プリンシパルエンティティの一部であるためです。

インラインポリシーを管理ポリシーに変換する

アカウントにインラインポリシーがある場合は、管理ポリシーに変換することができます。これを行うには、ポリシーを新しい管理ポリシーにコピーします。次に、インラインポリシーを持つ ID に新しいポリシーをアタッチします。次に、インラインポリシーを削除します。これを行うには、以下の手順を行います。

インラインポリシーを管理ポリシーに変換するには

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[ユーザーグループ]、[ユーザー]、または [ロール] を選択します。

  3. リストで、削除するポリシーを持つユーザーグループ、ユーザー、またはロールの名前を選択します。

  4. [Permissions] (許可) タブを選択します。

  5. ユーザーグループで、削除するインラインポリシーの名前を選択します。ユーザーおよびロールで、[Shownmore] を選択し (必要な場合)、削除するインラインポリシーの横にある矢印を選択します。

  6. ポリシーの JSON ポリシードキュメントをコピーします。

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

  8. [ポリシーの作成] を選択し、[JSON] タブを選択します。

  9. 既存のテキストを JSON ポリシーテキストに置き換え、[ポリシーの確認] を選択します。

  10. ポリシーの名前を入力し、[ポリシーの作成] を選択します。

  11. ナビゲーションペインで、[ユーザーグループ]、[ユーザー]、または [ロール] を選択し、削除するポリシーを含むグループ、ユーザー、またはロールの名前を再度選択します。

  12. ユーザーグループの場合、[アクセス許可] タブを選択します。ユーザーとロールで、[アクセス許可の追加] を選択します。

  13. ユーザーグループで、新しいポリシーの名前の横にあるチェックボックスをオンにし、[アクセス許可の追加] に続いて [ポリシーのアタッチ] を選択します。ユーザーまたはロールで、[アクセス許可の追加] を選択します。次のページで、[Attach existing policies directly (既存のポリシーを直接アタッチ)] を選択し、新しいポリシーの名前の横にあるチェックボックスをオンにしたら、[Next: Review (次へ: 確認)]、[アクセス許可の追加] の順に選択します。

    ユーザーグループ、ユーザー、またはロールの [概要] ページに戻ります。

  14. ユーザーグループでは、削除するインラインポリシーの横にあるチェックボックスをオンにして、[削除] を選択します。ユーザーまたはロールの場合は、削除するインラインポリシーの横にある [X] を選択します。