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