見出し画像

【PART10 IAM 練習問題解答】ぜんぜんわからなかったIAMについてまとめてみました

こんにちはこぐまです。
ぜんぜんわからなかったIAMシリーズ10回目です。
前回の練習問題の解答解説です。前回はこちら(↓)

それでは解説編です。一応問題文も載せてます。

【問題1】

新しくAWSアカウントを開設し、AWS構築を始めていきたいと考えています。
次のうち、もっとも正しい文を1つ選択してください。


A.最初に存在するルートユーザーを利用して一つ目のIAMユーザーを作成し、
以降は原則IAMユーザを利用して構築を進めていく。

B.最初に存在するIAMユーザーを利用して構築を進めていく。

C.最初に存在するルートユーザを利用して必要な各IAMユーザーを作成し、
以降は、ルートユーザーとIAMユーザーを併用して構築を進めていく。

D.最初に存在するIAMグループを利用して、IAMユーザーを作成し、
以降は原則IAMユーザーを利用して構築を進めていく。

【問題1解答解説】

解答:A
解説:
AWSにおいて、アカウント開設後の利用方法に関する問題です。

A. 正しいです。最初に存在するのはルートユーザであり、そこから最初のIAMユーザをまず一つ作ります。このIAMユーザには「AdministratorAccess」権限を付与し、以降のすべての作業をIAMユーザにて行っていくのが望ましいです。原則・・と書いたのは、課金(Billing)の部分をIAMユーザ側に閲覧させたりするには、ルートユーザー側でチェックを入れる必要があったりするので、そういう部分は一時的にルートユーザーになる必要があります。しかし、ほとんどがIAMユーザで作業できます。

B.間違いです。最初に存在するのはIAMユーザーではなく、ルートユーザーです。

C.間違いです。ルートユーザーで最初に必要なIAMユーザーを作っていくことも悪くはないですが、選択肢Aのように最初に作成したIAMユーザーで以降の作業を進めていくのが理想的です。またルートユーザーと「併用」してAWS構築を進めていくという内容もよくないです。

D. 間違いです。最初に存在するのはIAMグループではなく、ルートユーザーです。

【問題2】

AWSにおける認証と認可について、正しい文を2つ選択してください。

A.AWSにおける認証認可を管理するサービスとしてIAMがあり、
IAMポリシーは主に認証、IAMユーザーは認可を担っている。

B.AWSにおける認証認可を管理するサービスとしてIAMがあり、
IAMユーザーは主に認証、IAMポリシーは認可を担っている。

C.認証とは、相手が誰であるかを認識することであり、
認可とはその相手に特定の権限を与えることである。

D.認証とは、相手に特定の権限を与えることであり、
認可とはその相手が誰であるかを認識することである。

【問題2 解答解説】

解答:B、C
解説:
認証認可に関する問題です。日本語でも英語でも似ている認証と認可の違いを抑えておくことは大切かなと思います。認証とは相手が誰であるかの確認であり、認可はその相手に特定の権限を与えることです。AWSのIAMは認証認可を管理するサービスであり、IAMユーザーが認証を、IAMポリシーは認可を担っています。したがって、BとCが正解です。AとDは説明が逆です。

【問題3】

次のうち、マネジメントコンソール上でARNが確認できないポリシーをすべて選択してください。

A.AWS管理ポリシー
B.カスタマー管理ポリシー
C.AWS管理ポリシー・ジョブ機能
D.インラインポリシー

【問題3 解答解説】

解答:D
解説:
ARNとは「Amazon Resource Name」の略です。AWS上のリソースを一意に識別できるIDのようなものです。ARNが存在するのは、管理ポリシーです。管理ポリシーには、AWS管理ポリシー、カスタマー管理ポリシー、AWS管理-ジョブ機能があります。すなわち選択肢のA~Cです。インラインポリシーにはARNは存在しません。「すべて」と書いて意地悪してしまいましたが、インラインポリシーにはARNが存在しないということは覚えておくといいと思います。

【問題4】

それぞれ別の権限を付与したい3つのIAMユーザーA,B,Cがあります。
今後AWS運用管理メンバーが増えて、IAMユーザA,B,Cいずれかと同じ権限を持つ
IAMユーザーを複数用意する予定もあります。
上記環境におけるIAMユーザーの管理の仕方についてもっともよいものを一つ選択してください。


A.IAMグループを1つ作成し、IAMユーザーA,B,Cをそのグループに所属させる。
グループには各IAMユーザーが利用する用途にふさわしいIAMポリシーを全てアタッチする。
今後追加のIAMユーザーを作成した場合はそのIAMグループに追加する。

B.IAMグループを1つ作成し、IAMユーザーA,B,Cをそのグループに所属させる。
グループには各IAMユーザーが利用する用途にふさわしいIAMポリシーを全てアタッチする。
今後追加のIAMユーザーを作成した場合は別のIAMグループを作成し、追加する。

C.IAMグループを3つ作成し、IAMユーザーA,B,Cをそれぞれのグループに所属させる。
各グループには各IAMユーザーが利用する用途にふさわしいIAMポリシーをアタッチする。
今後追加のIAMユーザーを作成した場合は権限に応じて既存のいずれかのIAMグループに参加させる。

D.IAMグループを3つ作成し、IAMユーザーA,B,Cをそれぞれのグループに所属させる。
各グループには各IAMユーザーが利用する用途にふさわしいIAMポリシーをアタッチする。
今後追加のIAMユーザーを作成した場合は別のIAMグループを作成し、追加する。

【問題4 解答解説】

解答:C
解説:
与えられた状況からどのようにIAMを構築すればよいかという問題です。
文章量が多めですが、AWS認定Solutions Architect Professionalでは標準的な量だと思います。(これより長文も出てくる・・)

まず問題の条件をよく見てみます。

条件1:それぞれ別の権限を付与したいIAMユーザーが3つ必要。
条件2:既存IAMユーザどれかと同じ権限を持つ、IAMユーザーを今後追加する可能性もある。

選択肢を見ると、IAMグループを1つ作るのか3つ作るのかという違いがあるので、まずはそこから見ていきます。
選択肢A,Bの以下の記述に着目します。
「グループには各IAMユーザーが利用する用途にふさわしいIAMポリシーを全てアタッチする。」
これでは条件1を満たすことはできません。みんながみんな同じ権限を持ってしまいます。したがって、グループの数は権限ごとに必要です。
この時点で選択肢A,Bは除外されます。

残る選択肢CとDの違いですが、今後追加するIAMユーザーを既存グループに所属させるのか、新規グループを作成して所属させるのかの違いです。
条件2を確認すると、今後追加するIAMユーザーはどれかと同じ権限を持つとあります。つまりこれ以外の権限を付与する要件は(今のところ)ないということです。従って、Cが正解です。

【問題5】

インラインポリシーをアタッチできる対象を全て選択してください。

A.IAMユーザー
B.IAMロール
C.IAMグループ
D.S3ECR

【問題5 解答解説】

解答:A,B,C,D
解説:
インラインポリシーをアタッチできる対象を選択する問題です。ちょっと難しいです。
インラインポリシーというのは、(あくまで自分の説明では)ポリシーの呼び方その2「②手紙の作り方での呼び方」に相当します。
インラインポリシーは「①手紙の使用用途での呼び方」において、「アクセス許可の境界」以外のすべてに使用できます。(つまり、「アイデンティティベースのポリシー」としても「リソースベースのポリシー」としても利用できます)

「アイデンティティベースのポリシー」は、「IAMアイデンティティ」にアタッチできるポリシーです。言い換えれば「IAMユーザ」「IAMグループ」「IAMロール」にアタッチできるポリシーです。ですので、選択肢A,B,Cは正解です。
「リソースベースのポリシー」は、一部のAWSリソースにアタッチできるポリシーのことです。S3やECRはリソースベースのポリシーをサポートしています。したがってDも正解です。

以前作成したたくさんのポリシー呼び方の関係図。
インラインポリシーはアイデンティティベースのポリシー、リソースベースのポリシー両方に使える。
上記の図ではアタッチする対象(一番右側)にIAMエンティティしかないので、わかりにくいかもしれませんが、リソースベースのポリシーとは一部のAWSリソースにアタッチできるポリシーのことです。S3やECRはそれをサポートしています。

【問題6】

あるIAMユーザーABに同じ名前のインラインポリシーをアタッチしました。
インラインポリシーの中身は同じ内容です。
運用の見直しの結果、IAMユーザBが不要となったため、削除することとなりました。
このときIAMユーザーAおよびIAMユーザーBに発生する事象について
正しく述べている文を一つ選択してください。

A.IAMユーザーB削除しても、IAMユーザーAは何も変わらない。
IAMユーザーBは削除時、自身にアタッチされたインラインポリシーごと削除される。

B.IAMユーザーBを削除した場合、IAMユーザーAの権限のうち、IAMユーザーBと
同名のインラインポリシーに記載されている権限のみがはく奪される。

C.IAMユーザーAIAMユーザーBと同名のインラインポリシーを共用しているため、
IAMユーザーBを削除するとIAMユーザーAも削除される。

D.IAMユーザーBIAMユーザーBと同名のインラインポリシーを共用しているため、
そのままではIAMユーザーBを削除できない。

【問題6 解答解説】

解答:A
解説:
インラインポリシーを利用している場合のIAMユーザ削除時の動きについての問題です。これもちょっと難しいです。

インラインポリシーとは、アタッチするエンティティと1対1で紐付くポリシーのことです。ですので、「同じ名前、同じ内容のインラインポリシー」という文言自体をよく見定める必要があります。
IAMユーザーAにアタッチしたインラインポリシーとIAMユーザーBにアタッチしたインラインポリシーは、まったく同じ名前、同じ内容であっても別モノです。この「別モノ」という認識をもっていれば、選択肢C,Dの「インラインポリシーを共用している」という記述がそもそもおかしいということに気づけます。この時点で選択肢C,Dは除外できます。
またポリシーの中身を共用しているような記述である選択肢Bも間違っていることがわかります。
IAMユーザーBを削除した時、一緒に消えるインラインポリシーは、IAMユーザーBにアタッチされているインラインポリシーだけであり、IAMユーザーAにアタッチされている同じ名前、同じ内容のインラインポリシーはそのまま残ります。従ってAが正解です。

【問題7】

3つのIAMユーザーA,B,Cはある一つのIAMグループに所属している。
この3つのIAMユーザーに対し、同じ許可ポリシー(AWS管理ポリシー)と
同じアクセス許可の境界を設定したい。次のうち正しい方法を1つ選択してください。

A.各IAMユーザーA,B,Cごとに許可ポリシーをアタッチし、
各IAMユーザーA,B,Cごとにアクセス許可の境界を設定する。

B.各IAMユーザーA,B,Cごとに許可ポリシーをアタッチし、
IAMグループにアクセス許可の境界を設定する。

C.IAMグループに許可ポリシーをアタッチし、
各IAMユーザーA,B,Cごとにアクセス許可の境界を設定する。

D.IAMグループに許可ポリシーをアタッチし、
IAMグループにアクセス許可の境界を設定する。

【問題7 解答解説】

解答:C
解説:
「アクセス許可の境界」とIAMグループの関係を理解しているかどうかを確認する問題です。

普通に考えれば、同じ「許可ポリシー」と同じ「アクセス許可の境界」を設定したいので、どちらもIAMグループにアタッチするのが一番よさそうに思えます。しかし、IAMグループにアクセス許可の境界はアタッチできません。したがって、アクセス許可の境界は各IAMユーザにて設定することになります。一方、許可ポリシーはIAMグループ側でアタッチすることができます。許可ポリシーはもちろん個々のIAMユーザにも設定できますが、管理の手間を考えるとIAMグループにアタッチしたほうがよいので、正解はCとなります。

なおこの設問について「許可ポリシー(AWS管理ポリシー)」と書きましたが、「許可ポリシー」には「管理ポリシー」「インラインポリシー」どちらも設定できます。一方、「アクセス許可の境界」には「インラインポリシー」は設定できません。このことも覚えておくとよいかと思います。

【問題8】

IAMユーザA,B,Cがあり、それぞれ以下の許可ポリシーがアタッチされている。

IAMユーザA:S3kogumaバケット list(許可) read(許可) write(許可)
IAMユーザB:S3kogumaバケット list(許可) read(許可) write(拒否)
IAMユーザC:S3kogumaバケット 記載なし

一方、S3kogumaバケットのバケットポリシーは以下のようになっている。

IAMユーザーA list(許可) read(記載なし) write(拒否)
IAMユーザーB 記載なし
IAMユーザーC list(許可) read(許可) write(許可)

この時、正しい内容を記載しているものを3つ選択してください。


A.IAMユーザーAS3kogumaバケットに対して、listreadができる。
B.IAMユーザーAS3kogumaバケットに対して、listのみができる。
C.IAMユーザーBS3kogumaバケットに対して、listreadができる。
D.IAMユーザーBS3kogumaバケットに対して、何もできない。
E.IAMユーザーCS3kogumaバケットに対して、listreadwriteができる。
F.IAMユーザーCS3kogumaバケットに対して、何もできない。

【問題8 解答解説】

解答:A,C,E(または B,D,F)
解説:
「アイデンティティベースのポリシー」と「リソースベースのポリシー」が複合した場合のアクセス許可についての問題です。
(すみません、同一AWSアカウントであるという前提で問題文作ってましたが、別AWSアカウント間でもうまく解答できそうなことに今気づいたので、併せて記載します。)

「アイデンティティベース」のポリシーと「リソースベースのポリシー」両方でアクセス許可に関する記述がある場合、最終的なアクセス権がどうなるのか・・その評価方法ですが、基本的に抑えておくべき点は以下となります。

1.同一AWSアカウントの場合は、どちらか一方で明示的に許可されていたらOK。(1つでも〇ならOK)
2.別AWSアカウントの場合は、両方で明示的に許可されていたらOK。
(2つとも〇ならOK)
3.ただし、明示的な拒否(X)は一発アウト。

これだけです。そしてその上で以下のポリシーのお約束(評価論理)を押さえておきます。

(強い)明示的な拒否(X) > 明示的な許可(〇) > 暗黙的な拒否(弱い)(△)

暗黙的な拒否は「記載なし」のことです。明示的な拒否とは「拒否」を明示的に記載した状態のことです。

では以上をもとに、まずIAMユーザーAから考えていきます。
IAMユーザーAについては、許可ポリシー側では全て許可されています。
S3側のバケットポリシー側では、IAMユーザーAは listのみが明示的な許可となっていて、readは暗黙的な拒否(記載なし)、writeには明示的な拒否が書かれています。

これらを図にするとこんな感じです。

〇・・明示的な許可、△‥暗黙的な拒否、×・・明示的な拒否
×が一つでもあるとアウト。そのうえで同一アカウントの場合は〇が1個でもあればOK。
別アカウントの場合はどちらも〇であればOK。

同様に、IAMユーザーB、IAMユーザーCについても表にしてみます。

正解の選択肢を3つ選ぶ問題ですので、緑行もしくは黄色行の組み合わせが正解となります。
従って、A,C,Eの組み合わせかまたは、B,D,Fの組み合わせが正解となります。

【問題9】

組織SCPとして「AmazonEC2ReadOnlyAccess」がアタッチされたあるAWSアカウントがある。
このAWSアカウント内のIAMユーザーAの「アクセス許可の境界」には
「AmazonEC2FullAccess」がアタッチされている。
この時、IAMユーザーAEC2インスタンスを閲覧しようとしたところ、操作が拒否された。
この原因として考えられる内容として最も正しいものを1つ選択してください。

A.IAMユーザーAに「AmazonEC2ReadOnlyAccess」などの許可ポリシーをアタッチしていないから
B.組織SCPでこのAWSアカウント全体の行動範囲が制限されているから
C.アクセス許可の境界でこのIAMユーザーAの行動範囲が制限されているから
D.EC2のリソースベースのポリシーで明示的な拒否がされているから

【問題9 解答解説】

解答:A
解説:
「SCP」、「アクセス許可の境界」
などの行動範囲を決めるポリシーだけではアクセス許可は得られないということを理解する問題です。

組織SCPでは、EC2の読み込み許可(AmazonEC2ReadOnlyAccess)が与えられています。したがって(その他サービスに対する行動範囲についての説明は読み取れないので他の行動範囲も許されているかもしれませんが、とりあえず)この組織配下でできることは、EC2の読み込みのみです。
一方、このAWSアカウント内のIAMユーザーAの行動範囲として、EC2の全操作(AmazonEC2FullAccess)を「アクセス許可の境界」で設定しています。組織SCPとアクセス許可の境界の両方で行動範囲が設定されているこのIAMユーザーAの行動範囲はどうなるかというと、組織SCPとアクセス許可の境界の共通部分となります。したがって、「EC2の読み込み許可」が許された行動範囲となります。
しかし、問題文ではこのIAMユーザーがEC2インスタンスを閲覧しようとしたところ、操作が拒否されたとあります。行動範囲的には問題なさそうなのに、何が足りないのか・・というのがこの問題のポイントです。

選択肢B,Cは間違っています。組織SCP,アクセス許可の境界において、
EC2の閲覧を妨げるような行動範囲の制限はしていません。

選択肢Dも間違っています。EC2に対してリソースベースのポリシーというのは存在しません。リソースベースのポリシーが適用できるのは一部のAWSサービス(S3,ECRなど)のみです。

正解の選択肢はAとなります。
アクセス許可の境界、組織SCPはあくまでアタッチした対象の行動範囲を決めるだけです。実際の行動自体を許可するのは「許可ポリシー」です。
これは、アクセス許可の境界や組織SCPにアタッチしたポリシーとは別にアタッチする必要があります。

【問題10】

IAMロールの「信頼ポリシー」について正しく記載しているものを1つ選択してください。

A.信頼ポリシーは「アイデンティティベースのポリシー」であり、IAMロールにおいて、
そのロールを利用することを許可する信頼する相手について記載する「インラインポリシー」である。

B.信頼ポリシーは「アイデンティティベースのポリシー」であり、IAMロールにおいて、
そのロールを利用することを許可する信頼する相手について記載する「カスタマー管理ポリシー」である。

C.信頼ポリシーは「リソースベースのポリシー」であり、IAMロールにおいて、
そのロールを利用することを許可する信頼する相手について記載する「カスタマー管理ポリシー」である。

D.信頼ポリシーは「リソースベースのポリシー」であり、IAMロールにおいて、
そのロールを利用することを許可する信頼する相手について記載する「インラインポリシー」である。

【問題10 解答解説】

解答:D
解説:
信頼ポリシーについての理解を確認する問題です。
一部今までちゃんと説明していなかった部分もありますので、難しいです。
次回IAMロールについての説明を考えているのでそこで改めて記載したいと思います。

(私が学習してきた中で感じた感想ですが)
IAMロールとは非常に特殊な性質を持ちます。それは何かというと、
「アイデンティティベースのポリシー」と「リソースベースのポリシー」を両方アタッチできるという性質です。

アイデンティティベースのポリシーをアタッチした場合は、そのポリシーは「許可ポリシー」と呼ばれます。
リソースベースのポリシーをアタッチした場合は、そのポリシーは
「信頼ポリシー」と呼ばれます。

選択肢を見ていきます。
まず、信頼ポリシーは「リソースベースのポリシー」なので、選択肢A,Bは除外されます。
そしてリソースベースのポリシーとは、管理ポリシー(AWS管理ポリシー、カスタマー管理ポリシー)は利用できないので、
選択肢としてはDが正解となります。

・・・ふう。いかがだったでしょうか。
解説を書きながら私自身もとても知識の整理というか勉強になってます。
自分で問題作るっていいですね(笑)

次回はIAMロールについて知識を整理していきたいと思います。
読んで下さった方々のAWS理解の一助となれれば幸いです。
長文読んで頂きありがとうございました!

この記事が参加している募集

最近の学び

この記事が気に入ったらサポートをしてみませんか?