AWS IAMポリシーの違いと使い分け!AWS管理・カスタマー管理・インライン

AWSでユーザーやロールに権限を付与するときに使うのが、IAM(Identity and Access Management)のポリシーです。ポリシーには、例えば「S3に保存したファイルを読み取れる」といった、許可・拒否する操作のルールを記述します。

しかしIAMポリシーには次の3種類があり、「どれを使えばいいの?」と迷ってしまう人が多いはずです。

  • AWS管理ポリシー(AWS managed policy)
  • カスタマー管理ポリシー(Customer managed policy)
  • インラインポリシー(Inline policy)

名前が似ていますが、主な違いは「誰が作成・管理するか」と「複数のユーザーやロールで共有できるか」です。

この記事では、以下の内容をわかりやすく解説します。

  • 3種類のポリシーの違い
  • 各ポリシーの特徴・メリット・デメリット
  • 用途に応じたポリシーの使い分け

「AWS管理ポリシー」と「カスタマー管理ポリシー」と「インラインポリシー」の違い

AWS管理ポリシーはAWSが管理する共通のポリシー、カスタマー管理ポリシーは利用者が管理する共通のポリシー、インラインポリシーは特定のユーザー・グループ・ロールに直接組み込むポリシーです。

それぞれの違いを以下の表にまとめます。

比較項目AWS管理ポリシーカスタマー管理ポリシーインラインポリシー
作成・管理する人AWS利用者利用者
ポリシーの持ち方独立したポリシー独立したポリシー特定のユーザー・グループ・ロールに組み込む
複数の対象での共有できる同じAWSアカウント内でできる同じポリシーとしては共有できない
利用者による内容の編集できないできるできる
IAMのバージョン管理AWSが管理する最大5つのバージョンを保存できる対応していない
管理の手間内容の更新はAWSが担当内容の作成・更新を利用者が担当対象ごとの作成・更新を利用者が担当

AWS管理ポリシーとカスタマー管理ポリシーは、まとめて管理ポリシーと呼ばれます。管理ポリシーをユーザー・グループ・ロールに関連付けることを「アタッチ」といいます。

例えば、2つのロールに同じ読み取り権限を設定する場合、管理ポリシーなら1つのポリシーを両方にアタッチできます。インラインポリシーなら、それぞれのロールに別々のポリシーを組み込みます。同じ内容をコピーしても、1つのポリシーを共有しているわけではありません。

AWS管理ポリシーとカスタマー管理ポリシーは再利用できるため、複数のユーザー・グループ・ロールで同じ権限を共有することができます。しかし、インラインポリシーは単一のユーザー・グループ・ロールのみに適用させるため、再利用することができません。

それぞれのポリシーの使い分けは以下のように行います。

  • AWS管理ポリシー(AWS managed policy)
    • 一般的な用途の権限を、用意されたポリシーから選んで付与したい場合。
  • カスタマー管理ポリシー(Customer managed policy)
    • 必要な操作や対象リソースを絞り、自分の環境に合わせて権限を管理したい場合。
  • インラインポリシー(Inline policy)
    • 特定のユーザー・グループ・ロールとポリシーを、一対一の関係で管理したい場合。

権限設計では、作業に必要な権限だけを付与する「最小権限の原則」が基本です。AWS管理ポリシーは導入時の出発点になりますが、用途によっては権限が広すぎるため、必要に応じてカスタマー管理ポリシーで範囲を絞ります。

では、各ポリシーの特徴・メリット・デメリットを順番に見ていきましょう。

AWS管理ポリシー(AWS Managed Policy)

AWS管理ポリシーはAWSが公式で提供しているポリシーです。複数のユーザー・グループ・ロールにアタッチできます。「簡単にアクセス権限を付けたいとき」や「権限の管理コストを下げたいとき」に使用します。

AWS管理ポリシーにはオレンジ色のAWSアイコンが付いています。

AWS管理ポリシー(AWS Managed Policy)

代表的なAWS管理ポリシーには、次のようなものがあります。

  • AdministratorAccess
  • AmazonS3ReadOnlyAccess
  • AmazonEC2FullAccess
  • AWSLambdaBasicExecutionRole

例えば、S3の読み取りに関する権限を付与するポリシーとして、AmazonS3ReadOnlyAccessがあります。ただし、特定のバケットだけを対象にしたい場合には、カスタマー管理ポリシーで必要な範囲に絞ることを検討します。

AWS管理ポリシーの特徴・メリット・デメリットを以下に示します。

特徴

  • AWSが必要に応じてポリシーの内容を更新します。
  • 更新された内容は、そのポリシーをアタッチしている対象にも適用されます。
  • 利用者がポリシーの内容を直接編集することはできません。

メリット

  • 用意されたポリシーを選ぶことで、権限設定を始めやすい。
  • ポリシーの内容を自分で一から作成する手間を減らせる。
  • ポリシー自体の更新はAWSが行う。

デメリット

  • 自分の用途に必要な権限より、許可範囲が広い場合がある。
  • 特定のリソースだけに限定するなど、内容を直接カスタマイズできない。
  • AWSによる更新で権限が変わる可能性があるため、付与内容の確認が必要になる。

注意点

注意点:AWS管理ポリシーだからといって、どの用途でも安全とは限りません。特にAdministratorAccessは非常に強い権限を付与するため、単に設定が簡単という理由で選ばず、管理者として必要な対象に限定して使用します。

カスタマー管理ポリシー(Customer Managed Policy)

カスタマー管理ポリシーは、利用者が自分のAWSアカウント内で作成・管理するポリシーです。同じアカウント内の複数のユーザー・グループ・ロールにアタッチできます。

例えば、「特定のS3バケット内のファイルだけを読み取れる」という権限を作成し、複数のアプリケーション用ロールで共通利用できます。AWS管理ポリシーでは権限が広すぎる場合や、組織独自の権限をまとめて管理したい場合に適しています。

カスタマー管理ポリシーの特徴・メリット・デメリットを以下に示します。

特徴

  • 許可する操作や対象リソース、条件を自分で設定できます。
  • JSON形式のポリシーを記述するほか、IAMコンソールのビジュアルエディターでも作成できます。
  • 適用するバージョンを変更すると、そのポリシーをアタッチしているすべての対象に反映されます。
  • IAMのバージョン管理に対応しています。

メリット

  • 自分の環境に合わせて、最小権限を目指したポリシーを作成できる。
  • 同じ権限を複数のユーザーやロールで共通利用できる。
  • 共通の権限を1か所で更新でき、対象ごとの修正を減らせる。
  • 保存済みのバージョンを使って、以前の内容に戻せる。

デメリット

  • 必要な操作や対象リソースを把握し、適切な権限を設計する必要がある。
  • アプリケーションや運用の変更に合わせて、内容を見直す必要がある。
  • 共通利用しているポリシーの変更は、複数のユーザーやロールに影響する。

インラインポリシー(Inline Policy)

インラインポリシーは、特定のユーザー・グループ・ロールに直接組み込むポリシーです。独立した管理ポリシーとして、複数の対象へアタッチすることはできません。

例えば、ある処理専用のロールに権限を設定し、そのロールとポリシーを一対一で管理したい場合に使います。

インラインポリシーの特徴・メリット・デメリットを以下に示します。

例えば、ある処理専用のロールに権限を設定し、そのロールとポリシーを一対一で管理したい場合に使います。

特徴

  • 組み込んだユーザー・グループ・ロールに紐づきます。
  • 組み込み先を削除すると、インラインポリシーも削除されます。
  • 同じポリシーを複数の対象で共有することはできません。
  • IAMのバージョン管理には対応していません。

メリット

  • 特定の対象とポリシーを、一対一の関係で管理できる。
  • 独立したポリシーとして選択・アタッチできないため、別の対象へ誤ってアタッチすることを防げる。
  • 組み込み先の削除とあわせて、その専用ポリシーも削除される。

デメリット

  • 同じ権限を複数の対象に設定したい場合、個別に作成・管理する必要がある。
  • 内容を変更しても、別の対象にコピーしたポリシーには反映されない。
  • IAMのバージョン管理を使って、以前の内容へ戻すことはできない。

なお、同じ内容をコピーして、別の対象に新しいインラインポリシーを作成することはできます。つまり、別の対象へのアタッチは防げても、内容のコピーまで禁止する仕組みではありません。

また、「1つのロールだけで使う」という理由だけで、必ずインラインポリシーにする必要はありません。カスタマー管理ポリシーを1つのロールだけにアタッチすることもできます。

本記事のまとめ

この記事では「AWS管理ポリシー」「カスタマー管理ポリシー」「インラインポリシー」の違いについて、以下の内容を説明しました。

  • AWS管理ポリシーはAWSが作成・管理し、利用者は内容を直接編集できない。
  • カスタマー管理ポリシーは利用者が作成・管理し、同じアカウント内で共通利用できる。
  • インラインポリシーは特定のユーザー・グループ・ロールに組み込み、一対一で管理する。

一般的な用途の権限を手早く設定したい場合はAWS管理ポリシー、自分の環境に合わせて権限を絞りたい場合はカスタマー管理ポリシーが候補になります。インラインポリシーは、対象とポリシーを一対一で管理する必要がある場合に検討しましょう。

お読みいただきありがとうございました。

スポンサーリンク