AWSブラックベルトオンラインセミナーを参考に、IAMの運用についてのプラクティスをチェックリストにして残しておきます。
認証情報の管理
- ルートユーザーを使用しない
- IAMユーザーには強力なパスワードポリシーを設定する
- アクセスキーを複数人で共有しない
- 次のような場所にアクセスキーを置かない
- Githubリポジトリ
- AMIの中への埋め込み
- 設計書等のドキュメント内
- 特権ユーザーに対してはMFAを必須化するポリシーをアタッチする
- EC2で実行するアプリケーションからAWSへのアクセスにはアクセスキーではなくIAMロールを使用する
アクセス権限の管理
- メンテナンスが発生するインラインポリシーではなく再利用性の高いカスタマー管理ポリシーを利用する
- ポリシーのCondition要素によってポリシーが有効になる条件をさらに絞り込む
- リクエストを許容するソースIPアドレスの範囲
- 日付または時間の範囲
- MFAデバイスでの認証の要求
- SSL使用の要求
- IAMポリシーを作成する場合、権限は最小にする。広範囲な権限を後から絞るのではなく、最小限のアクセス権限から開始し、必要に応じて権限を追加する
- IAMユーザーへの権限はIAMユーザーに直接付与するのではなくIAMグループを使用する
認証情報とアクセス権限の継続的な評価
- CloudTrail、AWS Config、S3等のロギング機能でAWSアカウントのアクティビティを監視し、権限が適切かどうか継続的に評価する
- アクション日時
- アクションのソースIP
- 不適切なアクセス許可のために失敗したアクション等
- IAMのアクセスアドバイザーを使い、IAMエンティティ(ユーザー、グループ、ロール)の最終アクセス日時を確認し、不要な権限が与えられていないか確認する
- IAMの認証情報レポートを使い、不要な認証情報を削除する
- 認証情報(IAMユーザーのパスワード、アクセスキー)は定期的にローテーションする
- IAMユーザーにはパスワードに有効期限を設け、ユーザーに定期的にパスワード変更を求める
- アクセスキーは2つまで作成できる。安全なローテーションのため、新しいものを作成し、古いキーは認証情報レポートでアクセスがないことを確認してから無効化する