AWS IAMって何?
- IAMリソースへのアクセスをセキュアに管理するためのサービス。
- ユーザーやサービスが、あるサービスを利用できるかを管理する(認証)機能を持つ。
- ユーザーやサービスに、権限を付与する(認可)機能を持つ。
参考・リンクまとめ
出題傾向
IAMは初学者の方にとって、試験範囲の中で最も理解しにくいサービスの一つかとは思います。
さらに、様々なサービスと組み合わせて、様々な使われ方をする為、余計にややこしく見えるかもしれませんが、ただ、やはり、よく出題される重要ポイントはありますので、そのポイントから抑えて行けば、決して難しい問題ではありません。
具体的には下記のような内容が特に出題されます。
- IAMの管理におけるベストプラクティス
- 権限の付与の方法
- アカウント管理の方法
IAMを学習する上で重要な点は、「何に対して」「どのように」権限を与えるか、管理するかを1つ1つ明確にしながら、ユースケースを学習していくことが重要です。
出題ポイント
AWSアカウント
- ”IAMユーザ”を学ぶ前に、AWSアカウント上のrootユーザと、IAMユーザの違いについて区別しましょう
このあたりが問われます!!
AWSにクレジットカード等の契約情報を入力すると、AWSアカウントのアカウントIDとルートユーザが作成されます。ルートユーザはそのAWSアカウントに対して、すべてのリソースを操作できる権限を有しています。仮にアカウントのパスワードが流出するとアカウントが乗っ取られ、大量の課金が発生することがありますので、普段ルートユーザを用いてAWSリソースの操作を行うことはベストプラクティスではありません。
アカウントを作成したら必ず多要素認証(MFA)の設定を行い、操作用のIAMユーザを作成して、アカウントを保護してください。
操作用のIAMユーザには、Administrator権限を付与することで、大抵のAWSリソースに対する操作が可能になります。
また、それぞれのAWSアカウントは、セキュリティ、課金、ネットワークが独立しています。
参考・リンクまとめ
AWSアカウントを取得したら最初に行うべきことについては以下にまとまっています。
IAMユーザー、IAMグループ
- IAMユーザは1人1人に与えられるログイン情報でIAMグループはIAMユーザの集合
参考・リンクまとめ
このあたりが問われます!!
IAMユーザは、AWS操作用のIDで、1つ1つのユーザーに権限を設定できます。
ただし、IAMユーザーだけでなく、IAMグループを利用してユーザー管理をおこなうことが適切な場合もあります。
例えば、1000人の組織のメンバー1人1人にIAMユーザーを作成し、1人1人にそれぞれ権限を設定していると、多大な時間がかかってしまいます。
そこで、IAMグループを使い、IAMユーザーをIAMグループに所属させると、IAMグループ単位で権限の管理が可能になります。
認証方法
- パスワード、パスワード+多要素認証、アクセスキー+シークレットキーの認証方法が存在する
参考・リンクまとめ
このあたりが問われます!!
AWSにてIAMユーザの認証を行う際には、以下の3通りの手段があります。それぞれのユースケースについて覚えておきましょう
絶対暗記!!
- AWSの認証方法は以下の通りです。
方法 ユースーケース ユーザーID/パスワード※1 マネジメントコンソールへのログイン ユーザーID/パスワード、多要素認証 マネジメントコンソールへのログイン アクセスキー/シークレットキー※2 AWS CLIによる操作、API操作 - ※1:IAMユーザにおいて、強固なパスワードを設定する為に、パスワードポリシーを定めることが可能です。
- ※2:アクセスキー、シークレットキーは、AWSのIAMコンソール画面からcsvで取得できます。こちらも漏洩すると不正アクセス等の被害が発生するため、定期的なローテーションが推奨されています。
IAMポリシー
- IAMユーザや、IAMロール(後述)に設定できる権限のことをIAMポリシーといいます
- IAMポリシーにおいてどのような権限が設定されているかを、必ず読み取れるようにしておきましょう
参考・リンクまとめ
このあたりが問われます!!
IAMポリシーに関して出題される内容は以下の通りです。
- IAMポリシーの種類
IAMポリシーはAWSが作成し、管理するAWS管理ポリシーと、利用者がカスタマイズして作成するカスタマー管理ポリシーがあります。
※厳密にはもう一種類、インラインポリシーというものがありますが、こちらの利用は現在非推奨となっています。
- IAMポリシーの見方
IAMポリシーの見方についてです。いかにサンプルのIAMポリシーを記載します。
それぞれの項目については、以下に説明します。
項目 | 説明 |
Effect | 後続のActionで指定されるアクセス権限に対してAllow(許可)かDeny(拒否)を指定します。 |
Action | AWSリソースに対する操作を指定します。例えばここでは、s3:* となっており、S3のすべての操作が対象になっています。 |
Resource | 操作対象のAWSリソースを指定します。ここでは、S3のバケット名を記載すると、指定のS3バケットに対してAction、Effectで指定した権限が付与されます。 |
IAMロール
- IAMロールはアプリケーションやAWSサービスに権限を与える仕組みです。
- IAMロールがアタッチされたAWSサービス(EC2など)は、パスワードではなく認証トークンをやりとりします。そのためアクセスキー/シークレットキーの利用よりも推奨されます。
このあたりが問われます!!
たとえばEC2からS3にファイルをアップロードしたい場合、EC2に、S3の操作権限を付与したIAMロールをアタッチすることで、可能になります。
このように、AWSサービスに権限を付与する仕組みがIAMロールです。
また、IAMロールには以下の2つの機能も存在します
- Switchロール
IAMユーザが異なるAWSアカウントを管理する為に使用できる機能です。アカウントAのIAMユーザが、アカウントBのAWSリソースを操作したい場合、
①アカウントB側で、アカウントAのIAMユーザが利用できるIAMロールを作成する
②アカウントAにログインしたIAMユーザが、AWSマネジメントコンソールにて、Switchロールをおこなう
といった順序でアカウントAのIAMユーザがアカウントBのコンソールを操作することができます。
このとき、アカウントB側では"Action": "sts:AssumeRole"
という権限を実行し、『AssumeRole』という操作を行って権限の引き渡しをします。
- IDフェデレーション
FacebookやTwitterなど、他のSNSなどのアカウントを持っているユーザがいる場合は、IAMユーザを作成しなくても、FacebookのアカウントにAssumeRoleで権限を引き渡すことで、AWSのリソースに対する操作を可能にすることもできます。このように、AWSのIDとは異なるIDを連携させること、IDフェデレーションといいます。
絶対暗記!!
IDフェデレーションの方法とユースケースについては押さえておきましょう。
方法 | ユースーケース |
Open ID Connector | Webアプリケーション等を公開するときに、いちいち1ユーザ当たりにそれぞれIAMユーザを払い出したくない場合。 別名『ウェブIDフェデレーション』と呼ぶこともあります。 |
AD Connector | オンプレミス等でActiveDirectoryを使用している場合 |
SAML2.0 | オンプレミス等でID管理サーバがSAML2.0に対応している場合 |