AWS IAMの使い方を知りたい
AWS(Amazon Web Services)はAmazonが提供しているクラウドサービスで、多くの企業がアプリ開発やシステムの運用に導入しています。
それではAWS IAMとは何でしょう?IAM(Identity and Access Management)は「アイアム」と発音します。
この記事では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の役割はIAMユーザーの認証と認可です。「認証」と「認可」は言葉としては似ていますが、異なる機能を意味しています。
- 認証:アクセスしようとしているのが、どのIAMユーザーかを特定する
- 認可:IAMユーザーに個別に設定されている、アクセスと操作の権限のみを許可する
つまり、認証はその人が誰なのかを特定し、認可はその人に決められた権限を許可する機構です。次節では、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ポリシーに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を利用する流れの具体例として、次の2つのケースを想定します。
- ユーザーごとに権限を設定したい場合
- アプリ開発などで、AWSのサービスに権限を付与したい場合
一つひとつ詳しく見ていきましょう。
【ケース1】ユーザーごとに権限を設定したい場合
基本的な流れは次の通り。
- AWSアカウントでAWSの利用を開始する
- サービスにアクセスして操作するユーザーを、IAMユーザーとして登録する
- IAMユーザーごとにIAMポリシーで操作権限を設定する
AWSのサービスにIAMユーザーとして登録しただけではアクセスできず、必ずIAMポリシーでの設定が必要です。複数のIAMユーザーをIAMグループにして、操作権限をひとつのIAMポリシーで設定することもできます。
【ケース2】アプリ開発などで、AWSのサービスに権限を付与したい場合
開発しているアプリケーションに、操作権限を付与する際の手順は次のようになります。
- 開発しているアプリのEC2(サーバーの役割をするAWSのサービス)にIAMロールを付随(アタッチとも言います)させる
- アプリから他のAWSのサービスにアクセスして操作する、権限設定を記述したIAMポリシーを作成する
- アプリのEC2にアタッチしたIAMロールに、作成したIAMポリシーを設定する
IAMユーザーに設定できるIAMポリシーはひとつだけですが、IAMロールにはアクセスするAWSのサービスの数だけIAMポリシーを作成して設定します。
AWS IAMを設定するときの注意点
最後にAWSにおいてIAMを設定する際に、必ず注意してほしいことを書いておきます。
IAMユーザーにしてもIAMロールにしても作成した時点では、何の権限もありません。しかし、個別に権限を設定するIAMポリシーで、どんなことでもできる権限を付与することもできます。
IAMユーザーやIAMグループに個別に権限を設定するのが面倒だからといって、すべての権限を付与するのは適切ではありません。セキュリティ的な理由だけではなく、関わっていない領域の設定を変えてしまったり、間違えてデータを消去してしまうなどのミスの原因になります。
IAMユーザーやIAMグループに操作権限を設定する際には、最初は最小限の権限にとどめ、後から必要に応じて権限を追加していく方法が推奨されています。ひとつのIAMユーザーを複数のIAMグループの所属にすることもできるので、IAMグループをうまく活用すると、柔軟な設定も可能です。
まとめ
AWS IAMについて解説し、機能や利用方法、注意点にも言及しました。
IAMは、アプリ開発などでAWSのサービスを利用する際に必ず使用する機能です。セキュリティや利便性に優れた仕組みなので、しっかりと理解しておく必要があります。
クラウドサービスは仮想環境で物体としては存在しませんが、実体のある仕組みで成り立っていることに違いはありません。複雑であっても、構造と機能について順を追って見ていくと理解しやすいでしょう。AWSのクラウドサービスは多くの企業が導入しているので、IAMについても知っておくと役に立つ知識です。