コンテンツにスキップ

「AWS 基礎セキュリティのベストプラクティス v1.0.0」ガイド

本サイトは Classmethod Cloud Guidebook (CCG) のデモサイトです

デモサイトのため、実際の内容と相違がある点にご留意ください。
クラスメソッドメンバーズをご契約中のお客様は下記リンクからアクセスください。
Classmethod Cloud Guidebook

このページでは AWS Security Hubの「基礎セキュリティのベストプラクティス」の各チェック項目(コントロール)に対する弊社としての推奨対応やコメントを記載します。

なお、合わせてAWS公式ユーザーガイドの内容も参考にしてください。

凡例

各コントロールには以下情報を記載しています。

  • 【重要度】 - コントロールの重要度(Low/Medium/High/Critical) を記載しています。重要度は「コントロールの対応優先度」を決定する指標になります。
  • 【クラスメソッド推奨対応】 - 対応すべきか、クラスメソッド AWSエンジニアとしての見解を記載します。以下 2つの値をとります。
    • 必須 - 原則対応することが望ましい項目です。
    • やらなくてよい - 「必須」項目に比べると対応優先度は低いです。要件次第ではコントロールを無効化することも検討します。
  • 【クラスメソッドコメント】 - コントロールに対する クラスメソッド AWSエンジニアのコメントを記載します。無効/抑制の判断基準や、役立つ参考情報を記載します。

コントロール一覧(抜粋)

Note

デモ用のため、一部のコントロール数のみ表示させています。

タイトル 重要度 CM推奨対応
[CloudFront.1] CloudFrontのディストリビューションでは、デフォルトのルートオブジェクトが設定されている必要があります ⚠ Critical 必須
[EC2.2] VPC のデフォルトのセキュリティグループはインバウンドトラフィックとアウトバウンドトラフィックを許可しない必要があります 🟥 High 必須
[EC2.22] 使用していないセキュリティグループは削除する必要があります 🟧 Medium やらなくて良い
[ECS.10] Fargateサービスは最新のプラットフォームバージョンで実行する必要があります 🟧 Medium やらなくて良い
[S3.13] S3バケットには、ライフサイクルポリシーを設定する必要があります 🟦 Low やらなくて良い
[WAF.10] WAFV2のweb ACLには、少なくとも1つのルールまたはルールグループが必要です 🟧 Medium 必須

[CloudFront.1] CloudFrontのディストリビューションでは、デフォルトのルートオブジェクトが設定されている必要があります

  • 重要度: Critical
  • クラスメソッド推奨対応: 必須

クラスメソッドコメント

デフォルトのルートオブジェクトを指定して、ルートへのリクエストの対応を明示的に書いておくことを推奨します。 デフォルトのルートオブジェクトを定義していない場合は、ルートへのリクエストはオリジンサーバへ渡されます。 例えばオリジンサーバが S3バケットであった場合、バケットポリシーのミスなどで「意図しない ListObjects 情報」がルートURLによって知られてしまうリスクがあります。

ただし既存ディストリビューションにおいてデフォルトルートオブジェクトを設定する際には、 影響が無いかアプリケーション担当者としっかり確認・調整して下さい。場合によっては『適切なオリジン設定である』条件下で抑制済み登録をしてもよいです。

特にリダイレクト周りの設定を確認して下さい。 例えば、Lambda@Edge の設定次第では以下のような障害が発生します。

  • (1) Lambda@Edge の設定で "/index.html" を "/" に変換する設定を入れている
  • (2) CloudFrontのデフォルトルートオブジェクトを index.html に設定した
  • その結果ルートアクセスの際に、 (1) と (2) が交互に起きてしまい too-many-redirects エラーが発生

参考

[EC2.2] VPC のデフォルトのセキュリティグループはインバウンドトラフィックとアウトバウンドトラフィックを許可しない必要があります

  • 重要度: High
  • クラスメソッド推奨対応: 必須

クラスメソッドコメント

デフォルトのセキュリティグループは利用者が誤って使ってしまう可能性があります。 その場合に意図しないアクセス経路を出さないためにも、デフォルトのルールは削除すべきです。

セキュリティグループを利用しているかは、以下ブログの手順で確認できます。

デフォルトのセキュリティグループを利用していない場合は関係者に確認の上、ルールを削除します。

デフォルトのセキュリティグループを利用している場合、セキュリティグループをコピーし新規作成したセキュリティグループに切り替えます。セキュリティグループのコピーは以下ブログを参照してください。

参考

[EC2.22] 使用していないセキュリティグループは削除する必要があります

  • 重要度: Medium
  • クラスメソッド推奨対応: やらなくて良い

クラスメソッドコメント

使用していないセキュリティグループを定期的に棚卸しすることで、意図しないセキュリティグループをリソースにアタッチする可能性を下げることができます。 特に似たようなセキュリティグループが存在して一方を使用していない場合等は、誤った操作を防ぐために削除することを推奨します。 ただし、運用上の理由で定期的にアタッチとデタッチを繰り返すようなセキュリティグループが発生する可能性もあります。例外なく対応必須とは言えません。

参考

[ECS.10] Fargateサービスは最新のプラットフォームバージョンで実行する必要があります

  • 重要度: Medium
  • クラスメソッド推奨対応: やらなくて良い

クラスメソッドコメント

FargateのプラットフォームバージョンがLATESTになっているかチェックします。 新しいバージョンには、カーネル・OSアップデート/セキュリティパッチ/バグ修正や、新機能の実装などメリットがあります。 プラットフォームバージョンはLATESTか、サポート対象の特定バージョンを指定可能です。

LATESTを指定すると、プラットフォームバージョンにアップデートがあった場合は、次回以降のデプロイ時に最新のバージョンで実行されます。 最新バージョンへの変更は、更新内容を検証した上で実施するべきです。 例えば1.4.0へのバージョンアップ時には、追加でVPCエンドポイントが必要となるケースがありました。

参考

[S3.13] S3バケットには、ライフサイクルポリシーを設定する必要があります

  • 重要度: Low
  • クラスメソッド推奨対応: やらなくて良い

クラスメソッドコメント

ライフサイクルポリシーをS3バケットに設定することで、一定期間の経過後にオブジェクトを別のストレージクラスへ移行や、削除が可能です。 S3ストレージコストを削減したい場合に、以下の観点で要件を整理して設定するのがよいです。

  • ストレージクラス移行
    • オブジェクトのサイズが128KB以上
    • オブジェクトのアクセス頻度
    • オブジェクトの取り出し時間
  • 削除
    • ログ等の一定期間の保管のみ必要なオブジェクト

参考

[WAF.10] WAFV2のweb ACLには、少なくとも1つのルールまたはルールグループが必要です

  • 重要度: Medium
  • クラスメソッド推奨対応: 必須

クラスメソッドコメント

web ACLにルールやルールグループが設定されていないとリクエストが検査されず、通過されます。WAFとして機能しないため、チェックは必須です。 ルールが設定されていないweb ACLであっても、web ACL1個単位で課金されるため不要なweb ACLは削除して下さい。

参考