IAMとは
IAM(アイアム:AWS Identity and Access Management)とは、AWS内のリソースに対するアクセス権限を安全に、かつきめ細かく一元管理するためのグローバルサービスです。AWS環境において「誰が(Identity)」「どのAWSリソースに対して(Resource)」「どのような操作を(Action)」「どのような条件下で(Condition)」実行できるかを制御する、セキュリティの根幹をなす門番のような役割を果たします。IAMを利用することで、組織内のメンバー一人ひとりに個別のログインID(IAMユーザー)を発行し、それぞれの業務に必要な最小限の権限だけを割り当てることができます。IAM自体は無料で利用でき、AWSのセキュリティベストプラクティスを実践する上で最初に設定すべき最も重要なサービスの一つです。
具体例
IAMの仕組みを会社組織のセキュリティカード(入退室管理システム)に例えてみましょう。会社のビル(AWSアカウント)には、社長、一般社員、アルバイト、外部のシステム保守業者など様々な人が出入りします。
ここで、全員に「すべての部屋の鍵(全権限)」を渡してしまうと、アルバイトが機密情報の保管庫に自由に入れてしまい、重大なセキュリティ事故に繋がる危険性があります。
そこでIAMの出番です。IAMを使うと、社員一人ひとりに名前入りの「IDカード(IAMユーザー)」を発行できます。さらに、そのカードには「どの部屋に入れるか(IAMポリシー)」という権限をプログラムします。例えば、「開発部のAさんには、開発用サーバー(EC2)を起動・停止する権限を与えるが、本番環境のデータベース(RDS)にはアクセスさせない」「経理部のBさんには、請求情報(Billing)の閲覧権限だけを与え、サーバーの操作権限は一切与えない」といった細かな制御が可能になります。これにより、事故や不正操作のリスクを未然に防ぐことができます。
もう少し詳しく
IAMを構成する主要な要素には、主に「IAMユーザー」「IAMグループ」「IAMロール」「IAMポリシー」の4つがあります。IAMユーザーは、実際の人間やアプリケーションに対して発行される個別のアカウントです。IAMグループは、同じ権限を必要とする複数のIAMユーザーを束ねるための入れ物であり、「開発者グループ」「管理者グループ」のようにまとめ、グループに対して権限を付与することで管理の手間を大幅に省くことができます。
IAMポリシーは、「S3バケットの読み取りを許可する」といった具体的なアクセス権限のルールをJSON形式で記述したドキュメントです。これをユーザーやグループにアタッチ(紐付け)することで、権限が有効になります。IAMの設計においては、利用者に必要最低限の権限のみを付与する「最小権限の原則」を徹底することが強く推奨されています。
さらに、IAMは多要素認証(MFA)をサポートしており、IDとパスワードだけでなく、スマートフォンアプリなどで生成されるワンタイムパスワードを組み合わせることで、アカウント乗っ取りの脅威から強力に保護します。また、パスワードの長さや複雑さ、定期的な変更を強制する「パスワードポリシー」の設定も可能です。最近では、より大規模な組織向けに「AWS IAM Identity Center(旧AWS SSO)」が推奨されるケースも増えていますが、基盤となるアクセス制御の仕組みはIAMが担っています。IAMは特定のリージョン(地域)に依存しないグローバルサービスであるため、一度設定すれば世界中のすべてのAWSリージョンに適用されます。
試験でのポイント
AWS認定クラウドプラクティショナー(CLF-C02)試験において、IAMはセキュリティ分野で最も重要なトピックです。必ず押さえておくべきポイントは以下の通りです。
1つ目は、IAMの目的が「認証(Authentication:誰か)」と「認可(Authorization:何ができるか)」を管理することである点です。
2つ目は、日常的な作業において、全権限を持つ「ルートユーザー」を使用せず、個別の「IAMユーザー」を作成して作業することがベストプラクティスであるという点です。ルートユーザーはアカウント作成時のみ使用し、MFAを設定して封印するべきです。
3つ目は、「IAMロール」と「IAMユーザー」の違いです。IAMロールは永続的な認証情報(パスワードなど)を持たず、EC2インスタンスなどのAWSサービスや外部ユーザーに「一時的な権限」を付与するために使用されます。
4つ目は、IAMは無料で提供されているグローバルサービスである点です。これらの概念の定義とユースケースの違いを問われる問題が頻出します。
関連する用語
関連用語として、全てのリソースへの完全なアクセス権を持つ「ルートユーザー」、一時的な権限を付与するための「IAMロール」、具体的な権限ルールを定義する「IAMポリシー」があります。これらはIAMのエコシステムを構成する重要な要素です。