【初心者向け】IAMとは

【初心者向け】IAMとは

ルートアカウントの取り扱い

AWSを使用するにはメールアドレス、パスワード、クレジットカードでアカウントを作成します。
このメールアドレスとパスワードでログインできるものが ルート アカウントとなります。

ルート アカウントはすべての権限を保有するため、通常時の利用は推奨されています。
そのためルート アカウントは以下のように扱うことが推奨されています。

  • 初回作成時にIAMユーザーを発行する
  • 通常時は発行した IAM ユーザーを利用しルートアカウントを利用しない
  • 使わなくなったルーターアカウントは多要素認証(MFA)を有効にしてロックをかける
  • 多要素認証(MFA)は金庫など安全な場所に保管する
  • ルートアカウントしかできない申請の際にのみ多要素認証(MFA)を利用しログインして申請する

IAMとは

IAM(Identity and Access Management:アイアム)とは、AWSのサービスで「認証」と「認可」の設定を行うことができるサービスです。 AWS では IAMという機能を利用して認証とアクセス管理をセキュアに扱うことができます。

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

 AWS では IAM を利用してユーザー管理と AWS の操作権限を管理します。IAMを利用するとマネジメントコンソールへのログインや CLI(Cmmand Line Interface)の実行、アクセス可能な AWS リソースの制限などが可能になります。

 IAM ユーザー

 IAM ユーザーは個人もしくはサービスごとに発行しますこのアカウントでマネージメントコンソールへのログインや CLIの実行が可能です。Cloud Trailなどのサービスでは IAM ユーザーごとに操作ログを残せるため誰が操作したのかなどを特定するために IAM ユーザーのアカウントを利用者ごとに発行することが推奨されています。

 IAM グループ

 IAM グループはIAMユーザーを束ねる機能で通常は役割や組織ごとに作成します。IAMグループに対して IAM ポリシー(アクセス権限)を付与でき、役割や組織ごとの権限管理を用意します。ただし IAM グループは組織図のようなネストされた階層構造を持てずフラットな階層構造でしか管理できません。また IAMユーザーは複数の IAMグループに参加可能ですが最大10グループに制限されています。

 IAM ポリシー

 IAM ポリシーを作成して、IAMユーザーや IAM グループに付与することで該当ユーザーやグループでのアクセス許可やアクセス制限を設定できます。アクセス制限が可能なレベルは API レベルで書く選ぶ リソース事に非常に細かく制御できます。

IAMの管理手順

 AWS が推奨しているユーザーの管理方法は以下になります。

  1.  IAM グループを作成する
  2.  IAM ユーザーを作成してIAM グループに参加させる
  3.  IAM ユーザーを作成してIAM グループに参加させる
  4.  IAM ポリシーを作成し、操作可能な AWS リソースを設定する
  5.  IAM ポリシーをグループに割り当てる

管理者グループ開発グループ運用グループなど IAM グループを作成して操作権限を分けて、閲覧範囲や操作範囲などをコントロールすることも可能です。

 Access Key Secret key

 マネジメントコンソールにはID とパスワードを入力してログインしますが、CLIやSDK、 他のサービスに埋め込む場合は IAM ユーザーでアクセスキー シークレットキーを発行します

このアクセスキーとシークレットキーは発行元の IAM ユーザーと同じ権限になります

例えば管理者権限が付与された IAM ユーザーでアクセスキーとシークレットキーを発行したとします

それらのキーが外部に流出することは管理者権限が外部に流出したことを意味するため非常に大きな問題に発展します。そこでアクセスキー・シークレットキーの管理については以下が推奨されています

  • 最小限の権限を付与する
  • 定期的にキーをローテーションする
  •  プログラムハードコードせず IAM ロールを利用する

 IAM ロール

 EC2上のプログラムから S3など AWS リソースにアクセスする場合は IAM ロールの利用が推奨されています 

IAM ロールとは AWS サービスや EC2 上のアプリケーションに対し AWS リソースの操作権限を付与するための仕組みです 。IAM ロールに対して IAM ポリシーを割り当てることで AWS リソースの操作権限を管理できます

例えば EC2に対して IAM ロールを付与するとアクセスキーシークレットキーを利用しなくても AWS リソースの操作が可能です。

 EC 2や AWS サービスに対して IAM ロールを付与すると IAM ユーザーのアクセスキーシークレットキーなどの認証情報を OS やアプリケーションにハードコートする必要はないため、それらの漏洩リスクを軽減できます。なお IAM ロール を利用した場合のキーのローテーションは AWS 側で行なってくれます

また以前は PC 2の起動時のみ IAM ロールの付与が可能で、起動後に付与する場合はイメージから 起動して付与する必要がありました。2017年2月以降は稼働中の EC 2に対して IAM ロールの付与が可能になりました

 MFA 多要素認証

 IAM ユーザーは MFA が利用可能です。MFA によってアイアムに対して物理デバイスもしくは仮想デバイスを用いた多要素認証が可能になります。 ID とパスワードに加えて MFA を利用することでマネジメントコンソールへのアクセスのセキュリティレベルをさらに向上させることができます。