IAM関連の知識整理
AWSアカウント
(いってみれば請求単位。)
一般的にAWS以外だと「アカウント」=「ユーザー」=「人」のイメージだが、AWSはそうじゃないので、初心者は要注意。
・個人に紐づくものではない。
IAMユーザー
人。
こっちが一般的な「アカウント」のイメージ。
(語弊あるが、・個人に紐づくもの、のイメージに近い。)
IAMロール
- IAMポリシー群をまとめたもの。
- (( IAMロールをエンティティ(IAMグループ、IAMユーザ)にアタッチする? ))
- IAM Roleの使い方は、概ね2通り。
- AWSリソース(EC2やLambdaなど)にアタッチして使う
- IAM Userや他のIAM Roleから"AssumeRole"(Roleの引き受け)をして使う
- 「コンソールログインのためのパスワード」、「Access Key」、「Secret Access Key」といったものは発行できません。
IAMポリシー ★一言で言えば「許可リスト」
- IAMポリシーはJSON形式でAWSリソースへのアクセス権限を設定するドキュメント
プリンシパルエンティティ = プリンシパル(Principal) =IAMアイデンティティともいう
- IAMユーザ、IAMグループ、IAMロールのこと。
- IAMアイデンティティともいう。
IAM
▼参考サイト▼
https://qiita.com/Batchi/items/a2dde3d2df27568cc078
↓ 要するにこういうこと。
-
リソースベース =(IAM以外)
- S3バケットポリシー
- VPCエンドポイントポリシー
- SNSのtopic policy
- などがある。
-
IDベース(=IAM)
- インラインポリシー
- 管理ポリシー(※推奨)
- AWS管理ポリシー
- カスタマー管理ポリシー
○○ベース =つまりIAMかIAM以外か。 |
ポリシーの種類 | ||
---|---|---|---|
リソースベース =IAM以外 | S3バケットポリシー | ||
VPCエンドポイントポリシー | |||
SNSのtopic policy | |||
IAM ロールの信頼ポリシー ※これはIAMなので混乱しますね。。 | |||
などなど ※他にもあるかは調べてません | |||
IDベース=IAMのこと | インラインポリシー | ||
管理ポリシー ※推奨 |
AWS管理ポリシー | ||
カスタマー管理ポリシー |
IDベースとリソースベースの違い
-
リソースベース = IAM以外のこと。
例: S3のバケットポリシー、VPCエンドポイントポリシー、SNSのtopic policy など -
IDベース = IAMのこと
IDベース
- いわばIAMのこと。
- 「誰がどのリソースに対して○○できる」
リソースベース
- 例えばS3のバケットポリシー。「このリソースに対して誰が○○できる」
- インラインポリシーをリソースにアタッチする
管理ポリシーとインラインポリシーの違い
IAMポリシーには
インラインポリシー
管理ポリシー
の2種類がある。
※おそらく、マネージドコンソールでの表示では、
許可を追加 = 管理ポリシーの追加
インラインポリシーを作成 = そのままだが、インラインポリシーの追加 を指している
インラインポリシー
- 埋め込み型
- 「ポリシー」単体では存在できず、プリンシパルエンティティと1対1の関係にある。
- 基本的に管理ポリシーの方が推奨されているけど、逆に意図しない形でアクセス権の付与や変更が行われないようにしたい場合には、インラインポリシーを使用するのが良しとされているようです。
管理ポリシー =管理ベース
- スタンドアローン型。
- 「ポリシー」単体として存在できて、複数のプリンシパルエンティティにつけたり外したりできる。
- 通常は管理ポリシーの利用が推奨されている
- 1対多の関係でプリンシパルエンティティにアタッチできる
- ポリシーの変更時にはアタッチ済みのプリンシパルエンティティすべてに反映される
- ポリシーの変更をバージョン管理できる
- 管理ポリシーには、さらにAWS管理ポリシーとカスタマー管理ポリシーがある。
AWS管理ポリシー
予めAWSによって用意されている管理ポリシー。大まかに各AWSサービスごとにフル権限と読み取り権限が用意されている。
カスタマー管理ポリシー
利用者が独自に作成する管理ポリシー。ジェネレータで作成するか手書きで作成する。
↓ 上記を受けて、、、
↓