nokoのブログ

こちらは暫定のメモ置き場ですので悪しからず

AWSのセキュリティ設定チェックリスト

メモ

アイデンティティとアクセス管理

  • IAMユーザにMFA設定をする
  • IAMユーザにIPアドレス利用制限をする
  • IAMユーザのキーペアをハードコーディングせずIAMロールやCognitoで代替する
  • IAMユーザのキーペアを利用するなら環境変数に設定する
  • IAMのポリシーに職務機能のAWS管理ポリシーを利用する(閲覧専用ユーザなど)
  • CognitoのMFA設定をする
  • S3バケットポリシーで、特定のVPCエンドポイントからの接続以外は全てアクセス拒否する

発見的統制(ログと監視)

  • Inspectorで、セキュリティ評価を実施する(脆弱性も検知できる。エージェントをインストールしておく)
  • System Managerを組み合わせて、Inspectorの検知結果の対策の適用を自動化する
  • Athenaによるログ分析用のクエリを用意しておく
  • VPC Flow LogsをCloudWatch LogsまたはS3に格納する

インフラストラクチャ保護

  • WAFでカスタムヘッダを利用したアクセス制限をする
  • AWS Shieldを有償プランにする(デフォルト)
  • Route53でヘルスチェックをする
  • Route53で特定地域限定設定をする
  • S3バケットにOAIのみが読み取り可能設定をする(CloudFrontにOAIという特別なユーザを設定する)
  • S3バケットに、CloudFrontからのアクセスのみ許可するようにする
  • CloudFrontで署名付きURLまたはCookieを発行して、アクセス制限をする
  • NLBで、IPを固定する要件がある場合に対応する
  • API Gatewayで、低レイテンシが要件である場合はREST APIではなくHTTP APIを利用する。ただし、Cognitoユーザプールを利用できないのでJWTを利用する。

データ保護

  • KMSでは1年ごとにキーローテーションがされるが、必要に応じて手動でもキーローテーションをする
  • KMSを利用して、SDKでKMSのAPIを呼び出し、暗号化する(CMKで暗号化できるのは4KBまで、リージョン間でそれぞれ作成する必要がある)
  • RDSの暗号化も、リージョンを跨ぐ場合は異なるKMSのCMKを指定する必要がある
  • RDSでSSLを用いて暗号化する場合は、--ssl-caオプションで証明書を指定する(証明書の更新は手順をテストしておく)
  • RDSの認証にIAM認証を使用する
  • S3 Glacierでボールトに保存されたデータをロックして修正できないようにする(S3でも可能)
  • S3のバケットごとにキーを設定して暗号化する
  • Secrets Managerにパスワードを格納する。アプリケーションからキーを指定し、Value(パスワード)を取得する
  • Secrets Managerの自動更新設定をする

インシデント対応

  • AWS Configで設定履歴を保存する+各設定がルールに準拠しているかチェックする
    • EBS暗号化
    • CloudTrail有効化
    • S3のパブリックアクセス不可
    • SGで22がパブリック公開になっていないか
    • 指定したタグがリソースに設定されているか
    • 指定したAMIが使用されているか
  • System Managerの
    • Session Managerでサーバにssh+操作ログの保存+Run Asでユーザ指定
    • Run Commandで複数サーバに一括コマンド実行
    • Inventoryで稼働するソフトウェアの一覧を表示
    • Patch Managerでパッチの適用状況の確認および自動適用
    • Explorerでパッチの適用状況の確認
  • Trusted Advisorでアカウントの状況を5つの観点をチェックする(ビジネス以上)
  • GuardDutyでAWSリソースの脅威(不正やセキュリティイベント)を検出する(EC2内やLambda関数は不可)
  • Security HubでGuardDutyなどのセキュリティサービスの検知内容を集約して確認する
  • DetectiveでGuardDutyなどの検知イベントを時系列で分析する

参考