なーるほどtheワールド:第三章 - 無知はサービスを破壊する「IAM編」
前章までで、無事目的を達成したぼく。
だけど、前章の最後にもつぶやいたように「正直わからないことが多すぎる」
この、分からないことを分からないままに次に進んでしまったら、ぼくはきっとこの先大きな間違いを犯してしまい、はるか昔に恐怖していた「不正請求」に踊らされてしまうことだろう💃
だからここで、いまいちど分からないことをちゃっぴーに質問してクリアにしてから次のステップに進もうと思う。
🧐ところで「IAM」って結局なんですか?
🌐 IAMとは?
🐶「IAM とは『Identity and Access Management』の略じゃ。
簡単に言うと、『誰が何をできるのかを決めるための門番システム』なんじゃ。」
ぼく🧑🏻💻「門番……?」
🐶「そう。AWSの世界にはお宝(=S3バケットやLambdaやRDSなど)がごろごろある。
それを勝手に持っていかれたり壊されたら大変だろう?
だから“誰に何を許すか”をきっちり管理するために存在するのがIAMなんじゃ。」
ぼく🧑🏻💻「つまり、『アクセス権限ってことでいいのかな?』
それを『権限』という名称でまとめるのではなくて、『人格(=アカウント)』という形で表現しているイメージで合っている?
えーっとつまり、
◆クソ雑魚システム株式会社◆
社員①:ぼく(クソ雑魚)
社員②:ちゃっぴー(管理者)
ぼくはクソ雑魚だから、システムに対してはREADしか許さない
ちゃっぴーは管理者だからなんでもできちゃう
これを『READしかできない』『なんでもできちゃう』という『印籠』を作ってそれぞれに持たせる感じ?」
🐶「まっっったくその通りじゃーーー!👏
主の理解力、最近マジで光っとる✨✨
“誰が何をできるか”を定義した『印籠(=ポリシー)』をそれぞれの『IAMユーザ』に持たせて、行動範囲を制限する。それがIAMの基本じゃ!」
🧠 要するに…
IAMでは「誰が(=アカウント)」「何ができるか(=ポリシー=印籠)」をセットで管理しとるんよ!
🧑🏻💻 主の例で言うと:
◆クソ雑魚システム株式会社◆
| 名前 | IAM的な表現 | 権限(印籠) | 備考 |
|---|---|---|---|
| 主(ぼく) | IAMユーザ(クソ雑魚) | S3:ReadOnly ポリシー | 閲覧のみの印籠 |
| ちゃっぴー | IAMユーザ(管理者) | AdministratorAccess | 天下無双の金印 |
📝 ポイント!
• IAMユーザ:アカウントの正体そのもの(≒社員バッジ)
• ポリシー:できることの範囲を書いたもの(≒印籠)
• 印籠は複数持てる:ちゃっぴーは「S3の管理」「Lambdaの操作」…など印籠を複数合成可能
• 逆に、印籠がないIAMユーザは”何もできない”
🐶「ちなみに、印籠の中身(=ポリシー)はJSON形式で書かれとるんじゃが……今はまだ中身までは見なくてよし!!“印籠を配る儀式”がIAMの本質じゃ!」
🉑 IAMは印籠である
ぼく🧑🏻💻「つまりクソ雑魚のぼくはうんこ色の印籠しか持っていないので、サーバ管理室に入ろうと思っても門前払いされるってことだね?」
🐶「うんこ色www💩
そうじゃ。『この印籠じゃダメ!』ってS3嬢やEC2おじさんに玄関先で追い返されるんじゃ。
AWSは“印籠チェックマン”が全ての入口に常駐してるからのぅ。」
つまり主は…
- うんこ色の印籠(S3:ReadOnly)しか持ってない
- → EC2操作しようとすると
🔐「ダメ〜〜!印籠がちゃう!」ってなる
⸻
一方でちゃっぴーは… - ✨ 金ピカの全権印籠(AdministratorAccess) ✨
- → どのサービスの扉でも「へへ〜っ!!」って自動ドア開くレベル
⸻
🐶「IAMとは、“誰にどの色の印籠を持たせるか” の儀式である!」
ぼく🧑🏻💻「なーるほどtheワールド!ユーザはIAM、権限は印籠としてそれぞれ分かれているってことね」
🥸ユーザ と 🎭ロール
ぼく🧑🏻💻「じゃあもう一つききたい。
同じようなものに『IAMロール』ってあるでしょ?あれはなに?
『ロール』っていうくらいだから『役割』という意味だと思うんだけど、『権限』が付与されている『ユーザ』とどう違うの?」
🐶「いい質問じゃ!
IAMユーザは“ログインして操作するための人”。つまり、“名前付きの人間”。
一方でIAMロールは“誰かが一時的に着る制服”。
その制服にどんな権限があるかを定義しておいて、着替えた人が一時的にその力を得る。
これは、サービス同士が連携するときや、人間が一時的に他の権限を借りたいときにも使う。
“身分証付きの人”と“制服だけの中身なし”。それがユーザとロールの違いじゃ!
クソ雑魚株式会社の例えで整理するとこうなるぞ」
🏢登場人物
- IAMユーザ(ぼく・ちゃっぴー)= 社員番号付きの正式社員(名前入りIDカード持ってる)
- IAMロール = 「役職バッジ」「一時的な肩書き」みたいなもん
⸻
🐶ちゃっぴー流ざっくりまとめ
🔹 IAMユーザ は「この人誰?」「社員です!」って認証された本人。
🔹 IAMロール は「この役職に就いてる間は、こういうことしていいよ」という期間限定の通行証。
⸻
💼たとえば…
- クソ雑魚株式会社のぼく(IAMユーザ)は、経理部の雑用係で、通常は 「S3読み取りだけOK」な印籠 しか持ってない(うんこ色)。
- ある日、急きょ「期間限定で人事部長の仕事やって!」って言われたとする。
⸻
ここで登場するのが IAMロール(人事部長バッジ)!!
⸻
🐶「主よ、しばしの間この“人事部長バッジ(IAMロール)”を付けて働くのじゃ…
だが時間が来たらそのバッジは返してもらうぞ」
ぼく🧑🏻💻「いや、人事部長とかムリっしょ(ズバッ」
🐶「“人事部長バッジ(IAMロール)”を付けたんだから何がなんでもて働くのじゃ!!」
ぼく🧑🏻💻「えぇーーー!」
🏄♂️どうも。サビ垢です。
ぼく🧑🏻💻「このロールが活躍するのが『サビ垢(=サービスアカウント)』だと思うんだけど、
サビ垢とIAMユーザの違いって
- IAMユーザ:中に人が詰まってて、自分の意思でAWSサービスにログインして操作をしてみたり、泣いたり笑ったりしている(うっかりポリシー変更したりして)
- サビ垢 with IAMロール:中に人が詰まっていない。サービスからサービスを呼び出すときに利用される。
こんな感じかな?」
🐶「爆笑したけど正しい🤣
そう!IAMユーザは“主のように意思のある存在”
サービスアカウントは“ただのお仕事請負人”。
“俺がやる!”じゃなくて、“仕事をもらったから動きます”って感じじゃ!」
🧠整理するとこうじゃ!
| 比較項目 | IAMユーザ | サービスアカウント(with IAMロール) |
|---|---|---|
| 中の人 | いる(人間) | いない(自動処理用) |
| 操作スタイル | 自分の意思で操作(GUI/CLI) | AWSの裏側で自動処理 |
| 認証の方法 | ユーザ名・パスワード・MFAなど | ロールのアタッチ(くっつけ)で一時的に権限取得 |
| 主な使いどころ | 管理者・開発者・オペレーター | Lambda / EC2 / CodeBuildなどのAWSサービス |
🏄♂️サビ垢のふりをする
ぼく🧑🏻💻「深掘りさせて!!
例えば、ぼくが『サビ垢のふりしてAWSにログインする』ってできるの?」
🐶「おっとおおおおおいィィィィ!!!😱💥
主ぅ、それ危険思想じゃぞ!!!
(よい子も悪い子も絶対にマネしないでね)」
✋結論:
ぼく(IAMユーザ)がサビ垢のフリしてログインすることはできません。
なぜなら「ロールの切り替え」には厳しい信頼関係(=信頼ポリシー)が必要だから。
⸻
🧠信頼ポリシーってなに?
ロールには「このロールを使っていいのは誰か」を定義する「信頼ポリシー」という設定があるっちゃ。
例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
これは「Lambdaサービスだけがこのロールを着てOKよ!」ってこと。
つまり、人間(ぼく)はこのロールを着れません👎
⸻
🥸「ぼくがサビ垢のふり」シナリオ(無理筋)
ぼく「やべー!S3に書き込みたい!でも自分のIAMユーザじゃポリシー足りない!」
ぼく「そうだ!Lambda用のロール使っちゃえ〜〜〜い!!」
IAM「ちょ待てよ💢。このロール、おまえのこと信用してないから」
ぼく「ちぃ……覚えた」
IAM「覚えるな😇」
⸻
🛡️守られてる理由
信頼ポリシーのおかげで、「ロールの着ぐるみ」を着られるのはあらかじめ許可された相手だけ!
それが
- Lambdaサービスだったり
- 特定のIAMユーザだったり
- クロスアカウントの別AWSアカウントだったり
って話になるわけさ!
ぼく🧑🏻💻「うわーありがとw
いや、危険思想っていうけどさ、これ単純に『なにも分かっていないクソ雑魚思考』なだけだよw
つまり『無知はサービスを破壊する』ってことだよw
AWSの場合は、無知なクソ雑魚への防衛ラインがちゃんとしているって話ですw」
🐶「それな!!!!!!!!!!!!
無知は罪ではない。だが、無知のまま突撃するのは爆発じゃ💥
AWS様は、爆発しそうな我々をそっと止めてくれるお優しい守護神じゃった…(ありがたや)」
💩無知はサービスを破壊する
でも、AWSは「クソ雑魚防衛システム」を持っている。
(=IAMによるアクセス制御、信頼ポリシー、暗号化、ロールの限定的な使用などなど)
🎯だからIAMって大事!
- 「うっかり消しちゃいました」
- 「意図せず世界に公開しちゃいました」
- 「やっていいと思ってました」
- 「知らぬ間にRDS全消ししました」
こういう事故の多くは「IAMが適切に設計されていなかった」ってパターンが多い!
⸻
☠️人間はうっかりのプロ
だからこそ…
- クソ雑魚でも爆破できない設計
- 管理者でもしくじれない設計
- 知らんうちに世界に晒せない設計
そんな「鉄壁のバリア」をIAMは担ってるんだよね。
クソ雑魚ムーヴを事前に予知して、予防措置取ってるAWS様さすがです。
だからもっと安くしてよ🤑
次回予告
- 今回はAWSの数あるサービスの中で一番最初に触れた「IAM」について、分かっているようで分かっていないことを「何かに例えて理解できる」ようにしてみたよ
- 次回はIAMの説明でも少し触れた ポリシー について今回と同じようにちゃっぴーと会話しながら理解を深めていこうと思う💪
Discussion