AWS Identity and Access Management(IAM)は、AWSを使用するユーザーのアクセス権限を管理する。
#AWSのアカウントの種類
###ルートユーザー
AWSアカウント作成時に作られるIDアカウント
ルートユーザーは、ネットワーク上のどこからでも操作できる権限を持っている。(Administrator的存在)
AWSでシステムを構築・運用する際は、このアカウントを使うことは極力避ける!!!
ルートユーザーしかできないこと
- AWSルートアカウントのメールアドレスやパスワードの変更
- IAMユーザーの課金情報へのアクセスに関するactivate/deactivate
- 他のAWSアカウントへのRoute53のドメイン登録の以降
- CloudFrontのキーペアの作成
- AWSサービス(サポートなど)のキャンセル
- AWSアカウントの停止
- コンソリデイテッドビリングの設定(複数アカウントを統合した請求の設定)
- 脆弱性診断フォームの提出(AWSに脆弱性の診断ができる)
- 逆引きDNS申請
###IAMユーザー
AWSを利用する各利用者向けに作成されるアカウント
システム構築・運用する際は、このアカウントを使う。
###AWS Organizations(組織アカウント)
IAMのアクセス管理を大きな組織でも楽に実施できるようにするサービス
- 複数のAWSアカウントを一元管理:AWSアカウントをグループ化してポリシーを適用して一元的に管理できる
- 一括請求:複数AWSアカウントの請求をひとまとめにする一括決済が可能
- 新規アカウント作成の自動化:コンソール、SDK、CLIでAWSアカウントを新規作成して、作成内容をログ管理できる
#IAMの機能
IAMには次の4つの機能がある。
- IAMポリシー
- IAMユーザー
- IAMグループ
- IAMロール
##IAMポリシー
Action(どのサービスの)、Resource(どういう機能や範囲を)、Effect(許可/拒否)という3つの大きなルールに基づいて権限を設定する。
ポリシー:ユーザーやグループ、ロールに付与する権限をオブジェクトとして管理する
- インラインポリシー:対象ごとに作成・付与するポリシー
- 管理ポリシー:1つのポリシーを複数のユーザーやグループに適用できる
- AWS管理ポリシー:AWS側が用意しているポリシー
- カスタマー管理ポリシー:ユーザー自身が管理するポリシー
基本的には、AWS管理ポリシーで基本的な権限を付与し、カスタマー管理ポリシーでIPアドレス制限などの制約を行う。
インラインポリシーは、管理が煩雑になるので、基本的には使わない。(一時的に個別のユーザーに管理を付与するときに利用するなど)
##IAMユーザーとIAMグループ
ユーザーは、AWSを利用するために各利用者に1つずつ与えられる認証情報(ID)。
IAMユーザーの認証方法は、次の2つ
- ユーザーIDとパスワード:Webコンソールにログインするときに使用。
- アクセスキーとシークレットアクセスキー:CLIやAPIからAWSのリソースにアクセスする場合に使用。
グループは、同じ権限を持ったユーザーの集まり。
認証されたユーザーがどういった権限(サービスの利用可否)を持つかを管理する。
グループとユーザーは、多対多の関係である。
###IAMユーザー
1アカウントで5000ユーザーまで作成可能
設計内容
- ユーザー名
- パス(オプション):パスを元にユーザーの検索ができ、組織階層やプロジェクトなどを設定できる
- 所属グループ:10のグループまで設定可能
- パーミッション:AWSサービスへのアクセス権限
###IAMグループ
1アカウントで300グループまで作成可能
設計内容
- グループ名
- パス
- パーミッション:グループに設定したパーミッションは、IAMユーザーに付与したパーミッションと同時に評価する
##IAMロール
一時的にAWSリソースへのアクセス権限を付与する場合に使用。
例)
- AWSリソースへの権限付与:EC2インスタンス上で稼働するアプリケーションに一時的にAWSのリソースへアクセスする権限を与えたい
- クロスアカウントアクセス:複数のAWSアカウント間のリソースを1つのIAMユーザーで操作したい
- IDフェデレーション:社内のADサーバーに登録されているアカウントを使用して、AWSリソースにアクセスしたい
- Web IDフェデレーション:FacebookやGoogleのアカウントを使用してAWSリリースにアクセスしたい
#参考