IAM( Identity and Access Management)とは
•AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスを安全に管理するための ウェブサービスです。IAM を使用して、リソースを使用するために認証 (サインイン)され、許可された (アクセス許可を持つ) ユーザーを制御します。
• 各AWSリソースに対して別々のアクセス権限をユーザー毎に付与できる
• 多要素認証(Multi-Factor Authentication : MFA)によるセキュリティの強化
• 一時的な認証トークンを用いた権限の委任
• 他のIDプロバイダーで認証されたユーザーにAWSリソースへの一時的なアクセス
• 世界中のAWSリージョンで同じアイデンティティと権限を利用可能
• データ変更は結果整合性を保ちながら全リージョンに伝搬
• AWS IAM自体の利用は無料
主要トピック
1. ユーザー(ルートユーザーとIAMユーザー)
ルートユーザ
- AWS ルートユーザはAWS アカウントの作成時およびAWS へのサインインに使用するアカウント。アカウント内の全てのリソースに無制限にアクセスできる。
- また、各サービスのマネジメントコンソールにはルートユーザーとしてサインインできる。
- アカウントの作成時に指定したメールアドレスとパスワードの組み合わせをルートユーザー認証情報と呼ぶ。
- 公式ではセキュリティ的な観点から「日常のアクセスには、ルートユーザー認証情報を使用しないことを推奨」している。
IAMユーザー
IAMポリシー内でAWSサービスを利用できるユーザー。基本操作はIAMユーザーで実施する。
2.グループ
IAMグループ
- 同じ権限を持ったユーザーの集まり。
- グループはAWSへのアクセス認証情報は保持しません。認証はあくまでユーザーで行い、グループは認証されたユーザーかどういった権限(サービスの利用可否)を持つかを管理します。
- グループの目的は、権限を容易かつ正確に管理する事。
- 複数のユーザーに同一の権限を個別に与えると、権限の付与漏れや過剰付与などのミス発生が高くなる。
3.ポリシー(IAMポリシー)
- IAMアイデンティティやAWSリソースに関連づけることによってアクセス許可を定義することができるオブジェクト
- AWSサービスやAWSリソースに対する操作権限をJSON形式で定義したものがIAMポリシー
- ポリシードキュメントは1つ以上のStatementブロックで構成
項目 | 内容 |
---|---|
Version | IAMポリシーの文法バージョン |
Effect | ここで定義するポリシーが許可を与えるポリシー(Allow)か拒否するポリシー(Deny)かを設定 |
Action | 「どのAWSサービス」に対する「どのような操作」を許可(拒否)するかを設定 |
Resource | 「どのAWSリソース」に対する操作を許可(拒否)するかを設定 |
管理ポリシー
AWSが提供する代表的なPolicy(管理者権限、EC2フルアクセスなど)と利用者が作成するカスタムポリシーがあります。どちらの場合も、Management PolicyはUserやRoleに与えることができるため、なんらかのPolicyを幾つかのUserやRoleで再利用する場合に便利です。
よく使われるもの
AdministratorAccess (管理者権限)
ReadOnlyAccess (読み込み権限)
AmazonEC2FullAccess (EC2に関する全権限)
AmazonS3FullAccess (S3に関する全権限)
AmazonS3ReadOnlyAccess (S3に関する読み込み権限)
インラインポリシー
Inline Policy(インラインポリシー)は、細かくアクセス許可を設定できますが、各Userや各Roleに直接設定するため、再利用はできません(Groupに設定した場合は、属するUser全体に適用できます)。
Inline PolicyはPolicy DocumentにJSON形式で記述します。 Policy Documentでは、どんなリソースに対し、どんなアクションを許可(不許可)とするかを細かく設定できます。
参考 AWS : IAMについて今更学ぶ
4.ロール(IAMロール)
- AWSサービスやアプリケーション等のエンティティに対してAWSリソースの操作権限を付与するための仕組み
- ユーザーまたはアプリケーションがロールを一時的に“引き受ける”ことで関連付けられたアクセス許可を受けることができる
- IAMユーザーやグループには紐付かない
A.AWSリソースへの権限付与
EC2インスタンス上で稼働するアプリケーションに一時的にAWSリソースへのアクセスする権限を与えたい
B.クロスアカウントアクセス
複数のAWSアカウント間のリソースを一つのユーザーで操作したい
C.IDフェデレーション
社内のADサーバーに登録されているアカウントを使用して、AWSリソースにアクセスしたい
D.WEB IDフェデレーション
FacebookやGoogleアカウントを使用してAWSリソースにアクセスしたい
AWSリソースにアクセスするしくみ
最後に
まだまだわからない部分もありますが、イメージしやいように
アップデートもしていきたいと思います。