💨
AWS IAM基礎知識
このページについて
AWSのサービスの一つであるIAMについて学習したことをメモしていく。
IAMとは?
IAMの概要
AWSサービスを、安全に操作・実施するための認証・認可の仕組みのこと
具体的にできること
- AWSアカウント内のユーザー作成
- ユーザーのAWSリソースのアクセス権限を管理
- リソース間のアクセス権限を管理
- 一時的なアクセスを許可
IAMで登場する概念
-
IAMユーザー
- AWS上の利用者は、IAMユーザーという権限を付与されたエンティティとして設定される
- ルートユーザー
- AWSアカウント作成時のアカウントのことでIAMユーザーとは別物。
- 管理者権限
- IAMの操作権限まであるが、ルートユーザーのみ行える操作の権限はない
- パワーユーザー
- IAM以外の全てのAWSリソースのフルアクセスの権限を持っている
-
IAMユーザーグループ
- IAMユーザーをグループとしてまとめて権限を付与する仕組み
-
IAMロール
- AWSリソースが別リソースに対するアクセス権限を付与する仕組み(例 :EC2 → S3)
- 別のAWSアカウントのIAMユーザーにアクセス権限を委譲する際にも利用される
-
IAMポリシー
- アクセス権限を付与するための設定ドキュメント(JSON形式)
{
"Version": "記述言語のバージョンを記載、基本は「2012-10-17」",
"id":"ポリシーの識別子(なくてもいい)"
"Statement": [
{
"Sid": "Statement内の識別子",
"Effect": "アクセスの許可・拒否の設定",
"Principal":"適用するアカウント・ユーザ・ロールを指定"
"Action": "AWSサービスへのアクセス詳細設定 ",
"Resource": "アクションの設定対象となるリソース",
"Condition": "ポリシー適用対象を絞るための追加条件(特定のタグやIDに限定など)"
}
]
}
ルートユーザーについて
ルートユーザーのみしかできない作業がある。
- ルートユーザーの情報変更
- IAMユーザーの課金情報へのアクセスに関する許可・拒否
- 他のAWSアカウントへのRoute53のドメイン登録の移行
- AWSサービス(サポート)のキャンセル
- AWSアカウントの停止
- コンソリデイテッドビリングの設定(一括請求のこと)
- 脆弱性診断フォームの提出
- 逆引きDNS申請
IAMで使われる用語(似たような意味でわかりづらい)
-
IAMリソース
- IAMで保存・管理されるユーザー、グループ、ロール、ポリシー、およびIDプロバイダー
-
IAMアイデンティティ
- ユーザー、グループ、ロール
- AWSで認証されてグループ化に使用されるIAMリソースオブジェクトのこと
-
IAMエンティティ
- ユーザーおよびロール
- AWSに認証されるIAMリソースオブジェクト
-
プリンシバル
- ルートユーザー、IAMユーザー、IAMロールを使用する人またはアプリのこと
- フェデレーティッドユーザーと引き受けたロールも含まれる
メモ
複数のポリシーを付与した場合、両方の許可範囲が権限となる
IAMポリシーについて
IAMポリシーの種類
IAMポリシーには2つ種類が存在する
- 管理ポリシー
- AWS管理ポリシー
- AWSがあらかじめ作成および管理しているIAM管理ポリシー
- カスタマー管理ポリシー
- AWSアカウントで作成・管理する管理ポリシー
- 使いまわすことが可能(使用したいポリシーがない場合に自分で作成するポリシー)
- ポリシーを変更した場合、上書きされずに新しいバージョンが作成される。
- AWS管理ポリシー
- インラインポリシー
- 1つのプリンシバルエンティティに埋め込まれた固有ポリシー
使いまわしができない、誤った相手にポリシーを割り当てないようにしている。
- 1つのプリンシバルエンティティに埋め込まれた固有ポリシー
IAMポリシー以外のボリシー
- ユーザーベースのポリシー(上記記載のIAMポリシーのこと)
- IAMエンティティにアタッチされているポリシー
- ユーザーベースのポリシーの中に管理・インラインポリシーが存在する。
- リソースベースのポリシー
- AWSリソースにアタッチされるポリシー
- 主にS3で設定することができる。
- ユーザーベースでアクセス許可されていてもリソースベースでアクセス不許可にされているアクセスすることができない。
ポリシーの効果
- 許可ポリシー
- アクセス許可・拒否を設定するIAMポリシー
- 信頼ポリシー
- 外部のアカウントがアクセスする際に必要、リソースを信頼し、アクセスを許すポリシー
- 監査人などに一時的な権限を委譲する際にも利用される(IAMロールを付与する)
IAMのアクティビティ監視
さまざまなサービスや機能を利用して、ユーザーの利用記録を管理することができる。
- IAMアクセサスアナライザー(外部アクセスの確認)
- 外部エンティティなど、組織とアカウントのリソースを識別してセキュリティ上のリスクであるリソースとデータの不適切なアクセスがないか特定する。
- IAMアクセスアドバイザー(内部アクセスの確認)
- IAMアイエンティティに許可されているサービスとアクセス日時を表示
- Credential Report
- 特定のIAMアイエンティティのIAM認証情報のレポートファイル
- AWS Config
- IAMユーザー、グループ、ロール、ポリシーの変更履歴を記録する。
- AWS CloudTrail
- 特定のIAMアイデンティティのアクティブやAPIコールをログに記録しモニタリングするサービス
IAM権限のベストプラクティス
IAMの権限を付与する際にAWSからベストプラクティスが公開されている。
- 通常はルートアカウントを使用しない
- 個々のIAMユーザーを作成して、IAMユーザーで管理を行う
- IAMユーザーへのアクセス許可を割り当てにIAMグループを利用する
- IAMユーザーやIAMグループには最小限の権限のみ設定する
- 新しくポリシーを作成するのではなく、AWS管理ポリシーを使用する
- インラインポリシーではなく、カスタマー管理ポリシーを使用する
- ユーザーのために強度の高いパスワードポリシーを設定する
- MFAを有効化する
- AmazonEC2インスタンスで実行するアプリケーションにはIAMロールを使用する
- 第三者に一時的に認証を付与する場合、IAMロールを使用してアクセス許可を移譲する
- アクセスキーを共有しない
- 認証情報を定期的にローテーションする
- 不要な認証情報を削除する
- AWSアカウントのアクティビティを監視する
IAM設計
IAMユーザーを作成・付与する際は、以下の指針を参考に行うといい。
- AWSを利用するユーザーの役割・アクセス権限を自社の組織構造と合わせて設計を行う。
- 少数利用の場合、IAMユーザー、中規模の場合IAMグループを利用する。
- 今後人数が増えたり、変わったりするのであればIAMグループを使用する。
- AWS利用者の特定→同じ役割や利用範囲を1つのグループとしてまとめる
- 利用者の役割と利用範囲を整理→グループ名の名称と最小限利用範囲を確定する。
Discussion