Pocket Bundle シリーズ : AWS IAM ~ AWS リソースへの認証と認可を一元管理
2026-08-03 | Author : 米倉 裕基 (監修 : 伊勢田 氷琴、伊藤 広記)
Pocket Bundle シリーズとは ?
AWS サービスの要点を「ポケットに入れて持ち歩ける」コンパクトさで解説するシリーズです。図解とポイント解説を中心に、短時間で要点を把握できる構成になっています。基礎概念から実践的な設計知識まで、現場で役立つ情報を凝縮しています。
AWS IAM とは
AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスを安全に制御するためのサービスです。AWS で行われるあらゆる操作は、まず IAM による「認証」と「認可」を通過してから実行されます。いわば、すべての API リクエストを最初に受け止める門番のような存在で、AWS セキュリティの土台を担っています。
IAM が扱うのは 2 つの問いです。1 つは「認証 (Authentication)」、つまりリクエストの送信者が名乗ったとおりの相手かどうか。もう 1 つは「認可 (Authorization)」、つまりその相手にこの操作を許可してよいかどうかです。リクエストが届くたびに、IAM は保存されたアイデンティティとポリシーに照らして可否を判定します。
IAM は特定のリージョンに属さないグローバルサービスです。作成したユーザー・ロール・ポリシーはすべてのリージョンで共通して使えます。内部的には、設定変更を受け付ける「コントロールプレーン」が米国東部 (バージニア北部) リージョンに 1 つ存在し、その内容が各リージョンの「データプレーン」(読み取り専用のレプリカ) へ伝播する構造になっています。各リージョンのデータプレーンが独立して認証・認可を行うため、IAM は高い可用性を保てるよう設計されています。
そして IAM 本体 (ユーザー・グループ・ロール・ポリシー・MFA など) は追加料金なしで利用できます。料金体系の詳細は後述の「IAM の利用料金」で扱います。
詳しくは、公式ドキュメントの「IAM とは」をご覧ください。
builders.flash メールメンバー登録
builders.flash メールメンバー登録で、毎月の最新アップデート情報とともに、AWS を無料でお試しいただけるクレジットコードを受け取ることができます。
主な特徴
IAM がセキュリティの土台たりうる理由は、大きく 3 つの特徴に集約されます。きめ細かなアクセス制御、一時的な認証情報、そして追加料金なしであることです。
3 つの特徴
きめ細かなアクセス制御
IAM の権限は、サービス単位ではなく API アクション単位で定義します。例えば同じ Amazon S3 でも「s3:GetObject (読み取り) は許可するが s3:DeleteObject (削除) は許可しない」といった粒度で制御できます。さらに Condition (条件) を加えれば、「特定の送信元 IP アドレスからのみ」「MFA で認証済みの場合のみ」「特定のタグが付いたリソースに対してのみ」といった文脈に応じた制御も可能です。リソースのタグに基づいて権限を決める手法は ABAC (属性ベースアクセスコントロール) と呼ばれ、ユーザーが増えてもポリシーを増やさずにスケールできる設計として注目されています。
一時的な認証情報
IAM ロールを使うと、有効期限付きの一時的な認証情報を発行できます。パスワードや長期的なアクセスキーと違い、これらは数時間で自動的に失効・更新されるため、万一漏えいしても影響を受ける時間が限定されます。AWS は、人によるサインインもアプリケーションからのアクセスも、可能な限り長期的な認証情報ではなく一時的な認証情報を使うことを強く推奨しています。
追加料金なし
IAM 本体の利用は無料で、すべての AWS アカウントに標準で組み込まれています。申し込みや初期構築なしに、アカウント作成直後から利用を開始できます。
詳しくは、公式ドキュメントの「IAM の仕組み」をご覧ください。
IAM のユーザー
AWS リソースにアクセスするユーザーには「ルートユーザー」「IAM ユーザー」があり、複数の IAM ユーザーをまとめる仕組みとして「IAM グループ」があります (IAM ロールも主体の一種で、こちらは次のセクションで扱います)。
ユーザーの種類
ルートユーザー
ルートユーザーは、AWS アカウントの作成時に生成される、すべての権限を持つ特別な ID です。E メールアドレスとパスワードでサインインします。重要なのは、ルートユーザーは IAM ポリシーによる制限を受けないという点です。ポリシー評価では暗黙的に許可される唯一の存在のため、IAM で操作を絞り込むことができません。だからこそ、アカウントの解約や一部の請求関連タスクなど、ルートユーザーでしか実行できないタスクに限って使い、日常操作には使わないことが鉄則です。必ず MFA を設定し、アクセスキーは作成しないでください。
IAM ユーザー
IAM ユーザーは、人やアプリケーションに対して作成する個別の ID で、パスワードやアクセスキーといった長期的な認証情報を持ちます。職務が共通するユーザーを IAM グループにまとめ、グループに IAM ポリシーを適用するのが基本的な管理スタイルです。ただし後述のとおり、現在 AWS は人のサインインに IAM ユーザーを使わず、IAM Identity Center を使うことを推奨しています。
IAM グループ
IAM グループは、複数の IAM ユーザーをまとめて権限を一括管理するための仕組みです。「開発」グループには開発用ポリシー、「運用」グループには運用用ポリシーを割り当てれば、個々のユーザーに直接ポリシーを付ける手間が省け、異動時もグループを変えるだけで権限を切り替えられます。注意点として、グループはあくまで権限管理のための入れ物であり、ポリシーの Principal に指定できる「アイデンティティ」ではありません。グループ自体を入れ子にする (グループの中にグループを入れる)こともできず、1 人のユーザーは最大 10 個のグループに所属できます。
⚠ 人によるサインインには、IAM ユーザーよりも AWS IAM Identity Center の利用が推奨されています (詳細は IAM ユーザー と IAM Identity Center のセクションを参照)。長期的な認証情報を持つ IAM ユーザーを作らずに済むためです。
詳しくは、公式ドキュメントの「IAM アイデンティティ」をご覧ください。
IAM ロール
IAM ロールは、ユーザーや AWS サービスが一時的に「引き受ける (AssumeRole)」ことで、期限付きの認証情報を取得する仕組みです。IAM ユーザーと違って、ロール自体にはパスワードや長期的なアクセスキーが紐付いていません。誰か特定の人に固定されるのではなく、必要とする相手が一時的に身にまとう「役割」だと考えると分かりやすいでしょう。
ロールを引き受けると、AWS Security Token Service (AWS STS) が一時的な認証情報を発行します。これは「アクセスキー ID」「シークレットアクセスキー」「セキュリティトークン」の 3 点セットです。ここでの「アクセスキー ID」は、IAM ユーザーが持つ長期的なアクセスキーとは別物で、そのセッション限りの一時的なもの。長期キーと違ってセキュリティトークンに有効期限が含まれ、期限が来れば自動的に失効するのが特徴です。
有効期限とロールを定義するポリシー
セッションの有効期限
セッションの長さはデフォルトで 1 時間 (3,600 秒) です。DurationSeconds パラメータで 15 分〜最大 12 時間の範囲で指定できますが、上限はロールごとの「最大セッション期間」設定 (1〜12 時間) に制約されます。設定値を超える長さを要求すると操作は失敗します。また、あるロールで別のロールを引き受ける「ロールチェイン」を使う場合、AWS CLI / API 経由のセッションは最大 1 時間に制限される点に注意してください。
ロールを定義する 2 つのポリシー
ロールは性質の異なる 2 つのポリシーで定義します。
- 信頼ポリシー (Trust Policy) : 誰がそのロールを引き受けられるか。IAM で唯一の「リソースベースポリシー」で、引き受けを許可する相手 (プリンシパル) を指定します。
- 許可ポリシー (Permissions Policy) : ロールを引き受けた後に何ができるか。通常のアイデンティティベースポリシーです。
引き受けられる主体は、IAM ユーザー、Amazon EC2・AWS Lambda・Amazon ECS などの AWS サービス、外部 IdP (ID プロバイダー : 社内ディレクトリや外部の認証基盤) の認証情報で AWS にアクセスするフェデレーションユーザーなど多岐にわたります。「信頼できる相手」と「許可する操作」を分けて管理できるため、クロスアカウントアクセスや一時的な権限委譲を安全に実現できます。信頼ポリシーの文字数上限は既定 2,048 文字 (引き上げで最大 8,192 文字)と、許可ポリシー (管理ポリシー最大 6,144 文字)より小さめです。プリンシパルを列挙するだけの用途が多く、通常はこの範囲で十分収まります。
⚠ 他社 (サードパーティ)にロールの引き受けを許可する場合は、信頼ポリシーに External ID を設定して「混乱した代理 (confused deputy)」攻撃を防ぎましょう。第三者が他の顧客になりすましてロールを引き受けるリスクを軽減できます。
詳しくは、公式ドキュメントの「IAM ロール」をご覧ください。
IAM ポリシー
IAM ポリシーは「誰が・どのリソースに・何をできるか」を JSON 形式で定義する仕組みです。1 つ以上のステートメントで構成され、基本要素に加えて任意の要素を組み合わせて権限を記述します。
IAM でのポリシーとアクセス許可
ポリシーの要素
各ステートメントの基本要素は次の 3 つです。
- Effect : 許可 (Allow) または拒否 (Deny)
- Action : 操作。s3:GetObject のように API 単位で指定します
- Resource : 対象リソース。Amazon Resource Name (ARN) で指定します
これに加えて、リソースベースポリシーで許可する相手を示す Principal、条件を指定する Condition を任意で組み合わせます。先頭の "Version": "2012-10-17" はポリシー言語のバージョンで、これが現在の最新版です。新規作成では必ずこの値を指定します。
アイデンティティベースとリソースベース
ポリシーは、付与する対象によって 2 種類に分かれます。ユーザーやロールに付けるアイデンティティベースポリシーと、S3 バケットなどリソース側に付けるリソースベースポリシーです。後者は誰に許可するかを示す Principal の指定が必須です。なお、リソースベースポリシーはすべてインライン (リソースに直接埋め込む形式)で、管理ポリシーのように使い回せるものは存在しません。IAM サービス自体が持つリソースベースポリシーは、ロールの信頼ポリシーただ 1 種類です。
⚠ 明示的に許可していない操作は、デフォルトで拒否されます (暗黙的 Deny)。アクセスを許可するには、必ずどこかのポリシーで Allow を記述する必要があります。
詳しくは、公式ドキュメントの「IAM でのポリシーとアクセス許可」をご覧ください。
MFA (多要素認証)
MFA (Multi-Factor Authentication:多要素認証) は、サインイン時にパスワードに加えてもう 1 つの認証要素を求める仕組みです。パスワードは記憶している「知識要素」ですが、これに「所持要素 (セキュリティキーなど手元にあるもの)」や「生体要素 (指紋など本人そのもの)」を組み合わせることで、パスワードが漏えいしても不正サインインを防げます。MFA は最もシンプルかつ効果的なセキュリティ対策の 1 つです。
サポートしている MFA デバイス
AWS は主に 3 種類の MFA デバイスをサポートしています。
|
種類
|
方式
|
特徴
|
|---|---|---|
|
パスキー / セキュリティキー
|
FIDO2 準拠 |
指紋やタッチで認証。フィッシング耐性が高く、AWS 推奨 |
|
仮想 MFA デバイス
|
TOTP 方式・6 桁コード |
専用デバイス不要。認証アプリでワンタイムコードを発行 |
|
ハードウェア TOTP トークン
|
物理デバイス |
デバイス本体に認証コードを表示。スマホやアプリが不要 |
AWS が最も推奨するのはパスキー / セキュリティキー (FIDO2) です。公開鍵暗号に基づき、認証情報が登録先サイト (AWS)に固有のものになるため、偽サイトに誘導してコードを盗むフィッシングに強いのが理由です。一方、TOTP (6 桁コード)方式は、利用者がコードを読み上げて入力する性質上、攻撃者にコードを聞き出される余地が残ります。特に強力な保護が求められるルートユーザーには、フィッシング耐性のあるパスキー / セキュリティキーの利用が推奨されます。
MFA デバイスは 1 ユーザーあたり最大 8 台まで登録できます。複数登録しておけば、1 台を紛失・故障しても別のデバイスでサインインでき、運用の柔軟性とレジリエンスが高まります。
⚠ すべてのアカウントタイプ (スタンドアロン・管理・メンバー)で、ルートユーザーの MFA 設定が必須です。未設定の場合、最初のサインイン試行から 35 日以内に登録する必要があります。なお、SMS テキストメッセージによる MFA はすでにサポートが終了しています。
詳しくは、公式ドキュメントの「IAM の AWS 多要素認証」をご覧ください。
ポリシーの種類と最小権限の原則
アイデンティティベースポリシーには 3 つの種類があり、用途に応じて使い分けます。あわせて、運用の基本となる「最小権限の原則」も押さえておきましょう。
|
種類
|
管理者
|
再利用
|
特徴
|
|---|---|---|---|
|
AWS 管理ポリシー
|
AWS |
可 (多数) |
AWS が作成・管理する既製のポリシー。使い始めに便利 |
|
カスタマー管理ポリシー (★推奨)
|
自分 |
可 (多数) |
自分で作成し、複数のユーザー / ロールに再利用できる |
|
インラインポリシー
|
自分 |
不可 (1 対 1) |
ユーザー / ロールに直接埋め込む。再利用はできない |
AWS 管理ポリシーは、AWS が用途別に用意した既製のポリシーです (例:ReadOnlyAccess)。すぐ使えて便利な反面、付与される権限が広めなこと、そして新サービス追加時に AWS が内容を自動更新するため、知らないうちに権限が増えうる点には留意が必要です。
カスタマー管理ポリシーは自分で作成して複数のアイデンティティに再利用でき、変更すると新しいバージョンが作られて最大 5 バージョンまで履歴が保存されます。問題があれば過去バージョンへロールバックできるため、多くのケースで推奨されます。インラインポリシーは特定のアイデンティティに 1 対 1 で埋め込むもので、そのアイデンティティを削除するとポリシーも一緒に消えます。ポリシーと対象を厳密に紐付けたい限定的な場面で使います。
最小権限の原則
最小権限の原則とは、ユーザーやロールごとに業務に必要な権限「だけ」を付与する考え方です。最初から広い権限を与えてしまうと、後から絞り込むのは困難です。まずは最小限で設計し、IAM Access Analyzer で継続的に権限範囲を見直すのが安全な進め方です (詳細は IAM Access Analyzer のセクションを参照)。さらに、付与しうる権限の「上限」を別途定めたい場合は、Permissions Boundary (アクセス許可の境界) という高度な機能も使えます。これはアイデンティティベースポリシーが付与できる最大権限を制限するもので、実際の権限は「アイデンティティベースポリシーと境界の積集合」になります (境界自体は権限を付与しません)。
詳しくは、公式ドキュメントの「管理ポリシーとインラインポリシー」をご覧ください。
IAM Access Analyzer
IAM Access Analyzer は、リソースへのアクセス状況を分析し、過剰な権限や意図しない共有を見つけ出すツールです。「最小権限を一度設計して終わり」ではなく、要件の変化に合わせて継続的に保つことを支援します。主に 4 つの機能があります。
|
機能
|
料金
|
内容
|
|---|---|---|
|
外部アクセスの検出
|
無料 |
外部 (パブリック / 他アカウント)との共有を検出 |
|
未使用アクセスの特定
|
有料 |
使われていないロール・アクセスキー・権限を洗い出す |
|
内部アクセスの可視化
|
有料 |
重要リソースに誰がアクセスできるかを把握 |
|
ポリシーの生成・検証
|
無料 / 一部有料 |
操作履歴から最小権限ポリシーを自動生成・検証 |
IAM Access Analyzer の機能について
外部・内部アクセスの分析は「ゾーン オブ トラスト (信頼ゾーン)」という考え方が鍵です。分析対象に組織やアカウントを指定すると、その範囲内のアクセスは「信頼できる」とみなされ、範囲の外からのアクセスだけが検出対象になります。外部アクセスの検出は、リソースベースポリシーを論理的に分析し、信頼ゾーン外 (パブリックや他アカウント)に共有されているリソースを洗い出します (無料)。未使用アクセスの特定は、一定期間使われていない IAM ロール・アクセスキー・コンソールパスワード・権限を検出します (有料)。内部アクセスの可視化は、組織・アカウント内のどのプリンシパルが重要リソースにアクセスできるかを明らかにします (有料)。
ポリシーの生成・検証には、CloudTrail の操作履歴から実際に使われた権限だけのポリシーを自動生成する機能 (無料)と、100 を超えるチェック項目でポリシーの妥当性を確認するポリシー検証 (無料)があります。これらの分析の多くは、数学的証明に裏付けられた「自動推論 (provable security)」によって行われます。さらに、自社のセキュリティ基準への準拠をデプロイ前に検証するカスタムポリシーチェックは有料機能です。
⚠ 未使用アクセス分析は IAM ロール・ユーザー単位で課金されます。ロールとユーザーはグローバルなため、重複課金を避けるにはアカウントごと (または組織ごと)に 1 つのアナライザーに集約し、アナライザーの削除・再作成を繰り返さないことが推奨されます。また、内部アクセスの可視化は組織内の IAM ユーザー・ロールの合計が 70,000 を超える場合は分析結果を生成できないため、大規模組織では対象範囲の分割を検討してください。
詳しくは、公式ドキュメントの「IAM Access Analyzer の使用」をご覧ください。
ポリシー評価の流れ
AWS はリクエストごとに「認証 → ポリシー評価」を行い、アクセスの可否を判断します。複数のポリシーが関わっても結果が一意に定まるよう、可否は決まった優先順位で判定されます。
明示的 Deny (最優先)> 明示的 Allow > 暗黙的 Deny (デフォルト拒否)
判定の流れはこうです。まず、適用されるすべてのポリシー (SCP / RCP、リソースベース、アイデンティティベース、Permissions Boundary、セッションポリシー)の中に Deny が 1 つでもあれば、その時点で拒否が確定します。明示的 Deny は他のどんな Allow よりも優先されます。Deny がなければ次に Allow を探し、見つからなければ拒否 (暗黙的 Deny) になります。デフォルトはすべて拒否なので、許可するには明示的な Allow が必要です。Deny がなく Allow があれば、ようやく許可されます。
アカウントの違いとガードレール
単一アカウントとクロスアカウントの違い
同一アカウント内では、アイデンティティベースポリシーとリソースベースポリシーは和集合で評価されます。どちらか一方でも Allow があれば (かつ Deny がなければ)許可されます。一方、クロスアカウントアクセスでは話が変わり、リクエスト元 (信頼される側)のアイデンティティベースポリシーと、リソース側 (信頼する側)のリソースベースポリシーの積集合で評価されます。両方に Allow が必要で、片方だけでは通りません。
組織のガードレール
AWS Organizations の SCP (サービスコントロールポリシー) と RCP (リソースコントロールポリシー) も評価に加わります。ざっくり言えば、SCP はプリンシパル (ユーザー・ロール)側で、RCP はリソース側で、メンバーアカウントが使える権限の「上限 (ガードレール)」を定めるものです。どちらも権限を「付与」はせず、上限を絞るだけです。SCP で拒否された操作は、たとえアカウント管理者が AdministratorAccess を付けても実行できません。ただし、SCP・RCP は管理アカウントには影響しない点に注意が必要です。なお RCP を有効化すると、既存の権限をそのまま動かし続けるためのデタッチ不可な既定ポリシー RCPFullAWSAccess (すべて Allow)が組織のルートと全アカウントに自動で付与されます。Permissions Boundary やセッションポリシーも同様に上限として働き、最終的な権限はこれらの積集合になります。
⚠ ルートユーザーは例外で、アイデンティティベースポリシーの影響を受けず操作が暗黙的に許可されます (ただしメンバーアカウントのルートユーザーは SCP の制約を受けます)。この特殊性こそ、ルートユーザーの利用を最小限に留めるべき理由です。
詳しくは、公式ドキュメントの「ポリシーの評価論理」をご覧ください。
ユースケース① : 開発チームのアクセス管理
1 つ目のユースケースは、人によるアクセス管理です。職務ごとに IAM グループを作り、業務に必要な最小限の権限だけを付与します。職務単位で分けておくと、担当外の操作を防げるうえ、誤操作やインシデント時の影響範囲も小さく抑えられます。
開発チームのアクセス権限の一例
例えば開発チームを、次の 3 つの職務グループに分けて管理します。
|
職務
|
権限
|
内容
|
|---|---|---|
|
監査
|
監査用 (SecurityAudit 相当) |
構成・権限・証跡の確認のみ、変更不可 |
|
運用・閲覧
|
読取専用 (ReadOnlyAccess 相当) |
リソースやログの参照のみ |
|
開発者
|
編集可能 |
担当リソースの参照・作成・更新・削除 (例:Lambda / Amazon DynamoDB) |
SecurityAudit と ReadOnlyAccess はどちらも AWS 管理ポリシーです。SecurityAudit はセキュリティ構成のメタデータを読み取る権限を提供し、監査担当に向いています。ReadOnlyAccess は AWS サービス全般への読み取り専用アクセスを提供します。開発者グループには、担当するサービス (例:Lambda・Amazon DynamoDB) に絞ったカスタマー管理ポリシーを割り当てると、編集権限を持たせつつ最小権限を保てます。
⚠ 開発者にリソース作成権限を与える際は iam:PassRole の扱いに注意してください。対象リソースを * にすると、開発者が Lambda 関数や EC2 インスタンスに任意のロール (管理者ロールを含む)を渡せてしまい、権限昇格につながります。例えば、自身は管理者権限を持たない開発者が、管理者ロールを付けた Lambda 関数を作成して任意のコードを実行させれば、その関数を踏み台に管理者相当の操作ができてしまいます。PassRole は渡してよいロールの ARN に限定しましょう。
なお、人によるサインインには、単一アカウントか複数アカウントかにかかわらず、アカウントごとに IAM ユーザーを作るのではなく IAM Identity Center でユーザー・グループを作成し一元管理するのが推奨です (詳細はIAM ユーザー と IAM Identity Center のセクションを参照)。
詳しくは、公式ドキュメントの「AWS ジョブ機能の管理ポリシー」をご覧ください。
ユースケース②:AWS サービス間のアクセス委任
2 つ目は、アプリケーションや AWS サービスからのアクセスです。EC2 や Lambda などに IAM ロールを付与すると、アクセスキーを埋め込まずに他の AWS リソースへ安全にアクセスできます。認証情報は自動で発行・更新されるため、キーの管理から解放されます。
EC2 インスタンスから S3 バケットへアクセスする場合、流れは次のようになります。
- EC2 インスタンスに、インスタンスプロファイルを通じて IAM ロールを付与する
- インスタンスはロールを引き受け、一時的な認証情報を取得する
- その認証情報を使って S3 バケットにアクセスする
インスタンスプロファイルは、IAM ロールの情報を EC2 インスタンスに渡すためのコンテナです。コンソールで EC2 用のロールを作成すると、同名のインスタンスプロファイルが自動作成されます。インスタンス内のアプリケーションは、インスタンスメタデータサービス (IMDS) から認証情報を取得します。この認証情報は AWS によって自動的にローテーションされ、古いものが失効する 5 分以上前に新しい認証情報が用意されるため、アプリ側で更新を意識する必要はありません。なお、認証情報の取得には、SSRF (サーバーを悪用して、本来は外部から見えない内部情報を引き出す攻撃)などに強い IMDSv2 (セッショントークンを使う方式)の利用が推奨されています。新しい AMI やコンソールからの起動では IMDSv2 が使われることが多いものの、これはアカウントレベルの IMDS デフォルト設定に依存するため、起動方法だけで無条件に IMDSv2 が強制されるわけではない点には留意してください。
Lambda では「実行ロール」、ECS では「タスクロール」というように、サービスごとに同様の仕組みでロールを付与できます。いずれの場合も、アプリケーションのコードや設定ファイルにアクセスキーを書き込む必要はありません。
⚠ アクセスキーのハードコード (コードや設定ファイルへの直接埋め込み)は厳禁です。リポジトリへの誤コミットなど、漏えいの最大の原因になります。AWS サービスからのアクセスには必ず IAM ロールを使いましょう。
詳しくは、公式ドキュメントの「Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス許可を付与する」、IMDSv2 については「インスタンスメタデータサービスを使用してインスタンスメタデータにアクセスする」をご覧ください。
制限事項・注意点
IAM を運用するうえで、把握しておくべきクォータ (上限値)と注意点があります。主要なクォータは Service Quotas から引き上げを申請できますが、一部は引き上げできません。
|
リソース
|
デフォルト
|
上限
|
|---|---|---|
|
IAM ユーザー / アカウント
|
5,000 |
引き上げ不可 |
|
IAM ロール / アカウント
|
1,000 |
最大 10,000 |
|
カスタマー管理ポリシー / アカウント
|
1,500 |
最大 10,000 |
|
ロールあたり管理ポリシー
|
10 |
最大 25 |
|
アクセスキー / ユーザー
|
2 |
引き上げ不可 |
IAM ユーザーの上限が 5,000 で引き上げ不可なのは、多数のユーザーを抱える規模では IAM ユーザーではなくフェデレーション (IAM Identity Center など) を使うべき、という設計思想の表れでもあります。アクセスキーが 1 ユーザーあたり 2 個までなのは、無停止でのローテーション (新キーを発行して切り替えた後に旧キーを無効化する) を想定した設計です。クォータの引き上げは Service Quotas コンソール (米国東部 (バージニア北部リージョン) から申請でき、引き上げ可能なものは上限までの範囲なら数分で自動承認されます。
よくある誤解
1. IAM は結果整合性です。ユーザー・グループ・ロール・ポリシーの作成や変更が、世界中のすべてのエンドポイントへ即座に反映されるとは限りません。サーバー間・リージョン間のデータ伝播やキャッシュにより、変更が見えるまで時間差が生じることがあります。そのため、IAM の変更はアプリケーションの重要な処理経路 (クリティカルパス)には組み込まず、初期化やセットアップの処理にまとめ、反映を確認してから本番ワークフローを動かすことが推奨されます。
2. ポリシーにはサイズ上限があります。管理ポリシーは 1 つあたり最大 6,144 文字です。上限に達した場合は、ポリシーを複数に分割するか、ロールを分けて権限を分散させて対応します。
詳しくは、公式ドキュメントの「IAM と AWS STS クォータ」をご覧ください。
IAM ユーザー と IAM Identity Center
IAM は単一アカウント内の ID・権限管理の基盤です。これに対し IAM Identity Center (旧 AWS SSO)は、複数アカウントへの「人」によるアクセスを一元管理する上位レイヤーに位置づけられます。両者は競合するものではなく、役割分担の関係にあります。
|
特性
|
IAM ユーザー
|
IAM Identity Center
|
|---|---|---|
|
対象
|
単一アカウントの ID 管理 |
複数アカウントを一元管理 |
|
認証情報
|
長期 (パスワード・アクセスキー) |
一時 (フェデレーション) |
|
推奨用途
|
互換性目的の限定利用 |
人による AWS アクセス全般 ★推奨 |
IAM ユーザー と IAM Identity Center の使い分け
IAM ユーザーは長期的な認証情報を持つため、漏えい時のリスクが相対的に高くなります。そこで AWS は、組織の規模を問わず、人によるサインインには IAM Identity Center を使うことを推奨しています。Identity Center を使うと、社内の既存 IdP (Microsoft Entra ID、Okta、Active Directory など) と一度連携するだけで、従業員は使い慣れた認証情報で複数の AWS アカウントやアプリケーションにシングルサインオンできます。各アカウントへのアクセスは「許可セット (Permission Set)」で定義し、その実体はアカウント側に作られる IAM ロール (=一時的な認証情報)として動作します。これにより、長期的な認証情報を持つ IAM ユーザーを各アカウントに作らずに済みます。
では IAM ユーザーは不要かというと、そうではありません。IAM Identity Center や OIDC / SAML フェデレーションに対応していない外部ツール、長期的な認証情報を前提とする一部のオンプレミス連携など、限定的な用途では今も有効です。重要なのは使い分けで、人のアクセスには Identity Center、アプリケーションなどのプログラム (ワークロード) のアクセスには IAM ロール (一時的な認証情報)を使う、というのが現在の基本方針です。
詳しくは、公式ドキュメントの「IAM Identity Center とは何ですか?」をご覧ください。
IAM の利用料金
IAM 本体 (ユーザー・ロール・ポリシー・グループ・MFA など)は追加料金なしで使えます。従量課金が発生するのは、IAM Access Analyzer の一部機能だけです。
無料で使えるもの
- IAM 本体: ユーザー・ロール・ポリシー・グループ・MFA
- Access Analyzer の外部アクセス分析 : パブリック / クロスアカウント共有の検出
- Access Analyzer のポリシー検証・生成 : 100 を超えるチェックと、CloudTrail からのポリシー自動生成
料金は変更される場合があります。詳しくは、「AWS IAM Access Analyzer の料金」でご確認ください。
従量課金 (Access Analyzer)
|
機能
|
料金
|
|---|---|
|
内部アクセス分析
|
$9.00 / リソース / リージョン / 月 |
|
未使用アクセス分析
|
$0.20 / ロール・ユーザー / 月 |
|
カスタムポリシーチェック
|
$0.0020 / API コール |
例えば未使用アクセス分析を、ロール 60 個・ユーザー 10 個のアカウントで有効にすると、月額は $0.20 × 70 = $14 です。内部アクセス分析は監視するリソース数とリージョン数に、カスタムポリシーチェックは API の呼び出し回数に比例します。いずれも IAM 本体とは別の課金である点を押さえておきましょう。
参考資料
IAM についてさらに学ぶための公式リソースです。QR コードから各リソースにアクセスできます。
各リソースの使い分け:
- 公式ドキュメント : IAM の全機能・API・設定値の正確な確認
- ベストプラクティス : 最小権限・一時的な認証情報・MFA などの設計指針
- AWS Black Belt : 体系的な学習や機能の深掘り
- AWS ブログ : 新機能の GA 情報やセキュリティ強化の最新情報
なお、英語版の公式ドキュメントは日本語版より更新が早い場合があります。最新の仕様確認には英語版も参照することをおすすめします。
⚠ 本記事は 2026 年 8 月時点の情報です。料金や仕様は変更される場合があるため、最新情報は公式ドキュメントをご確認ください。
まとめ
最後に、本記事で解説した IAM の主要な機能とポイントを一枚にまとめた図をご覧ください。ぜひ保存してご活用ください。 IAM の本質は「AWS リソースへの認証と認可を一元管理する、セキュリティの土台」です。きめ細かなアクセス制御、一時的な認証情報、追加料金なしという 3 つの特徴を基盤に、アイデンティティ (ユーザー・グループ・ロール)、ポリシー、MFA、そして Access Analyzer による継続的な見直しが組み合わさっています。
設計時に押さえておきたいポイント
- ルートユーザーは封印し、MFA を必須に : ルートユーザーは IAM ポリシーで制限できないため、日常操作には使わず MFA で保護します。フィッシング耐性の高いパスキー / セキュリティキーが推奨です。
- 長期的な認証情報より一時的な認証情報を : 人のアクセスには IAM Identity Center、プログラムのアクセスには IAM ロールを使い、アクセスキーのハードコードは避けます。
- 最小権限で設計し、継続的に見直す : まずは必要な権限だけを付与し、IAM Access Analyzer で過剰・未使用の権限を洗い出して絞り込みます。iam:PassRole の範囲指定など、権限昇格につながる設定にも注意します。
- 評価ロジックを理解する : 「明示的 Deny > 明示的 Allow > 暗黙的 Deny」と、クロスアカウントでは両側の Allow が必要なこと、SCP / RCP・Permissions Boundary が上限として働くことを押さえます。
IAM でつまずくポイントは、機能の複雑さそのものではなく、「許可ポリシーだけで完結しない」という前提にあります。信頼ポリシーと許可ポリシー、SCP / RCP、Permissions Boundary という複数の壁が同時に効いており、意図した権限が通らないときは、まずどの壁で止まっているかを見極めることが近道です。本記事が、その見極めの手がかりとなれば幸いです。
筆者プロフィール
米倉 裕基
アマゾン ウェブ サービス ジャパン合同会社
テクニカルライター・イラストレーター
日英テクニカルライター・イラストレーター・ドキュメントエンジニアとして、各種エンジニア向け技術文書の制作を行ってきました。趣味は娘に隠れてホラーゲームをプレイすることと、暗号通貨自動取引ボットの開発です。現在、AWS や機械学習、ブロックチェーン関連の資格取得に向け勉強中です。
監修者プロフィール
伊勢田 氷琴
アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト
普段は業種業界問わず幅広いお客様の技術支援に携わっています。最近は Strands Agents や Amazon Bedrock AgentCore など AI エージェントの実装技術やビジネスとしての生成 AI 活用に関心を持ち、ブログや講演で積極的に情報発信を行なっています。
伊藤 広記
アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト
普段は通信業界のお客様を中心に技術支援をおこなっています。オンプレミスとのハイブリッド構成やネットワークの自動化に関心があります。