AWSのIAMとは?3つの機能でできることをやさしく解説

AWS IAMとは?どんなことができるの?
AWS IAMの使い方を知りたい

AWS(Amazon Web Services)はAmazonが提供しているクラウドサービスで、多くの企業がアプリ開発やシステムの運用に導入しています。

それではAWS IAMとは何でしょう?IAM(Identity and Access Management)は「アイアム」と発音します。

この記事ではAWSのIAMについて、できることや使い方までわかりやすく解説します。AWSの学習にIAMの知識は欠かせないので、この機会にAWS IAMについて把握しておきましょう。

目次

【いまさら聞けない】AWSのIAMとは?

AWSのIAMとは?

画像:AWSのIAMとは?

IAM(Identity and Access Management)は、契約しているAWS(Amazon Web Services)のサービスにアクセスして操作する、認証や認可を設定・管理する機構です。

ここではAWS IAMのおもな役割として、以下の2つについて解説します。

  • AWS IAMはユーザーやグループごとに権限を分けられる
  • AWS IAMで設定できる「認証」と「認可」の違いは?

まずは、IAMユーザーとIMAグループについて見ていきましょう。

AWS IAMはユーザーやグループごとに権限を分けられる

AWSを利用する場合、AWSアカウントを作成してサービスごとに利用契約を結びます。AWSアカウントで契約したサービスに、アクセスして操作できる権限を付与した人をIAMユーザーと言います。

IAMではIAMユーザーごとに細かくアクセスや操作の権限を設定でき、複数のIAMユーザーをIAMグループにすると、まとめて権限を設定することが可能です。権限を付与する対象が人の場合にはIAMユーザーですが、権限を付与する対象がAWSのサービスやアプリケーションの場合にはIAMロールを使用します。

IAMロールについては後述します。

AWS IAMで設定できる「認証」と「認可」の違いは?

AWS IAMで設定できる「認証」と「認可」の違いは?

画像:AWS IAMで設定できる「認証」と「認可」の違いは?

AWSにおけるIAMの役割はIAMユーザーの認証と認可です。「認証」と「認可」は言葉としては似ていますが、異なる機能を意味しています。

  • 認証:アクセスしようとしているのが、どのIAMユーザーかを特定する
  • 認可:IAMユーザーに個別に設定されている、アクセスと操作の権限のみを許可する

つまり、認証はその人が誰なのかを特定し、認可はその人に決められた権限を許可する機構です。次節では、AWS IAMが管理している3つの機能について解説します。

AWS IAMで利用できる3つの機能とは?

AWS IAMで利用できる3つの機能

画像:AWS IAMで利用できる3つの機能

IAMを利用して管理できる機能は、大きく分けると次の3つ。

  • IAMユーザー・IAMグループ
  • IAMポリシー
  • IAMロール

少し難しい内容になっていきますが、ひとつずつ見ていきましょう。

IAMユーザー・IAMグループ

AWSのサービスの利用を開始するのに使用したAWSアカウントでサービスにログインすると、すべての権限を持ったrootユーザーという存在になります。日常業務でサービスにアクセスして操作するのに、何でもできるrootユーザーを使用すると、取り返しのつかないミスをしてしまう可能性も……。

通常、サービスにアクセスして操作する際にはAWSアカウントは使用せず、IAMユーザーとして登録・権限設定したアクセス権を使います。個人に対してひとつのIAMユーザーを割り当てることで、個別に適切な権限を設定でき、ログとしてアクセスや操作の記録を残せます。

また、複数のIAMユーザーをひとつのIAMグループにすると、一度に権限設定できて便利です。

IAMポリシー

IAMポリシー

画像:IAMポリシー

IAMユーザーやIAMロール(後述します)に付与する操作権限を、IAMポリシーにJSON形式で記述します。JSON(JavaScript Object Notation)は、データ交換に使用されることの多いデータフォーマット形式です。

IAMポリシーの作成方法には以下の3つがあります。

  • AWS管理ポリシーをカスタマイズする:AWSが用意してあるポリシーを使用する方法
  • Policy Generator:質問形式のツールに条件を入力することで、IAMポリシーを生成する方法
  • インラインポリシー:独自にIAMポリシーを作成する方法

IAMグループにIAMポリシーを設定すると、IAMグループに登録されているIAMユーザーすべてに同じIAMポリシーを適用できます。

IAMロール

前に述べたIAMユーザーは個人に対して、AWSのサービスへのアクセスや操作の権限を付与するもの。それに対してIAMロールは、AWSで開発しているアプリケーションなどのコンテンツやサービスに操作権限(IAMポリシー)を付与する仕組みです。

IAMロールを使用すると、プログラミングコードに認証パスワードなどの情報を記述する必要がなくなり、セキュリティを高められます。コードに認証パスワードなどのセキュアな情報が記述されていると、コードの汎用的な利用の際に漏出したり、委託先にバックアップとして保管されたままになります。

次節ではAWS IAMを利用する際の流れについて、解説していきましょう。

【すぐわかる】AWS IAM利用の流れを2つのケースで解説!

AWS IAM利用の流れ

画像:AWS IAM利用の流れ

AWSにおいてIAMを利用する流れの具体例として、次の2つのケースを想定します。

  • ユーザーごとに権限を設定したい場合
  • アプリ開発などで、AWSのサービスに権限を付与したい場合

一つひとつ詳しく見ていきましょう。

【ケース1】ユーザーごとに権限を設定したい場合

基本的な流れは次の通り。

  1. AWSアカウントでAWSの利用を開始する
  2. サービスにアクセスして操作するユーザーを、IAMユーザーとして登録する
  3. IAMユーザーごとにIAMポリシーで操作権限を設定する

AWSのサービスにIAMユーザーとして登録しただけではアクセスできず、必ずIAMポリシーでの設定が必要です。複数のIAMユーザーをIAMグループにして、操作権限をひとつのIAMポリシーで設定することもできます。

【ケース2】アプリ開発などで、AWSのサービスに権限を付与したい場合

開発しているアプリケーションに、操作権限を付与する際の手順は次のようになります。

  1. 開発しているアプリのEC2(サーバーの役割をするAWSのサービス)にIAMロールを付随(アタッチとも言います)させる
  2. アプリから他のAWSのサービスにアクセスして操作する、権限設定を記述したIAMポリシーを作成する
  3. アプリのEC2にアタッチしたIAMロールに、作成したIAMポリシーを設定する

IAMユーザーに設定できるIAMポリシーはひとつだけですが、IAMロールにはアクセスするAWSのサービスの数だけIAMポリシーを作成して設定します。

AWS IAMを設定するときの注意点

AWS IAMを設定するときの注意点

画像:AWS IAMを設定するときの注意点

最後にAWSにおいてIAMを設定する際に、必ず注意してほしいことを書いておきます。

IAMユーザーにしてもIAMロールにしても作成した時点では、何の権限もありません。しかし、個別に権限を設定するIAMポリシーで、どんなことでもできる権限を付与することもできます。

IAMユーザーやIAMグループに個別に権限を設定するのが面倒だからといって、すべての権限を付与するのは適切ではありません。セキュリティ的な理由だけではなく、関わっていない領域の設定を変えてしまったり、間違えてデータを消去してしまうなどのミスの原因になります。

IAMユーザーやIAMグループに操作権限を設定する際には、最初は最小限の権限にとどめ、後から必要に応じて権限を追加していく方法が推奨されています。ひとつのIAMユーザーを複数のIAMグループの所属にすることもできるので、IAMグループをうまく活用すると、柔軟な設定も可能です。

まとめ

AWS IAMについて解説し、機能や利用方法、注意点にも言及しました。

IAMは、アプリ開発などでAWSのサービスを利用する際に必ず使用する機能です。セキュリティや利便性に優れた仕組みなので、しっかりと理解しておく必要があります。

クラウドサービスは仮想環境で物体としては存在しませんが、実体のある仕組みで成り立っていることに違いはありません。複雑であっても、構造と機能について順を追って見ていくと理解しやすいでしょう。AWSのクラウドサービスは多くの企業が導入しているので、IAMについても知っておくと役に立つ知識です。

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン
【SNS】
X(旧:Twitter)/Instagram/YouTube/Facebook

目次