IT未経験の初心者がIAMを理解しようとしてみた
はじめに
AWSを初めて学習して難しいと感じたIAMについて、自分なりの理解を書いてみました。
同じような初心者の方でも読みやすいように、なるべく平易な言葉で書くことを心掛けています。
対象者
- これからAWSを学習したい初心者
- IAMって何なのか、なんとなく理解したい方
- そもそも何のためにそんな機能があるの?という疑問を持っている方
IAMとは
IAMとは、「Identity and Access Management」の略で、その名のとおり、IDとアクセス権を管理する機能です。IAMを使用すれば、誰がどのサービスにアクセスできるのかを、許可または拒否することができます。全ての人が全てのサービスやデータに対してアクセス権を持つというのは安全ではありません。必要な人に、必要最低限の権限のみを付与することが推奨されています。
そもそもなぜ管理機能が必要なの?
IT未経験の自分がAWSを勉強していて疑問に思ったことに一つに、「AWSアカウントって、1つの企業に1つじゃないの?」「なぜ複数のアカウントを持つの?」ということがありました。開発を経験したことがないので、アカウントを複数持つというシチュエーションが想像できなかったのですが、以下の記事を読んで理解することができました。
AWSアカウントとVPC、分ける? 分けない?: 分割パターンのメリット・デメリット
簡単にまとめると、アカウント1つでも使うことはできるけど、システムの種類(メインシステム・サブシステムなど)や環境の用途(開発用・本番用など)に応じてアカウントを分けた方が、セキュリティや運用面におけるメリットが高いということでした。
企業で複数のアカウントを持ったり、複数の人が使用する場合、誰がどのアカウントにアクセスできるのか、どのサービスを使用できるのか、どんな操作ができるのかといった管理が必要です。そこで便利なのが、複数のユーザーと権限の管理をできるIAMの機能です。
IAMユーザー/IAMポリシー/IAMロール
IAMユーザー
IAMユーザーとは、人に与えられるIDです。ユーザー名とパスワードが付与され、AWSアカウントにログインする際に必要となります。1つのAWSアカウントの中に複数のユーザーを作ることができ、従業員1人ずつ個別のIAMユーザーを作成することが推奨されています。ログイン情報を共有して複数人でIAMユーザーを使いまわすことは、セキュリティの観点で懸念があり、お勧めできません。
新しく作ったIAMユーザーには、デフォルトでは何のアクセス許可も与えられていません。後述のIAMポリシーを割り当てることによって、必要なアクセス許可を付与することができます。
IAMポリシー
IAMポリシーとは、「何に対して」「どのような操作を」「できるか(できないか)」の権限を記述したドキュメントで、許可証のようなものです。これをIAMユーザーや後述のIAMロールに割り当てることで、「誰が」その権限を持つのかといったことを決定します。
ポリシーの例:
- AdministratorAccess:管理者権限で全部許可
- ReadOnlyAccess:見るだけ許可
- AmazonS3ReadOnlyAccess:S3を見るだけ許可
IAMロール
IAMロールとは、役割のようなものです。前述のポリシー(権限)を束ねることができ、それを代表する概念的な名前を付けることができます。例えば、コーヒーショップの従業員が1日の中で様々な役割を担当する場合、IAMロールを使って必要なアクセス許可を一時的に付与することができます。
- ロール:レジ係 → ポリシー:レジシステムへのアクセス権など
- ロール:在庫管理係 → ポリシー:在庫システムへのアクセス権・更新権限など
- ロール:オンライン注文係 → ポリシー:オンラインシステムへのアクセス権・更新権限など
IAMロールでは、どの時点でも1つの役割しか担当できないようにし、切り替えて使うことができます。切り替えると以前のロールの権限は取り消され、次の新しいロールの権限が与えられます。
- レジ係 → 在庫管理係 → オンライン注文係
このように、IAMロールは権限を一時的に付与する必要がある状況に適しています。
より具体的な例は、AWSデジタルトレーニングのAWS Cloud Practitioner Essentials (Japanese) (日本語字幕版)で学習することができます。
ロールの切り替えについては、以下のブログが参考になりました。
参考記事
AWS公式 - AWS Identity and Access Management (IAM)
AWS公式 - IAM ユーザーガイド
ブログ - AWS IAMポリシーを理解する