IAMグループとIAMロールとは?違いと使い分けを初心者向けに解説

  • URLをコピーしました!

前の記事では、AWSのアクセス権限を定義する IAMポリシーについて学びました。

IAMポリシーを使えば、 「S3を読み取れる」「EC2を起動できる」といった権限を定義できます。

しかし、実際にAWSを利用すると次のような場面が出てきます。

複数のIAMユーザーへ同じ権限をまとめて設定したい。
EC2からS3へ安全にアクセスさせたい。

この2つは同じ仕組みで実現する?

ここで登場するのが IAMグループIAMロールです。

名前が似ているため混同しやすいですが、 この2つは目的が大きく異なります。

☁ AWS BEGINNER

この記事はAWS初級講座の一部です。 AWSを基礎から順番に学びたい場合は、講座一覧から学習順を確認できます。

AWS初級講座を見る →
LESSON GOAL この記事のゴール

IAMグループとIAMロールの役割を理解し、 「ユーザーをまとめるならグループ」「一時的に権限を利用するならロール」 と判断できる状態を目指します。

目次

IAMグループとIAMロールの違い

まずは、2つの違いをシンプルに整理してみましょう。

IAM GROUP IAMグループ

複数のIAMユーザーをまとめて権限管理する

VS
IAM ROLE IAMロール

必要な主体が一時的な権限を利用する

グループ = IAMユーザーをまとめる ロール = 必要なときに権限を引き受ける

まずはこの違いを覚えてから、 それぞれの仕組みを詳しく見ていきましょう。

IAMグループとは?

IAMグループ(IAM User Group)とは、 複数のIAMユーザーをまとめて管理するための仕組みです。

たとえば、3人の開発担当者がいて、 全員に同じ権限を与えたいとします。

USER 田中さん
USER 佐藤さん
USER 鈴木さん

それぞれへ個別に同じIAMポリシーを設定することもできますが、 ユーザーが増えるほど管理が複雑になります。

そこで、たとえば DevelopersというIAMグループを作成します。

IAM POLICY 開発者用の権限
IAM GROUP Developers
USER 田中さん
USER 佐藤さん
USER 鈴木さん

IAMポリシーをDevelopersグループへ設定すると、 グループに所属するIAMユーザーがその権限を利用できます。

POINT IAMグループ自体がログインするわけではない

実際にAWSへアクセスするのはIAMユーザーです。 IAMグループは、IAMユーザーの権限管理をしやすくするための仕組みです。

IAMユーザーは複数のグループに所属できる

1人のIAMユーザーが所属できるIAMグループは、 1つだけではありません。

たとえば、あるユーザーを DevelopersReadOnlyの 両方へ所属させることもできます。

IAM USER User A
GROUP Developers
GROUP ReadOnly

IAMグループを利用することで、 役割ごとに権限を整理しやすくなります。

IAMグループについて覚えておきたいこと

01 IAMユーザーをまとめる

複数ユーザーの権限を管理しやすくする

02 ポリシーを設定できる

グループのユーザーがその権限を利用する

03 グループの入れ子は不可

IAMグループの中へ別のIAMグループは入れられない

IAMロールとは?

続いて、 IAMロール(IAM Role)を見てみましょう。

IAMロールは、 必要な主体が引き受けることで、決められた権限を一時的に利用できる仕組み です。

ENTITY 利用する主体
ASSUME IAM ROLE 権限を引き受ける
RESOURCE AWSリソース

IAMユーザーとの大きな違いは、 IAMロールには通常のIAMユーザーのような 長期的なパスワードやアクセスキーが紐付いていない ことです。

IAMロールを引き受けると、 そのロールに応じた 一時的な認証情報を利用できます。

IAMロールはどんなときに使う?

IAMロールの代表的な利用例が、 AWSサービスから別のAWSサービスへアクセスする場面 です。

例として、 EC2上で動作するアプリケーションから S3のファイルを取得する場合を考えてみましょう。

アクセスキーをEC2へ保存する方法

× NOT RECOMMENDED
EC2 アクセスキーを保存
Amazon S3

EC2内部へ長期的なアクセスキーを保存すると、 認証情報の管理が必要になり、 漏えいなどのリスクも生まれます。

IAMロールを利用する方法

✓ IAM ROLE
EC2
IAM Role S3への権限
Amazon S3

EC2に適切なIAMロールを関連付けることで、 アプリケーションは必要な権限を 一時的な認証情報を使って利用できます。

IMPORTANT 長期的なアクセスキーをEC2へ保存しなくてよい

AWSサービスから別のAWSサービスへアクセスするときは、 IAMロールが重要な役割を持ちます。

IAMロールはEC2だけが使うものではない

IAMロールはEC2専用の仕組みではありません。

AWS SERVICE AWSサービス

EC2やLambdaなどが必要な権限を利用

USER ユーザー

必要に応じて別の権限を持つロールを引き受ける

ACCOUNT 別AWSアカウント

クロスアカウントアクセスなどで利用

初級ではすべての利用パターンを覚える必要はありません。

まずは 「IAMロールは必要な主体が権限を一時的に利用するための仕組み」 と理解しておきましょう。

IAMポリシーとIAMロールは何が違う?

ここは初心者が特に混同しやすいポイントです。

IAM POLICY 何ができる?

S3を読み取れる
EC2を起動できる
などの権限を定義

IAM ROLE 誰がその権限を利用する?

AWSサービスやユーザーなどが 必要に応じて引き受ける

つまりIAMロールの権限も、 IAMポリシーによって定義されます。

ポリシー = 権限の内容 ロール = その権限を引き受ける仕組み

IAMユーザー・グループ・ロールを整理しよう

ここまで学んだ3つを並べると、 違いが分かりやすくなります。

項目 IAMユーザー IAMグループ IAMロール
主な役割 個別のIAMアイデンティティ IAMユーザーをまとめる 権限を引き受ける
IAMポリシー 設定できる 設定できる 設定できる
長期認証情報 持つ場合がある 持たない 持たない
代表的な用途 特定用途のIAMアクセス IAMユーザーの権限管理 AWSサービス・一時的な権限委任
補足

現在のAWSでは、人がAWSへアクセスする場合、 長期的なIAMユーザー認証情報だけに依存するのではなく、 フェデレーションなどを利用して一時的な認証情報を使用する方法が推奨されています。

理解度チェック:グループとロールを使い分けよう

実際の状況を見て、 IAMグループとIAMロールのどちらを使うか判断してみましょう。

IAM SIMULATOR

この場面では何を使う?

SCENARIO 1 / 3

どちらを使うか考えてみましょう

「ユーザーをまとめる」のか「権限を引き受ける」のかがポイントです。

初心者が間違えやすいポイント

① IAMグループとIAMロールは同じもの

× WRONG どちらもユーザーをまとめるための機能

IAMグループは IAMユーザーをまとめて権限管理する仕組みです。

IAMロールは 必要な主体が権限を引き受けるための仕組みです。

② IAMロールにはアクセスキーを保存しておく

IAMロールはIAMユーザーのような 長期的なアクセスキーを持つ仕組みではありません。

ロールを引き受けると、 一時的な認証情報が利用されます。

③ IAMグループの中にIAMグループを作れる

IAMグループには IAMユーザーを所属させます。

グループの中へ別のグループを入れる グループの入れ子構造は作れません。

確認問題:IAMグループとIAMロールを理解できたか確認しよう

QUESTION 01

IAMグループの主な役割はどれですか?

正解:B

IAMグループを利用すると、 複数のIAMユーザーへ共通する権限をまとめて管理できます。

QUESTION 02

EC2からS3へ安全にアクセスさせたい場合、適切なのはどれですか?

正解:C

EC2などのAWSサービスから別のAWSサービスへアクセスするときは、 IAMロールを利用することで長期的なアクセスキーを EC2へ保存せずに権限を利用できます。

QUESTION 03

IAMロールの特徴として正しいものはどれですか?

正解:A

IAMロールは長期的な認証情報を持たず、 ロールを引き受けた際に一時的な認証情報を利用します。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

IAMグループは 複数のIAMユーザーをまとめて権限管理する仕組み

02

IAMグループへポリシーを設定すると、 所属するIAMユーザーがその権限を利用できる

03

IAMロールは 必要な主体が権限を引き受けるための仕組み

04

IAMロールは長期認証情報ではなく、 一時的な認証情報を利用する

05

EC2などのAWSサービスから別のサービスへアクセスするときも IAMロールが重要

次はAmazon Cognitoを理解しよう

ここまで学習したIAMでは、 AWS環境へアクセスするための 認証・認可や権限管理について学んできました。

しかし、AWS上にWebアプリケーションを作った場合、 もう1つ別の「ユーザー」を考える必要があります。

AWS IAM AWSを利用するためのアクセス管理
APP USERS Web・アプリを利用するユーザー

たとえばECサイトを作った場合、 そのサイトを利用する一般ユーザーに IAMユーザーを1人ずつ作成するわけではありません。

そこで登場するサービスの1つが Amazon Cognitoです。

次の記事では、 アプリケーションのユーザー認証を実現する Amazon Cognitoの基本を学びます。

NEXT LESSON

次は「Amazon Cognito」を学びましょう

AWSを操作するユーザーではなく、 Webサイトやアプリケーションを利用するユーザーを どのように認証するのかを学びます。

IAMとCognitoの違いにも注目しましょう。

Amazon Cognitoの基本を理解する
AWS BEGINNER

AWS初級講座の一覧へ戻る

AWS初級の学習順を確認したい場合は、 講座一覧へ戻りましょう。

← AWS初級講座へ戻る
目次