はじめに
「AWS Black Belt Online Seminar IAM Part1」を視聴したので備忘録です
IAM とは
IAM の定義
AWSリソースをセキュアに操作するために認証・認可の仕組みを提供するマネージドサービス
IAM の特徴
・各AWSリソースに対して別々の権限をユーザ毎に割り当てることができる
・多要素認証にも対応
・一時的なトークンを用いた認可ができる
・料金は無料
IAM 用語解説
ルートユーザ
ルートユーザとは
そのアカウントの全てのAWSサービスとリソースに全ての権限を持つユーザ(なんでもできる)
注意事項
・基本的なオペレーションはルートユーザでは行はない
・ルートユーザのアクセスキーは作成しない
・ルートユーザの認証情報をプログラムに埋め込まない
・多要素認証を有効化する(強い権限を持つIAMユーザにも多要素認証を有効化した方がいい)
ルートユーザでしかできない操作
・ルートユーザのパスワード/メールアドレスの変更
・IAMユーザに課金情報の権限を与える
アクセスキー
アクセスキーとは
ルートユーザ、IAMユーザが持つことのできる長期的な認証情報
(手動で削除または無効化しない限り有効)
使用用途
・AWS CLI や AWS SDKからリクエストを出す際に使用する
注意点
・アクセスキーは共有しない
・Git HubやAMIの中への埋め込みなどはしない
・設計書などのドキュメントに記載しない
IAMユーザ
IAMユーザとは
AWSで作成するユーザ
IAMの識別方法
・ユーザ名
・ユーザのARN(Amacon resource name)
認証方法
・コンソールパスワード(AWSコンソールにログインするときに使う)
・アクセスキー(プログラムを使ってアクセスするときに使う)
(ユーザ作成時に作成する認証情報を選べる)
注意点
・ルートユーザを使わず、必要に応じてIAMユーザを作成する
・強力なパスワードポリシーを設定する
個別にIAMユーザを作成することのメリット
・認証情報を個別に変更できる
・Amazon Cloud Trailログからアクションを追跡できる
IAMポリシー
IAMポリシーとは
IAMアイデンティティ(ユーザ、ロール、AWSリソース)に関連づけてアクセス許可を定義するもの
IAMポリシーの特徴
・JSONのポリシードキュメントで定義する
IAMポリシーの種類
・AWS管理ポリシー
AWSによって定義されたポリシーで、ユースケースに合わせた定義が沢山ある。
定義の種類2つ
①リソースごとのポリシー:S3フルアクセス、S3リードオンリーなど
②ジョブごとのポリシー:アドミンポリシーなど
・カスタマー管理ポリシー
ポリシーの内容をカスタマイズできる
そのため、別のAWSアカウントでは使用できない
・インラインポリシー
1つのエンティティに直接埋め込まれたポリシー
エンティティが削除されると一緒に削除される
注意点
・インラインポリシーはあまり使わないようにする
ポリシードキュメント
ポリシードキュメントとは
JSONで記述された、権限の定義
ポリシードキュメントの主な要素
・version:ポリシードキュメントのバージョン、必須ではない
・statement:具体的なアクセス許可を記載する、以下5つの要素を記載できる
・effect:Allow/Denyを指定
・principal:AWSリソースへのアクセスが許可/拒否されるIAMエンティティを指定する
IAMグループ、ワイルドカードは指定できない
・action:許可/拒否される特定のアクションを指定する
NotActionを使うと、指定したもの以外を許可という指定ができる
ワイルドカードで許可するアクションを指定可能
・resource:プリンシパルがアクセスできるAWSリソースを指定する
ワイルドカードで許可するリソースを指定可能
・condition:ステイトメントが有効になるタイミングの条件を指定する
必須ではない
アクセス可否の決定ロジック
明示的な許可 > 暗黙的な拒否
明示的な拒否 > 明示的な許可
IAMグループ
IAMグループとは
IAMユーザの集合体
IAMグループの特徴
・IAMユーザしか所属させることができない
・IAMユーザは複数のグループに所属させることができる
・IAMグループ自体は認証情報を持っているわけではない
IAMグループの使い方
・IAMユーザが増えたときに管理を簡単にするために使う
IAMロール
IAMロールとは
AWSサービスやアプリケーション等のエンティティに対してAWSリソースの操作の権限を付与するための仕組み
AWS CloudTrail
AWS CloudTrailとは
AWSリソースにどのような操作が加えられたかの記録を残す機能
使用用途
・どのようなユーザがAWSリソースを操作しているかの確認
・正しい運用ができているかを評価するために使用する
アクセスアドバイザー
アクセスアドバイザーとは
IAMエンティティが最後にAWSリソースにアクセスした日付と日時を表示する機能
使用用途
IAMの最小限のアクセスを設定するための指針にする。
(作ったときに必要だと思った権限だけど、使われていないものや使わなくなったものが分かる)
IAM認証情報レポート
IAM認証情報レポートとは
CSV形式でIAMの認証情報の記録を出力する
4時間毎に一回出力できる
出力情報の例
・最後にユーザが使われた日時
・AccessKeyがアクティブか
・AccessKeyを最後に使用した日時
・AccessKeyが最後に使用したAWSリソース
・証明書はActiveか
・AccessKey、証明書をローテートした日時
使用用途
不要な認証情報を削除するために使用する
認証情報の適切なローテーションができているかどうかを確認するために使用する(パスワード変更)
IAMユーザのローテーション
IAMユーザのパスワードポリシーで自身のパスワードを変更できるように設定。
パスワードに有効期限を設けて、利用者が定期的にパスワードをローテーションできるようにする。
AccessKeyのローテーション
新しいアクセスキーを作成してテストしたのちに、既存のキーをインアクティブにする。
問題が発生した場合は元のキーに戻すことができる