【あいあむ】

IAM(アイデンティティとアクセス管理) とは?

💡 クラウドの「入館証と権限カード」を管理する門番
📌 このページのポイント
ユーザー グループ 引受 ロール EC2用ロール Lambda用ロール 付与 ポリシー {'{'} "Effect": "Allow" "Action": "s3:Get*" "Resource": "arn:aws:s3:::*" {'}'} 制御 リソース S3 ストレージ EC2 サーバー RDS データベース ユーザー/グループがロールを引き受け、ポリシーの許可範囲でリソースにアクセスできる
IAMの構成要素
ひよこ ひよこ

IAMって要するにパスワード管理のこと?

ペンギン先生 ペンギン先生

パスワード管理はIAMの一部でしかないよ。IAMは「認証(あなたは誰?)」と「認可(あなたは何ができる?)」の両方を扱うんだ。例えばAWS IAMなら、Aさんは「S3の読み取りだけ」、Bさんは「EC2の起動と停止ができる」みたいに、操作単位で細かく権限を設定できる。

ひよこ ひよこ

ユーザーとロールって何が違うの?

ペンギン先生 ペンギン先生

ユーザーは人間に紐づくアカウント。ロールは「権限の帽子」みたいなもので、必要なときにかぶって使う。例えばEC2インスタンスにロールを付けると、そのインスタンス上のプログラムがS3にアクセスできるようになる。アクセスキーを直接埋め込むより安全なんだ。

ひよこ ひよこ

「最小権限の原則」ってよく聞くけど、実際にはどうやるの?

ペンギン先生 ペンギン先生

最初は必要な権限だけを付けて、足りなかったら追加する。AWSにはIAM Access Analyzerという機能があって、実際に使われた権限のログから「この権限は不要です」と教えてくれるんだよ。

ひよこ ひよこ

IAMポリシーって書くの難しそうだけど、間違えたらどうなるの?

ペンギン先生 ペンギン先生

これがIAMの怖いところでね。ポリシーの「Resource」に「*」と書くと全リソースに適用されるし、「Effect: Allow」と「Effect: Deny」の組み合わせの評価順序を間違えると意図しないアクセスを許可してしまう。特にDenyは常にAllowに勝つんだけど、条件キーやリソースベースポリシーとの組み合わせになると、ベテランでも評価結果を直感で当てられなくなる。AWSのポリシーシミュレーターで事前にテストするのが鉄則なんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「IAM」って出てきたら「クラウドで誰がどのリソースに何をできるかを管理する仕組みのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Identity and Access Management」 = IDとアクセスの管理
💬 Identity(身元)を確認して、Access(アクセス)をManagement(管理)する。「私は誰か(I AM)」と読めるのは偶然ではないかも
← 用語集にもどる