IAMとは
AWS Identity and Access Manegement の略
AWSのサービスを利用するための権限を管理し、各サービスへのアクセスを制御する仕組み
主要トピック
- ユーザー
- グループ
- ポリシー
- ロール
ユーザー
1. ルートユーザー
AWSアカウント作成時に作られるアカウント
全てのAWSサービスとリソースを使用できる権限を有する
※ 基本的に、日常的なタスクには使用しない
2. IAMユーザー
IAMポリシー内でAWSサービスを使用出来るユーザー
※ 基本操作はIAMユーザーアカウントで行う
- 1アカウント5,000ユーザーまで作成可能
- 1ユーザー10グループまで所属可能
3. パワーユーザー
IAMユーザーやグループの管理以外の全てのAWSサービスにフルアクセス権限を有するユーザー
グループ
IAMユーザーをグルーピングし、権限管理を容易にする仕組み
- 1アカウント300グループまで作成可能
ポリシー
どのAWSリソースにどのサービスのどのような操作を許可/拒否するかを定義するもの
JSON形式で記述
1. 管理ポリシー
AWS管理ポリシー:AWSが作成・管理するポリシー
カスタム管理ポリシー:AWSアカウントで作成・管理するポリシー
2. インラインポリシー
1つのプリンシパルエンティティ(ユーザー、グループ、またはロール)に埋め込まれた固有ポリシー
JSONに記述する設定内容
key | value |
---|---|
Effect | Allow / Deny |
Action | 対象のAWSサービス |
Resource | 対象のAWSリソース |
Condition | アクセス制御が有効となる条件 |
ポリシー適用
ユーザーベースのポリシー適用:IAMユーザー、IAMグループ、IAMロールにアタッチ
リソースベースのポリシー適用:AWSリソースにアタッチ
ロール
AWSサービスやIAMユーザーの役割を定義し、アクセス権限を管理する概念
1. AWSサービスロール
付与先がAWSリソースであるロールのこと
AWSリソースがIAMロールの内容に応じて別のAWSリソースにアクセスする際には、**AWS STK(Security Token Service)**から一時的なアクセスキーを取得し、利用する
→ アクセスキーとシークレットキーのペアは不要
2. クロスアカウントアクセス用ロール
AWSアカウントをまたいだAWSサービスへのアクセスを一時的に許可するためのロール
3. AWSの外部ユーザー用ロール
IDフェデレーションという仕組みを利用し、AWS外のユーザーIDに対してAWSアカウント内のAWSリソースへのアクセスを許可出来る
IDフェデレーション
複数のシステムやサービスをまたがってIDを利用できるようにする認証連携機能
利用しているIDプロバイダーやディレクトリによって適切なIDフェデレーションを選択する
・ SAML2.0
IDプロバイダーがSAML2.0に対応している場合は、IAM SAML2.0 IDプロバイダーによるIDフェデレーションが可能
・ OpenID Connect
IDプロバイダーがOpenID Connectに対応している場合は、IAM OpenID Connect IDプロバイダーによるIDフェデレーションが可能
ウェブIDフェデレーション:FacebookやTwitterなどのOpenID Connectに対応しているソーシャルIDを利用するIDフェデレーション
・ LDAP
LDAPなど、SAML2.0に対応していないIDフェデレーションを使用する場合は、カスタムIDブローカーを開発することでIDフェデレーションを実装出来る
・ AD(ADFSなし)
オンプレミスでActive Directoryを使用し、ADFSを使用していない場合、AWS Directory Service AD Connectorを使用することで直接IDフェデレーションが可能
・ モバイル(ソーシャルID)
モバイルアプリケーションがS3やDynamoDBなどのAWSリソースにソーシャルIDを使用してアクセスする場合には、Amazon Coginfoを使用出来る
ユーザーのアクティビティの記録
1. Access Advisor:IAMエンティティ(ユーザー・グループ・ロール)が最後にAWSサービスにアクセスした日時を表示する機能
2. Credential Report:利用日時などが記録されたIAM認証情報に関わるレポートファイル
3. AWS Config:IAMのユーザー・グループ・ロール・ポリシーに関して、変更履歴・構成変更を管理・確認することが出来る機能
4. CloudTrail:AWSインフラストラクチャ全体でアカウントアクティビティをログに記録し、継続的に監視し、保持することが出来る機能