AWS IAM
IAM Policy
どういう条件下で何に対してどんな操作が許可/禁止されているかを表すもの。 IAM Role, IAM Group, IAM User にアタッチして使用する。
いくつか種類がある。
- 管理ポリシー (managed policy)
- カスタマー管理ポリシー
- AWS のユーザが定義できるポリシー
- 基本的にはこれを使うと良い
- AWS 管理ポリシー (ReadOnlyAccess, AdministratorAccess, AmazonS3ReadOnlyAccess など)
- AWS が事前に用意したポリシー
- 変更不可
- 細かい権限を設定したい場合はカスタマー管理ポリシーを作成する
- カスタマー管理ポリシー
- インラインポリシー (inline policy)
- 二重管理になりやすいのでカスタマー管理ポリシーを使うべき
その他リファレンス:
リソースベースポリシー
IAM User, IAM Group, IAM Role などにアタッチはせず、 S3 Bucket などのリソースに設定するポリシー。
一般的には IAM Policy かリソースポリシーのどちらかで許可されていれば操作可能。 ただしアカウントをまたいだ操作の場合は、どちらかではなく両方で許可されている必要がある。
IAM Role
主に AWS リソースに対して割り当てるもの。
IAM Policy をアタッチできる。
sts:AssumeRole
の API を IAM Role に対して呼び出すことによって、 IAM Role にアタッチされたポリシーの権限を持った一時的なアクセスキーを取得できる。
信頼ポリシー (assume role policy、信頼関係) に誰が (どの principal が) この IAM Role を使えるか指定することによって使えるようになる。
principal として代表的なものは、 AWS リソース ({"Service": ["lambda.amazonaws.com"]}
) 、AWS アカウント ({"AWS": "123456789012"}
) など。
IAM Group
グループ。部署や役割(開発者、運用担当、管理者など)ごとに1つ。
IAM Policy をアタッチできる。
IAM User
個人。一人につき一つ。
IAM Policy をアタッチできる。
AWS のアクセスキーは IAM User に紐づく。 ただし、アクセスキーを発行すること自体が推奨されていない。 可能な限り IAM User のアクセスキーを使用するのではなく、 IAM Role を使うことが推奨されている。
IAM Policy を直接ユーザに紐付けることもできるが、二重管理になりやすいので IAM User より IAM Group に IAM Policy を紐付けるべき。
AWS アカウント
数値12桁のアカウント ID で管理される。 個人のものではない。 1つの AWS アカウント内に複数の IAM User, IAM Group, IAM Role などがある。 よくある使い方ではサービスやその環境ごとに1つのアカウントを作る (Hoge サービスの開発環境用アカウント、本番環境用アカウントなど…)。
AWS Organizations
複数の AWS アカウントをまとめて管理するためのサービス。
SCP (サービスコントロールポリシー)
TODO
パーミッションバウンダリー
TODO
参考
- リファレンス
- Black belt
- 関連書籍