[運用のコツ]AWS Security Hub CSPM運用のためのコントロールのカテゴライズと対応方針の決め方
こんにちは、臼田です。
みなさん、AWSのセキュリティ運用してますか?(挨拶
AWSのセキュリティ運用に欠かせないサービスの1つがAWS Security Hub CSPMですが、もちろん使っていますよね?
今回はタイトルにあるようにAWS Security Hub CSPMの運用のコツを共有します。
普段AWS Security Hub CSPMを利用しているけど、検出内容が多くて対応がうまくできていないとか、各チームがバラバラの基準で対応していて全体でレベル感を合わせられていないなどいろんな課題があると思います。
このような悩みに対する1つのアプローチを提示できればと思います。
ちなみに最近のアップデートで従来「AWS Security Hub」と呼んでいたものが、「AWS Security Hub CSPM」となり、更に新しく各種AWSセキュリティサービスを束ねて可視化や関連付けた調査ができるようになったのが新しい「AWS Security Hub」なので、間違えないように気をつけてください。詳細は下記をご確認ください。
この記事上ではだいたい「AWS Security Hub CSPM」の表記で統一しますが、画像など一部に単に「AWS Security Hub」とだけの表記も残っています。それらも「AWS Security Hub CSPM」と読み替えてください。新しい「AWS Security Hub」には触れません。
AWS Security Hub CSPM概要
運用のコツの前に、簡単にAWS Security Hub CSPMを整理しておきましょう。
AWS Security Hub CSPMは、AWSアカウント上の様々なリソースの設定状態を収集し、危険な設定を通知してくれるサービスです。
設定情報自体はAWS Configがその役割を担います。AWS Security Hub CSPMはAWS Configが収集してきた設定情報に対して、危険なものが無いかをチェックし検出してくれます。
例えば、コントロールIDEC2.19
ではSecurity GroupでSSHを0.0.0.0/0で許可しているものを検出したり、コントロールIDIAM.8
では長期間未使用のアクセスキーを検出してくれます。
これらのセキュリティチェックはCloud Security Posture Management、CSPMと呼ばれる領域の機能で、クラウド時代に設定も多くなりバラバラな場所で沢山の設定を管理する事が増えたため生まれた仕組みです。
AWS Security Hub CSPMでは複数の目的に合わせたセキュリティチェックリスト(スタンダードと呼ぶ)があります。例えば以下のものです。
- CIS AWS Foundations Benchmark
- PCI DSS
- NIST SP 800-53 Revision 5
- AWS 基本的なセキュリティのベストプラクティス(AFSBP)
上3つは特定のコンプライアンス要件のものですが、一番下のAFSBPはAWSが定義し更新し続けているスタンダードです。
私の個人的な意見としては、特に組織として明確に従うコンプライアンス要件がない場合などで一番活用すべきなのがこのAFSBPです。
AFSBPは対応しているAWSリソースが60種類、チェック項目が318種類と網羅性も高く実務的なチェック項目(コントロールと呼ぶ)が多いので強く推奨します。例えばCIS AWS Foundations Benchmarkを利用している場合でも、AFSBPを併用すべきと提案する程度です。
一方AWS Security Hub CSPMでチェックされる内容は多岐にわたるため、AWSやAWSセキュリティの初心者からするとハードルが高いように感じるかもしれません。
しかし、AWS Security Hub CSPMは初心者にこそ推奨されるサービスです。なぜならAWSの多岐にわたる設定を最初から適切に設定していくことは困難だからです。AWS Security Hub CSPMを最初から利用することで、もし誤って危険な設定をした場合にはすぐに検出され、「それが危険なことだ」と認識し学習することができます。
AWSを適切に使っていくための学習にもAWS Security Hub CSPMが使える、と考えて最初から使いましょう。絶対に最初から使いましょう。そして全てのAWS環境で使いましょう。
AWS Security Hub CSPM運用の課題
AWS Security Hub CSPMを使い始めた方など、以下のような画面に遭遇して悩んでいませんか?
うわっ…私のセキュリティスコア、低すぎ…!?
既存である程度利用されたAWS環境の場合には、そこからAWS Security Hub CSPMを有効化すると上記のように最初から多数の検出があり、セキュリティスコアも低くて何から始めればいいのかわからなくなります。
これは各種AWSサービス自体や機能についても十分理解していないと判断が難しいという背景があります。
組織の場合には、スコアが低い状態のまま誰もうまく対応できず放置されている場合もあります。
これは組織の中で具体的にAWSのセキュリティ対策をどうしていくのかという方針が決まっていないことから、担当者が決まっていなかったり、基準が決まっていないなどの要因もあります。
AWS Security Hub CSPM運用のコツ
それでは本題です。
タイトルにあるように、ここではAWS Security Hub CSPM運用のコツとして各コントロール、つまりセキュリティチェックの項目を__カテゴライズ__することを推奨します。
どういうことかというと、300以上あるコントロールを10種類程度のチェック項目のカテゴリに当てはめていくということです。だいたい同じような内容にカテゴライズできれば、考えるのも簡単になりますよね。
具体的には以下のようになります。
ここに上げているカテゴリの項目は以下です。
- 通信の暗号化
- 保管時の暗号化
- ログ取得
- 可用性
- バックアップ
- アクセス制御
- 認証情報管理
- 設定チェック
- 保護
- 脆弱性管理
- コスト最適化
カテゴリの詳細解説は一旦後に回します。
そしてカテゴライズしたら、各AWS環境でこれらのカテゴリをどのように適用していくか対応方針を検討します。
大きく適用する内容が変わる環境の種類として、「本番環境」と「本番環境以外」が挙げられます。これらは明確に違い、本番環境では一般的に以下の特徴がありカテゴリごとの対応方針をより厳密にする必要があります。
- 外部に公開する環境
- 守るべき重要なデータがある
- システムの重要度が高い
そのため、本番環境以外と比べて特に「可用性」「ログ取得」「バックアップ」の必要性が上がります。
もちろん、環境の種類の定義はみなさんの組織に合わせてもっと種類を増やしてもよいです。例えば本番環境以外といっても、重要なシステムの開発環境であればより本番に近く、個人の検証を行う環境であればもっと緩やかに対応方針を適用していく、とすることも可能でしょう。
大事なのはコントロールのカテゴリと環境の種類を掛け算して、自分たちの対応方針を決めていくことです。
対応方針としてはここでは以下3種類としました。
- 対応必須
- どのような場合でも必須なもの
- あるいは組織全体のセキュリティガバナンスとして管理したいもの
- 通知のみ
- 知っておいた方が良いが、組織全体のセキュリティガバナンスとしての管理が不要なもの
- あるいは可用性要件など、本番環境では必須になるが本番環境以外の場合など
- 無効化
- セキュリティの管理として必要ない、あるいは運用負荷が高いなど邪魔になると判断したもの
もっと細かく決めてもよいですが、最初はこれぐらいで定義していくのがいいと思います。また、組織全体での定義として考える場合、各部門ごと決めてほしいことと全体で揃えたほうが良いことがあるので、どちらが決めるべきことなのか?というのは対応方針に織り込んでおくとよいでしょう。
AFSBPのカテゴライズ
実際にAFSBPのコントロールを上記カテゴリに当てはめてみます。これが一番大変だと思いますが、私がやっておきました。以下のようになります。(これは私のカテゴライズと私の対応方針の決め方なので、真似してよいですし、アレンジしてもよいです)
名前 | 重要度 | カテゴリ | 本番環境 | 本番環境以外 |
---|---|---|---|---|
[ Account.1 ] AWSアカウントのセキュリティ連絡先が記載されていること | Medium | 設定チェック | 対応必須 | 対応必須 |
[ ACM.1 ] ACM 証明書は、指定された期間後に更新する必要があります。 | Medium | 可用性 | 対応必須 | 対応必須 |
[ ACM.2 ] ACM が管理する RSA 証明書は、少なくとも 2,048 ビットの鍵長を使用する必要があります | High | 通信の暗号化 | 対応必須 | 対応必須 |
[ APIGateway.1 ] API Gateway RESTとHTTP APIのロギングを有効にする必要があります | Medium | ログ取得 | 対応必須 | 通知のみ |
[ APIGateway.2 ] API Gateway REST APIステージでは、バックエンド認証にSSL証明書を使用するように設定する必要があります | Medium | 通信の暗号化 | 通知のみ | 通知のみ |
[ APIGateway.3 ] API GatewayのREST APIステージでは、AWS X-Rayのトレースが有効になっている必要があります | Low | 設定チェック | 無効化 | 無効化 |
[ APIGateway.4 ] API Gatewayは、AWS WAFのWeb ACLと関連付ける必要があります | Medium | 設定チェック | 通知のみ | 通知のみ |
[ APIGateway.5 ] API Gateway REST APIのキャッシュデータは保管時に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 通知のみ |
[ APIGateway.8 ] API Gateway HTTP API および WebSocket API においてルートの認可タイプを指定する必要があります | Medium | 設定チェック | 対応必須 | 対応必須 |
[ APIGateway.9 ] API Gateway V2 ステージにアクセスロギングを設定する必要があります | Medium | ログ取得 | 対応必須 | 通知のみ |
[ AppSync.1 ] AppSync API キャッシュは保管時に暗号化されている必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ AppSync.2 ] AWS AppSync は、リクエストレベルとフィールドレベルのロギングを有効にする必要があります | Medium | ログ取得 | 対応必須 | 通知のみ |
[ AppSync.5 ] AWS AppSync GraphQL API は API キーで認証すべきではありません | High | 設定チェック | 対応必須 | 通知のみ |
[ AppSync.6 ] AppSync API キャッシュは転送時に暗号化されている必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ Athena.4 ] Athenaワークグループではログ記録が有効になっている必要があります | Medium | ログ取得 | 通知のみ | 無効化 |
[ AutoScaling.1 ] ロードバランサーに関連付けられた Auto Scaling グループはELBヘルスチェックを使用する必要があります | Low | 可用性 | 通知のみ | 通知のみ |
[ AutoScaling.2 ] EC2 Auto Scalingグループは複数のアベイラビリティーゾーンにまたがって配置される必要があります | Medium | 可用性 | 対応必須 | 無効化 |
[ AutoScaling.3 ] Auto Scaling グループは、EC2インスタンスが Instance Metadata Service Version 2 (IMDSv2) を必要とするように設定すべき | High | 設定チェック | 対応必須 | 対応必須 |
[ AutoScaling.5 ] Auto Scalingグループに関連付けられた起動設定はパブリックIPを割り当てる設定であってはならない | High | アクセス制御 | 対応必須 | 対応必須 |
[ AutoScaling.6 ] Auto Scaling グループは複数のインスタンスタイプを複数のアベイラビリティーゾーンで使用すべき | Medium | 可用性 | 対応必須 | 無効化 |
[ AutoScaling.9 ] EC2 Auto ScalingグループはEC2起動テンプレートを使用する必要がある。 | Medium | 設定チェック | 対応必須 | 対応必須 |
[ Backup.1 ] AWS Backup のリカバリポイントは保管時の暗号化を有効化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 通知のみ |
[ CloudFront.1 ] CloudFrontのディストリビューションでは、デフォルトのルートオブジェクトが設定されている必要があります | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ CloudFront.3 ] CloudFrontのディストリビューションでは、トランジット時に暗号化が必要です | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ CloudFront.4 ] CloudFrontのディストリビューションでは、オリジンフェイルオーバーを設定する必要があります | Low | 可用性 | 無効化 | 無効化 |
[ CloudFront.5 ] CloudFrontのディストリビューションはログを有効にする必要がある | Medium | ログ取得 | 対応必須 | 無効化 |
[ CloudFront.6 ] CloudFrontのディストリビューションはAWS WAFを有効にする必要があります | Medium | 保護 | 対応必須 | 対応必須 |
[ CloudFront.7 ] CloudFrontはカスタムSSL/TLS証明書を使用する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ CloudFront.8 ] CloudFrontのディストリビューションでは、SNIを使用する設定にする必要があります | Low | 通信の暗号化 | 無効化 | 無効化 |
[ CloudFront.9 ] CloudFront ディストリビューションはカスタムオリジンへのトラフィックを暗号化します | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ CloudFront.10 ] CloudFrontディストリビューションは、エッジロケーションとカスタムオリジン間で非推奨のSSLプロトコルを使用しないでください | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ CloudFront.12 ] CloudFront ディストリビューションは、存在しない S3 オリジンをポイントしない必要があります。 | High | 設定チェック | 対応必須 | 対応必須 |
[ CloudFront.13 ] CloudFrontのディストリビューションはOrigin Access Control(OAC)を使用する必要があります。 | Medium | 設定チェック | 対応必須 | 対応必須 |
[ CloudTrail.1 ] CloudTrail を有効にして、少なくとも 1 つのマルチリージョンの追跡で、読み取りと書き込みの管理イベントを含めた設定をする必要があります | High | ログ取得 | 対応必須 | 対応必須 |
[ CloudTrail.2 ] CloudTrail では、保管時の暗号化を有効にする必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ CloudTrail.4 ] CloudTrailのログファイルの検証が有効であること | Low | ログ取得 | 対応必須 | 対応必須 |
[ CloudTrail.5 ] CloudTrailのトレイルは、Amazon CloudWatch Logsと統合されるべきです | Low | ログ取得 | 無効化 | 無効化 |
[ CodeBuild.1 ] CodeBuild Bitbucket ソースリポジトリ URL には機密性の高い認証情報を含めないでください | Critical | 設定チェック | 対応必須 | 対応必須 |
[ CodeBuild.2 ] CodeBuild プロジェクトの環境変数には、クリアテキストの認証情報を含めないでください | Critical | 設定チェック | 対応必須 | 対応必須 |
[ CodeBuild.3 ] CodeBuild S3 ログは暗号化する必要があります | Low | 保管時の暗号化 | 対応必須 | 対応必須 |
[ CodeBuild.4 ] CodeBuildプロジェクトはロギングを有効化する必要があります | Medium | ログ取得 | 対応必須 | 通知のみ |
[ CodeBuild.7 ] CodeBuild レポート グループのエクスポートは保管時に暗号化される必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ Cognito.1 ] Cognito ユーザープールでは、標準認証のフル機能強制モードで脅威保護を有効にする必要があります | Medium | 保護 | 対応必須 | 対応必須 |
[ Config.1 ] AWS Config を有効にする必要があります | Medium | ログ取得 | 対応必須 | 対応必須 |
[ DataFirehose.1 ] Firehose 配信ストリームは保管時に暗号化される必要があります | Medium | 保管時の暗号化 | 対応必須 | 通知のみ |
[ DataSync.1 ] DataSyncタスクではログ記録が有効になっている必要があります | Medium | ログ取得 | 対応必須 | 通知のみ |
[ DMS.1 ] Database Migration Service のレプリケーションインスタンスはパブリックであってはなりません | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ DMS.6 ] DMSレプリケーションインスタンスのマイナーバージョンの自動アップグレードが有効であること | Medium | 脆弱性管理 | 無効化 | 無効化 |
[ DMS.7 ] ターゲットデータベースのDMSレプリケーションタスクでは、ロギングを有効する必要があります | Medium | ログ取得 | 対応必須 | 通知のみ |
[ DMS.8 ] ソースデータベースのDMSレプリケーションタスクでは、ロギングを有効する必要があります | Medium | ログ取得 | 対応必須 | 通知のみ |
[ DMS.9 ] DMSエンドポイントはSSLを使用する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ DMS.10 ] Neptune データベースの DMS エンドポイントでは IAM 認証を有効にする必要があります | Medium | アクセス制御 | 無効化 | 無効化 |
[ DMS.11 ] MongoDB の DMS エンドポイントでは認証機能を有効にする必要があります | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ DMS.12 ] Redis の DMS エンドポイントでは TLS を有効にする必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ DocumentDB.1 ] Amazon DocumentDB クラスターは、保管時の暗号化を有効にする必要があります | Medium | 保管時の暗号化 | 対応必須 | 通知のみ |
[ DocumentDB.2 ] Amazon DocumentDB クラスターには、適切なバックアップ保持期間が必要です | Medium | バックアップ | 対応必須 | 無効化 |
[ DocumentDB.3 ] Amazon DocumentDB 手動クラスタースナップショットはパブリックにできません | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ DocumentDB.4 ] Amazon DocumentDB クラスターでは、監査ログを CloudWatch Logs に発行する必要があります | Medium | ログ取得 | 対応必須 | 無効化 |
[ DocumentDB.5 ] Amazon DocumentDB では、削除保護が有効になっている必要があります | Medium | 設定チェック | 対応必須 | 無効化 |
[ DynamoDB.1 ] DynamoDBのテーブルは、需要に応じて自動的に容量をスケールする必要があります | Medium | 可用性 | 無効化 | 無効化 |
[ DynamoDB.2 ] DynamoDBテーブルはポイントインタイムリカバリを有効にしておく必要があります。 | Medium | バックアップ | 対応必須 | 無効化 |
[ DynamoDB.3 ] DynamoDB Accelerator (DAX)のクラスタは、保管時に暗号化されている必要があります。 | Medium | 保管時の暗号化 | 対応必須 | 通知のみ |
[ DynamoDB.6 ] DynamoDB テーブルでは削除保護を有効にする必要があります。 | Medium | 設定チェック | 対応必須 | 無効化 |
[ DynamoDB.7 ] DynamoDB Accelerator クラスターは転送中に暗号化する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ EC2.1 ] Amazon EBS スナップショットはパブリックに復元可能であってはなりません。 | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ EC2.2 ] VPC のデフォルトのセキュリティグループはインバウンドトラフィックまたはアウトバウンドトラフィックを許可しない必要があります | High | アクセス制御 | 対応必須 | 対応必須 |
[ EC2.3 ] アタッチされた EBS ボリュームは、保管時に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ EC2.4 ] 停止した EC2 インスタンスは、指定した期間後に削除する必要があります | Medium | コスト最適化 | 対応必須 | 通知のみ |
[ EC2.6 ] VPC フローログ記録はすべての VPC で有効にする必要があります | Medium | ログ取得 | 無効化 | 無効化 |
[ EC2.7 ] EBS のデフォルト暗号化を有効にする必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ EC2.8 ] EC2 インスタンスでは、Instance Metadata Service Version 2 (IMDSv2) を使用する必要があります | High | 設定チェック | 対応必須 | 対応必須 |
[ EC2.9 ] EC2インスタンスはパブリックIPv4アドレスを持つべきではない | High | アクセス制御 | 対応必須 | 対応必須 |
[ EC2.10 ] Amazon EC2はVPCエンドポイントを使用するように設定する必要があります。 | Medium | アクセス制御 | 無効化 | 無効化 |
[ EC2.15 ] EC2のサブネットはパブリックIPアドレスを自動的に割り当ててはいけない | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ EC2.16 ] 未使用のNACLを削除すること | Low | アクセス制御 | 対応必須 | 通知のみ |
[ EC2.17 ] EC2インスタンスは複数のENIを使用してはならない | Low | 設定チェック | 無効化 | 無効化 |
[ EC2.18 ] セキュリティグループは、許可されたポートに対する無制限の受信トラフィックのみを許可する必要がある | High | アクセス制御 | 対応必須 | 対応必須 |
[ EC2.19 ] セキュリティグループは、リスクの高いポートへの無制限のアクセスを許可してはならない | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ EC2.20 ] AWS サイト間VPN 接続の両方の VPN トンネルが稼働している必要があります | Medium | 設定チェック | 対応必須 | 対応必須 |
[ EC2.21 ] ネットワークACLは 0.0.0.0/0 からポート22または3389へのインバウンド許可ルールを追加してはいけない | Medium | アクセス制御 | 無効化 | 無効化 |
[ EC2.23 ] EC2 Transit Gateway はVPCアタッチメントのリクエストを自動承諾すべきではない | High | アクセス制御 | 対応必須 | 対応必須 |
[ EC2.24 ] 準仮想化(PV)のEC2インスタンスは使うべきではありません | Medium | 設定チェック | 対応必須 | 対応必須 |
[ EC2.25 ] EC2の起動テンプレートは、ネットワークインターフェイスにパブリックIPを割り当てるべきではありません | High | アクセス制御 | 対応必須 | 対応必須 |
[ EC2.51 ] EC2 Client VPN エンドポイントでは、クライアント接続ログ記録が有効になっている必要があります | Low | ログ取得 | 対応必須 | 対応必須 |
[ EC2.55 ] VPC は ECR API のインターフェイスエンドポイントを使用して構成する必要があります | Medium | 保護 | 無効化 | 無効化 |
[ EC2.56 ] VPC は Docker Registry のインターフェイスエンドポイントを使用して構成する必要があります | Medium | 保護 | 無効化 | 無効化 |
[ EC2.57 ] VPC は Systems Manager のインターフェイスエンドポイントを使用して構成する必要があります | Medium | 保護 | 無効化 | 無効化 |
[ EC2.58 ] VPC は Systems Manager Incident Manager Contacts のインターフェイスエンドポイントを使用して構成する必要があります | Medium | 保護 | 無効化 | 無効化 |
[ EC2.60 ] VPC は Systems Manager Incident Manager のインターフェイスエンドポイントを使用して構成する必要があります | Medium | 保護 | 無効化 | 無効化 |
[ EC2.170 ] EC2 起動テンプレートでは、Instance Metadata Service Version 2 (IMDSv2) を使用する必要があります | Low | 保護 | 対応必須 | 対応必須 |
[ EC2.171 ] EC2 VPN接続は、ロギングを有効にする必要があります | Medium | ログ取得 | 対応必須 | 通知のみ |
[ EC2.172 ] EC2 VPC ブロックパブリックアクセス設定は、インターネットゲートウェイトラフィックをブロックする必要があります | Medium | アクセス制御 | 無効化 | 無効化 |
[ ECR.1 ] ECRプライベートリポジトリは、イメージスキャンを設定する必要があります | High | 脆弱性管理 | 通知のみ | 通知のみ |
[ ECR.2 ] ECRプライベートリポジトリは、タグのイミュータビリティを設定する必要があります | Medium | 保護 | 対応必須 | 無効化 |
[ ECR.3 ] ECRリポジトリに少なくとも1つのライフサイクルポリシーが設定されている必要があります | Medium | コスト最適化 | 対応必須 | 通知のみ |
[ ECS.1 ] Amazon ECSのタスク定義には、安全なネットワークモードとユーザー定義が必要です | High | アクセス制御 | 対応必須 | 対応必須 |
[ ECS.2 ] Amazon ECSサービスは、パブリックIPアドレスを自動的に割り当ててはいけません | High | アクセス制御 | 対応必須 | 対応必須 |
[ ECS.3 ] ECS タスクの定義では、ホストのPID Namespaceを共有しないでください | High | アクセス制御 | 対応必須 | 対応必須 |
[ ECS.4 ] ECSコンテナは、非特権モードで実行する必要がある | High | アクセス制御 | 対応必須 | 対応必須 |
[ ECS.5 ] ECSコンテナは、ルートファイルシステムへのアクセスを読み取り専用に制限する必要があります | High | アクセス制御 | 対応必須 | 対応必須 |
[ ECS.8 ] シークレットはコンテナ環境変数へ渡すべきではない | High | 認証情報管理 | 対応必須 | 対応必須 |
[ ECS.9 ] ECS タスク定義にはログ構成が必要です | High | ログ取得 | 対応必須 | 通知のみ |
[ ECS.10 ] Fargateサービスは最新のプラットフォームバージョンで実行する必要があります | Medium | 脆弱性管理 | 通知のみ | 通知のみ |
[ ECS.12 ] ECSクラスタはContainer Insightsを有効にする必要があります | Medium | ログ取得 | 対応必須 | 通知のみ |
[ ECS.16 ] ECSタスクセットは、パブリックIPアドレスを自動的に割り当てるべきではありません | High | アクセス制御 | 対応必須 | 対応必須 |
[ EFS.1 ] Elastic File System は、AWS KMS を使用して保管時のファイルデータを暗号化するように設定する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ EFS.2 ] Amazon EFSボリュームはバックアッププランに入れておくべき | Medium | バックアップ | 対応必須 | 無効化 |
[ EFS.3 ] EFS アクセスポイントは、ルートディレクトリを適用する必要があります | Medium | アクセス制御 | 無効化 | 無効化 |
[ EFS.4 ] EFSアクセスポイントは、ユーザーIDを指定する必要があります | Medium | アクセス制御 | 無効化 | 無効化 |
[ EFS.6 ] EFS マウントターゲットをパブリックサブネットに関連付けるべきではありません | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ EFS.7 ] EFSファイルシステムでは自動バックアップを有効にする必要があります | Medium | バックアップ | 対応必須 | 無効化 |
[ EFS.8 ] EFS ファイルシステムは保管時に暗号化されている必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ EKS.1 ] EKS クラスターエンドポイントは、パブリックアクセス可能であってはなりません | High | アクセス制御 | 対応必須 | 対応必須 |
[ EKS.2 ] EKSクラスターは、サポートされているKubernetesバージョンで実行する必要があります | High | 脆弱性管理 | 対応必須 | 対応必須 |
[ EKS.3 ] EKS クラスターは暗号化された Kubernetes シークレットを使用する必要があります | Medium | 保管時の暗号化 | 無効化 | 無効化 |
[ EKS.8 ] EKS クラスターでは、監査ログ記録が有効になっている必要があります | Medium | ログ取得 | 対応必須 | 対応必須 |
[ ElastiCache.1 ] ElastiCache for Redisクラスターでは、自動バックアップをスケジュールする必要があります。 | High | バックアップ | 対応必須 | 無効化 |
[ ElastiCache.2 ] ElastiCache for Redisキャッシュクラスターのマイナーバージョンの自動アップグレードが有効であること | High | 脆弱性管理 | 無効化 | 無効化 |
[ ElastiCache.3 ] ElastiCache for Redisのレプリケーショングループで、自動フェイルオーバーを有効にしてください | Medium | 可用性 | 対応必須 | 無効化 |
[ ElastiCache.4 ] ElastiCache for Redisのレプリケーショングループで、保管時の暗号化を有効化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ ElastiCache.5 ] ElastiCache for Redisのレプリケーショングループで、転送時の暗号化を有効化する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ ElastiCache.6 ] バージョン 6.0 より前の Redis レプリケーション グループ用 ElastiCache では、Redis AUTH を使用する必要があります | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ ElastiCache.7 ] ElastiCache クラスターは、デフォルトのサブネットグループを使うべきではありません | High | アクセス制御 | 対応必須 | 対応必須 |
[ ElasticBeanstalk.1 ] Elastic Beanstalk環境では、拡張ヘルスレポートを有効にするべきです | Low | ログ取得 | 対応必須 | 無効化 |
[ ElasticBeanstalk.2 ] Elastic Beanstalkのマネージドプラットフォーム更新を有効にする必要があります | High | 脆弱性管理 | 対応必須 | 対応必須 |
[ ElasticBeanstalk.3 ] Elastic BeanstalkではログをCloudWatchに出力する必要があります | High | ログ取得 | 対応必須 | 無効化 |
[ ELB.1 ] Application Load Balancer は、すべての HTTP リクエストを HTTPS にリダイレクトするように設定する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ ELB.2 ] SSL/HTTPSリスナーを持つ CLBは、AWS Certificate Managerが提供する証明書を使用する必要がある | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ ELB.3 ] Classic Load Balancer のリスナーは HTTPS または TLS 終端で設定する必要があります。 | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ ELB.4 ] Application Load Balancer が HTTP ヘッダーを削除するように設定されている必要があります | Medium | 保護 | 対応必須 | 対応必須 |
[ ELB.5 ] Application/Classic Load Balancer のロギングを有効にする必要があります。 | Medium | ログ取得 | 対応必須 | 無効化 |
[ ELB.6 ] Application、Gateway、および Network Load Balancer の削除保護を有効にしてください | Medium | 設定チェック | 対応必須 | 無効化 |
[ ELB.7 ] Classic Load Balancer では Connection Draining を有効にする必要があります | Medium | 可用性 | 対応必須 | 対応必須 |
[ ELB.8 ] HTTPS/SSLリスナーを持つ CLBは、強力な設定が可能な事前定義されたセキュリティポリシーを使用する必要がある | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ ELB.9 ] CLBはクロスゾーン負荷分散を有効にする必要がある | Medium | 可用性 | 対応必須 | 無効化 |
[ ELB.10 ] Classic Load Balancer は、複数のAvailability Zoneで動作させる必要があります | Medium | 可用性 | 対応必須 | 無効化 |
[ ELB.12 ] Application Load Balancerは、防御的または最も厳格で構成する必要があります | Medium | 保護 | 対応必須 | 対応必須 |
[ ELB.13 ] Application/Network/Gateway Load Balancer は複数のアベイラビリティーゾーンにまたがる必要があります | Medium | 可用性 | 対応必須 | 無効化 |
[ ELB.14 ] Classic Load Balancerは、防御的または最も厳格で構成する必要があります | Medium | 保護 | 対応必須 | 対応必須 |
[ EMR.1 ] Amazon Elastic MapReduce クラスターのプライマリーノードにはパブリック IP を使用できません | High | アクセス制御 | 対応必須 | 対応必須 |
[ EMR.2 ] Amazon EMR ブロックのパブリック アクセス設定を有効にする必要があります | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ EMR.3 ] Amazon EMR セキュリティ設定は保管時に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ EMR.4 ] Amazon EMR セキュリティ設定は転送中に暗号化する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ ES.1 ] ElasticSearch ドメインでは、保管時の暗号化を有効にする必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ ES.2 ] Amazon Elasticsearch Serviceのドメインはパブリック公開してはいけません | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ ES.3 ] Amazon Elasticsearchのドメインは、ノード間で送信されるデータを暗号化する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ ES.4 ] Amazon Elasticsearch ServiceのドメインエラーのCloudWatch Logsへのロギングが有効であること | Medium | ログ取得 | 対応必須 | 無効化 |
[ ES.5 ] Elasticsearchドメインは監査ログを有効にすべきである | Medium | ログ取得 | 対応必須 | 無効化 |
[ ES.6 ] Elasticsearchドメインは少なくとも3つのデータノードを持つべきである | Medium | 可用性 | 対応必須 | 無効化 |
[ ES.7 ] Elasticsearchドメインには、少なくとも3つの専用マスターノードを設定する必要がある | Medium | 可用性 | 対応必須 | 無効化 |
[ ES.8 ] Elasticsearchドメインへの接続は最新の TLS セキュリティ ポリシーを使用して暗号化する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ EventBridge.3 ] EventBridge カスタムイベントバスには、リソースベースのポリシーがアタッチされている必要があります | Low | アクセス制御 | 無効化 | 無効化 |
[ FSx.1 ] FSx for OpenZFS ファイルシステムは、タグをバックアップとボリュームにコピーするように構成する必要があります | Low | 設定チェック | 無効化 | 無効化 |
[ FSx.2 ] FSx for Lustre ファイルシステムは、タグをバックアップとボリュームにコピーするように構成する必要があります | Low | 設定チェック | 無効化 | 無効化 |
[ Glue.2 ] AWS Glueジョブのログ記録を有効にする必要があります | Medium | ログ取得 | 対応必須 | 無効化 |
[ Glue.3 ] AWS Glue の機械学習変換は保管時に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ GuardDuty.1 ] GuardDuty を有効にする必要があります | High | 保護 | 対応必須 | 対応必須 |
[ GuardDuty.5 ] GuardDuty EKS 監査ログのモニタリングを有効にする必要があります | High | 保護 | 対応必須 | 対応必須 |
[ GuardDuty.6 ] GuardDuty Lambda Protection を有効にする必要があります | High | 保護 | 対応必須 | 対応必須 |
[ GuardDuty.7 ] GuardDuty EKS ランタイム監視を有効にする必要があります | Medium | 保護 | 対応必須 | 対応必須 |
[ GuardDuty.8 ] EC2向けGuardDuty Malware Protectionを有効にする必要があります | High | 保護 | 対応必須 | 対応必須 |
[ GuardDuty.9 ] GuardDuty RDS Protection を有効にする必要があります | High | 保護 | 対応必須 | 対応必須 |
[ GuardDuty.10 ] GuardDuty S3 Protection を有効にする必要があります | High | 保護 | 対応必須 | 対応必須 |
[ IAM.1 ] IAM ポリシーは完全な「*」管理権限を許可してはなりません | High | アクセス制御 | 対応必須 | 対応必須 |
[ IAM.2 ] IAM ユーザーには IAM ポリシーをアタッチしないでください | Low | アクセス制御 | 無効化 | 無効化 |
[ IAM.3 ] IAM ユーザーのアクセスキーは、90 日以内にローテーションする必要があります | Medium | 認証情報管理 | 対応必須 | 対応必須 |
[ IAM.4 ] IAM ルートユーザーアクセスキーは存在してはなりません | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ IAM.5 ] MFA は、コンソールパスワードを持つすべての IAM ユーザーに対して有効にする必要があります | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ IAM.6 ] ハードウェア MFA はルートユーザーに対して有効にする必要があります | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ IAM.7 ] IAM ユーザーのパスワードポリシーには、強力な設定が必要です | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ IAM.8 ] 使用されていない IAM ユーザー認証情報は削除する必要があります | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ IAM.21 ] 作成したIAMカスタマーマネージメントポリシーでは、サービスに対するワイルドカードアクションを許可してはならない | Low | アクセス制御 | 無効化 | 無効化 |
[ Inspector.1 ] Amazon Inspector EC2スキャンを有効にする必要があります | High | 脆弱性管理 | 無効化 | 無効化 |
[ Inspector.2 ] Amazon Inspector ECRスキャンを有効にする必要があります | High | 脆弱性管理 | 無効化 | 無効化 |
[ Inspector.3 ] Amazon Inspector Lambda コードスキャンを有効にする必要があります | High | 脆弱性管理 | 無効化 | 無効化 |
[ Inspector.4 ] Amazon Inspector Lambda 標準スキャンを有効にする必要があります | High | 脆弱性管理 | 無効化 | 無効化 |
[ Kinesis.1 ] Kinesis Data Streams のサーバーサイド暗号化を有効化する必要があります。 | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ Kinesis.3 ] Kinesisストリームは適切なデータ保持期間が必要です | Medium | バックアップ | 無効化 | 無効化 |
[ KMS.1 ] IAM カスタマー管理ポリシーでは、すべての KMS キーで復号アクションを許可してはなりません | Medium | アクセス制御 | 無効化 | 無効化 |
[ KMS.2 ] IAM プリンシパルには、すべての KMS キーで復号アクションを許可する IAM インラインポリシーがあってはなりません | Medium | アクセス制御 | 無効化 | 無効化 |
[ KMS.3 ] AWS KMSのキーは意図せずに削除してはいけない | Critical | 保護 | 通知のみ | 通知のみ |
[ KMS.5 ] KMSキーはパブリックに公開すべきではありません | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ Lambda.1 ] Lambda 関数は、他のアカウントによるパブリックアクセスを禁止する必要があります | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ Lambda.2 ] Lambda 関数はサポートされているランタイムを使用する必要があります | Medium | 脆弱性管理 | 対応必須 | 対応必須 |
[ Lambda.5 ] VPC Lambda 関数は、複数のAvailability Zoneで動作させる必要があります | Medium | 可用性 | 通知のみ | 無効化 |
[ Macie.1 ] Amazon Macieを有効にする必要があります | Medium | 保護 | 無効化 | 無効化 |
[ Macie.2 ] Amazon Macie の自動機密データ検出を有効にする必要があります | High | 保護 | 無効化 | 無効化 |
[ MQ.2 ] Active MQ ブローカーは監査ログをCloudWatchにストリーミングすべきです | Medium | ログ取得 | 対応必須 | 無効化 |
[ MQ.3 ] Amazon MQ ブローカーは自動マイナーバージョンアップグレードを有効にすべきです | Low | 脆弱性管理 | 無効化 | 無効化 |
[ MSK.1 ] MSK クラスターはブローカー ノード間の転送中に暗号化される必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ MSK.3 ] MSK Connectコネクタは、転送時に暗号化される必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ Neptune.1 ] Neptune DBクラスターは、保管中に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ Neptune.2 ] Neptune DBクラスターでは、監査ログをCloudWatch Logsに発行する必要があります | Medium | ログ取得 | 対応必須 | 無効化 |
[ Neptune.3 ] Neptune DBクラスタースナップショットはパブリックにしないでください | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ Neptune.4 ] Neptune DBクラスターでは、削除保護が有効になっている必要があります | Low | 設定チェック | 対応必須 | 無効化 |
[ Neptune.5 ] Neptune DBクラスターでは、自動バックアップが有効になっている必要があります | Medium | バックアップ | 対応必須 | 無効化 |
[ Neptune.6 ] Neptune DBクラスタースナップショットは、保管中に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ Neptune.7 ] Neptune DBクラスターでは、IAM データベース認証が有効になっている必要があります | Medium | アクセス制御 | 無効化 | 無効化 |
[ Neptune.8 ] Neptune DBクラスターでは、タグをスナップショットにコピーするように設定する必要があります | Low | 設定チェック | 無効化 | 無効化 |
[ NetworkFirewall.2 ] Network Firewallのログ記録を有効にする必要があります | Medium | ログ取得 | 対応必須 | 無効化 |
[ NetworkFirewall.3 ] Network Firewallポリシーには、1つ以上のルールグループが関連付けられている必要があります | Medium | 設定チェック | 対応必須 | 対応必須 |
[ NetworkFirewall.4 ] Network Firewallポリシーのデフォルトのステートレスアクションは、完全なパケットに対してドロップまたは転送される必要があります | Medium | 設定チェック | 対応必須 | 対応必須 |
[ NetworkFirewall.5 ] Network Firewallポリシーのデフォルトのステートレスアクションは、フラグメント化されたパケットに対してドロップまたは転送される必要があります | Medium | 設定チェック | 対応必須 | 対応必須 |
[ NetworkFirewall.6 ] ステートレス Network Firewall ルールグループは空であってはならない | Medium | 設定チェック | 対応必須 | 対応必須 |
[ NetworkFirewall.9 ] Network Firewall は削除保護を有効にする必要があります | Medium | 設定チェック | 対応必須 | 無効化 |
[ Opensearch.1 ] OpenSearchドメインでは、保管時の暗号化を有効にする必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ Opensearch.2 ] OpenSearchドメインはパブリック公開してはいけません | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ Opensearch.3 ] OpenSearchドメインは、ノード間で送信されるデータを暗号化する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ Opensearch.4 ] OpenSearchのドメインエラーのCloudWatch Logsへのロギングが有効であること | Medium | ログ取得 | 対応必須 | 無効化 |
[ Opensearch.5 ] OpenSearchドメインは監査ログを有効にすべきである | Medium | ログ取得 | 対応必須 | 無効化 |
[ Opensearch.6 ] OpenSearchドメインは少なくとも3つのデータノードを持つべきである | Medium | 可用性 | 対応必須 | 無効化 |
[ Opensearch.7 ] OpenSearchドメインでは、きめ細やかなアクセスコントロールを有効にする必要がある | High | アクセス制御 | 無効化 | 無効化 |
[ Opensearch.8 ] OpenSearchドメインへの接続は最新の TLS セキュリティ ポリシーを使用して暗号化する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ Opensearch.10 ] OpenSearchドメインには最新のソフトウェアアップデートがインストールされている必要があります | Low | 脆弱性管理 | 対応必須 | 対応必須 |
[ Opensearch.11 ] OpenSearchドメインは少なくとも 3 つの専用プライマリノードが必要です | Medium | 可用性 | 無効化 | 無効化 |
[ PCA.1 ] AWS プライベート CA ルート認証局を無効にする必要があります | Low | アクセス制御 | 無効化 | 無効化 |
[ RDS.1 ] RDS スナップショットはプライベートにする必要があります | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ RDS.2 ] RDS DB インスタンスは、PubliclyAccessible 設定によって判断される、パブリックアクセスを禁止する必要があります | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ RDS.3 ] RDS DB インスタンスでは、保管時の暗号化を有効にする必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ RDS.4 ] RDS クラスタースナップショットとデータベーススナップショットは保管時に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ RDS.5 ] RDS DB インスタンスは複数のアベイラビリティーゾーンで設定する必要があります | Medium | 可用性 | 対応必須 | 無効化 |
[ RDS.6 ] RDS DB インスタンスおよびクラスターに対して拡張モニタリングを設定する必要があります | Low | ログ取得 | 無効化 | 無効化 |
[ RDS.7 ] RDS クラスターでは、削除保護を有効にする必要があります | Low | 設定チェック | 対応必須 | 無効化 |
[ RDS.8 ] RDS DB インスタンスでは、削除保護を有効にする必要があります | Low | 設定チェック | 対応必須 | 無効化 |
[ RDS.9 ] RDS DB インスタンスはログを CloudWatch Logs に発行する必要があります | Medium | ログ取得 | 対応必須 | 無効化 |
[ RDS.10 ] RDSインスタンスに対してIAM認証を設定する必要があります。 | Medium | アクセス制御 | 無効化 | 無効化 |
[ RDS.11 ] RDSインスタンスの自動バックアップは有効にする必要があります | Medium | バックアップ | 対応必須 | 無効化 |
[ RDS.12 ] RDSクラスターにIAM認証を設定する必要があります | Medium | アクセス制御 | 無効化 | 無効化 |
[ RDS.13 ] RDSのマイナーバージョンの自動アップグレードが有効であること | High | 脆弱性管理 | 無効化 | 無効化 |
[ RDS.14 ] Amazon Auroraクラスターはバックトラックを有効にする必要があります | Medium | バックアップ | 無効化 | 無効化 |
[ RDS.15 ] RDS DBクラスターは複数のアベイラビリティーゾーンに対して構成されるべきである | Medium | 可用性 | 対応必須 | 無効化 |
[ RDS.16 ] RDS DBクラスターは、スナップショットにタグをコピーするように構成されるべきである | Low | 設定チェック | 無効化 | 無効化 |
[ RDS.17 ] RDS DBインスタンスは、スナップショットにタグをコピーするように設定する必要があります。 | Low | 設定チェック | 無効化 | 無効化 |
[ RDS.18 ] RDSインスタンスはVPC内に配置すべきである | High | アクセス制御 | 対応必須 | 対応必須 |
[ RDS.19 ] 既存のRDSイベント通知を設定する際は『重要なクラスターイベント』を含めるべきです | Low | 設定チェック | 無効化 | 無効化 |
[ RDS.20 ] 既存のRDSイベント通知を設定する際は『重要なデータベースインスタンスイベント』を含めるべきです | Low | 設定チェック | 無効化 | 無効化 |
[ RDS.21 ] RDSイベント通知で『重要なデータベースパラメータグループイベント』を設定する必要があります | Low | 設定チェック | 無効化 | 無効化 |
[ RDS.22 ] RDSイベント通知で『重要なデータベースセキュリティグループイベント』を設定する必要があります | Low | 設定チェック | 無効化 | 無効化 |
[ RDS.23 ] RDSのデータベースとクラスタは、データベースエンジンのデフォルトポートを使用してはいけません | Low | アクセス制御 | 無効化 | 無効化 |
[ RDS.24 ] RDS DBクラスターでは、カスタムの管理者ユーザー名を使用する必要があります | Medium | アクセス制御 | 無効化 | 無効化 |
[ RDS.25 ] RDSのDBインスタンスでは、カスタムの管理者ユーザー名を使用する必要があります | Medium | アクセス制御 | 無効化 | 無効化 |
[ RDS.27 ] RDS DBクラスターは保管時に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ RDS.34 ] Aurora MySQLのDBクラスターでは、監査ログをCloudWatch Logsに発行する必要があります | Medium | ログ取得 | 対応必須 | 無効化 |
[ RDS.35 ] RDS DBクラスターのマイナーバージョンの自動アップグレードが有効であること | Medium | 脆弱性管理 | 無効化 | 無効化 |
[ RDS.36 ] RDS for PostgreSQL DBインスタンスはCloudWatch Logsにログを出力する必要があります | Medium | ログ取得 | 対応必須 | 無効化 |
[ RDS.37 ] Aurora PostgreSQL DBクラスタはCloudWatch Logsにログを出力する必要があります | Medium | ログ取得 | 対応必須 | 無効化 |
[ RDS.38 ] RDS for PostgreSQL DB インスタンスは転送中に暗号化する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ RDS.39 ] RDS for MySQL DB インスタンスは転送中に暗号化する必要があります | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ Redshift.1 ] Amazon Redshiftクラスタはパブリックアクセスを禁止すべき | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ Redshift.2 ] Amazon Redshiftクラスタへの接続は、トランジット中に暗号化されている必要があります。 | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ Redshift.3 ] Amazon Redshiftクラスタは自動スナップショットを有効にする必要があります。 | Medium | バックアップ | 対応必須 | 無効化 |
[ Redshift.4 ] Amazon Redshiftクラスターは監査ログを有効にする必要があります | Medium | ログ取得 | 対応必須 | 無効化 |
[ Redshift.6 ] Amazon Redshiftはメジャーバージョンへの自動アップグレードを有効にすべき | Medium | 脆弱性管理 | 無効化 | 無効化 |
[ Redshift.7 ] Redshiftクラスターは Enhanced VPC Routing を使用する必要があります | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ Redshift.8 ] Amazon Redshiftクラスターでは、デフォルトのAdminユーザ名を使用してはいけません | Medium | アクセス制御 | 無効化 | 無効化 |
[ Redshift.9 ] Redshiftクラスターはデフォルトのデータベース名を使うべきではありません | Medium | 設定チェック | 無効化 | 無効化 |
[ Redshift.10 ] Redshift クラスターは保存時に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ Redshift.15 ] Redshift セキュリティグループは制限されたオリジンからのみクラスターポートへの進入を許可する必要があります | High | アクセス制御 | 対応必須 | 対応必須 |
[ Redshift.16 ] Redshift クラスターサブネットグループには、複数のアベイラビリティーゾーンからのサブネットが必要です | Medium | 可用性 | 通知のみ | 通知のみ |
[ Route53.2 ] Route 53 パブリックホストゾーンではDNSクエリログを取得してください | Medium | ログ取得 | 通知のみ | 通知のみ |
[ S3.1 ] S3 汎用バケットではパブリックアクセスブロック設定が有効になっている必要があります | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ S3.2 ] S3 汎用バケットはパブリック読み取りアクセスを禁止する必要があります | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ S3.3 ] S3 汎用バケットはパブリック書き込みアクセスを禁止する必要があります | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ S3.5 ] S3 汎用バケットでは、SSL を使用するリクエストが必要です | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ S3.6 ] S3 汎用バケットポリシーは他のAWSアカウントへのアクセスを制限する必要がある | High | アクセス制御 | 対応必須 | 対応必須 |
[ S3.8 ] S3 汎用バケットはパブリックアクセスをブロックする必要がある | High | アクセス制御 | 対応必須 | 対応必須 |
[ S3.9 ] S3 汎用バケットではサーバーアクセスログを有効にする必要がある | Medium | ログ取得 | 無効化 | 無効化 |
[ S3.12 ] ACL は S3 汎用バケットへのユーザーアクセスの管理には使用すべきではない | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ S3.13 ] S3 汎用バケットにはライフサイクル設定が必要です | Low | コスト最適化 | 無効化 | 無効化 |
[ S3.19 ] S3 アクセスポイントではブロックパブリックアクセス設定を有効にする必要があります | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ S3.24 ] S3マルチリージョンアクセスポイントは、パブリックアクセスのブロック設定を有効にする必要があります | High | アクセス制御 | 対応必須 | 対応必須 |
[ SageMaker.1 ] Amazon SageMaker ノートブックインスタンスにインターネットへの直接アクセスを設定しないようにします | High | アクセス制御 | 対応必須 | 対応必須 |
[ SageMaker.2 ] Amazon SageMaker ノートブックインスタンスはカスタム VPC で起動する必要があります | High | アクセス制御 | 対応必須 | 対応必須 |
[ SageMaker.3 ] ユーザーは Amazon SageMaker ノートブックインスタンスへのルートアクセス権限を持つべきではありません | High | アクセス制御 | 無効化 | 無効化 |
[ SageMaker.4 ] SageMakerエンドポイントの本番稼働用バリアントの初期インスタンス数は1より大きい必要があります | Medium | 可用性 | 通知のみ | 無効化 |
[ SageMaker.5 ] SageMaker モデルはインバウンドトラフィックをブロックする必要があります | Medium | アクセス制御 | 対応必須 | 対応必須 |
[ SecretsManager.1 ] Secrets Manager のシークレットでは、自動ローテーションを有効にする必要があります | Medium | 認証情報管理 | 無効化 | 無効化 |
[ SecretsManager.2 ] 自動ローテーションで設定された Secrets Manager シークレットが、正常にローテーションされていることを確認します | Medium | 認証情報管理 | 対応必須 | 対応必須 |
[ SecretsManager.3 ] 未使用のSecrets Managerシークレットは削除する必要があります | Medium | 認証情報管理 | 対応必須 | 対応必須 |
[ SecretsManager.4 ] Secrets Managerのシークレットは、指定された日数内でローテーションされるべきである | Medium | 認証情報管理 | 無効化 | 無効化 |
[ ServiceCatalog.1 ] Service Catalog ポートフォリオは AWS 組織内でのみ共有する必要があります | High | アクセス制御 | 対応必須 | 対応必須 |
[ SNS.4 ] SNS トピックアクセスポリシーはパブリックアクセスを許可するべきではありません | High | アクセス制御 | 対応必須 | 対応必須 |
[ SQS.1 ] Amazon SQSのキューは保管中に暗号化されている必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ SSM.1 ] EC2 インスタンスは、AWS Systems Manager で管理する必要があります | Medium | 脆弱性管理 | 対応必須 | 対応必須 |
[ SSM.2 ] SSM で管理される EC2 インスタンスでは、パッチのインストール後、パッチコンプライアンスステータスが COMPLIANT である必要があります | High | 脆弱性管理 | 無効化 | 無効化 |
[ SSM.3 ] SSM によって管理される EC2 インスタンスでは、関連付けコンプライアンスステータスが COMPLIANT である必要があります | Low | 脆弱性管理 | 無効化 | 無効化 |
[ SSM.4 ] SSMドキュメントはパブリック公開してはいけません | Critical | アクセス制御 | 対応必須 | 対応必須 |
[ StepFunctions.1 ] Step Functions ステートマシンのログはオンになっている必要があります | Medium | ログ取得 | 無効化 | 無効化 |
[ Transfer.2 ] Transfer Family サーバーはエンドポイント接続に FTP プロトコルを使用しないでください | Medium | 通信の暗号化 | 対応必須 | 対応必須 |
[ WAF.1 ] AWS WAF Classicのグローバルweb ACLロギングを有効にする必要があります。 | Medium | ログ取得 | 対応必須 | 無効化 |
[ WAF.2 ] AWS WAF ClassicのRegional ルールは、少なくとも1つの条件が必要です | Medium | 設定チェック | 対応必須 | 対応必須 |
[ WAF.3 ] AWS WAF ClassicのRegional ルールグループには、少なくとも1つのルールが必要です | Medium | 設定チェック | 対応必須 | 対応必須 |
[ WAF.4 ] AWS WAF ClassicのRegional web ACLには、少なくとも1つのルールまたはルールグループが必要です | Medium | 設定チェック | 対応必須 | 対応必須 |
[ WAF.6 ] AWS WAF Classicのグローバルルールには、少なくとも1つの条件が必要です | Medium | 設定チェック | 対応必須 | 対応必須 |
[ WAF.7 ] AWS WAF Classicのグローバルルールグループには、少なくとも1つのルールが必要です | Medium | 設定チェック | 対応必須 | 対応必須 |
[ WAF.8 ] AWS WAF Classicのglobal web ACLには、少なくとも1つのルールまたはルールグループが必要です | Medium | 設定チェック | 対応必須 | 対応必須 |
[ WAF.10 ] AWS WAFのweb ACLには、少なくとも1つのルールまたはルールグループが必要です | Medium | 設定チェック | 対応必須 | 対応必須 |
[ WAF.12 ] AWS WAF ルールでは CloudWatch メトリクスが有効になっている必要があります | Medium | ログ取得 | 対応必須 | 無効化 |
[ WorkSpaces.1 ] WorkSpacesユーザーボリュームは保管時に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
[ WorkSpaces.2 ] WorkSpacesルートボリュームは保管時に暗号化する必要があります | Medium | 保管時の暗号化 | 対応必須 | 対応必須 |
繰り返しになりますが、これはあくまで私の一例ですので、「このカテゴライズには違和感があるなぁ」とか「このカテゴリ追加したい」とか「このコントロールは無効化したい」などの調整は自由に行ってください。
ただ、上記の定義があると、自分たちの対応方針を決めていきやすいと思いますので是非参考にしてください。
カテゴライズの解説
各カテゴリについてどういう内容のコントロールを内包し、どういう戦略で対応方針を検討すべきかまとめていきます。
通信の暗号化
- 基本方針
- TLS利用のチェック項目ですべての環境で基本必須
- VPCの内部だけの通信でも簡単にTLS利用できる事がほとんどのため必須とする
- コントロール例
- [ CloudFront.3 ] CloudFrontのディストリビューションでは、トランジット時に暗号化が必要です
- [ S3.5 ] S3 汎用バケットでは、SSL を使用するリクエストが必要です
- [ APIGateway.2 ] API Gateway REST APIステージでは、バックエンド認証にSSL証明書を使用するように設定する必要があります
- これはクライアント証明書が必要となり設定のためのコストが高いため任意でよい
保管時の暗号化
- 基本方針
- 本番環境では必須、保護の必要がないデータであれば開発環境などは任意
- データの保護は責任共有モデル上すべてユーザーの責任なのですべてを暗号化することが基本
- コントロール例
- [ EC2.3 ] アタッチされた EBS ボリュームは、保管時に暗号化する必要があります
- [ CloudTrail.2 ] CloudTrail では、保管時の暗号化を有効にする必要があります
- [ EKS.3 ] EKS クラスターは暗号化された Kubernetes シークレットを使用する必要があります
- これはEBS側で暗号化できている上追加コストがかかるため任意
ログ取得
- 基本方針
- 本番環境では必須、開発環境などでも活用したいものも多いが任意とする
- 他のログで代替えできるものは任意とする
- コントロール例
- [ CloudTrail.1 ] CloudTrail を有効にして、少なくとも 1 つのマルチリージョンの追跡で、読み取りと書き込みの管理イベントを含めた設定をする必要があります
- [ ELB.5 ] Application/Classic Load Balancer のロギングを有効にする必要があります
- [ CloudTrail.5 ] CloudTrailのトレイルは、Amazon CloudWatch Logsと統合されるべきです
- これはやらなくてよい。S3に保存できてさえいればコスパがよく使える
可用性
- 基本方針
- 本番環境では必須、それ以外は任意
- 本番環境でもリソースにより任意とする
- コントロール例
- [ AutoScaling.2 ] EC2 Auto Scalingグループは複数のアベイラビリティーゾーンにまたがって配置される必要があります
- [ DynamoDB.1 ] DynamoDBのテーブルは、需要に応じて自動的に容量をスケールする必要があります
- これは任意
- アプリケーションの思想にかなり依存するため
バックアップ
- 基本方針
- 本番環境では必須、それ以外は任意
- 組織やシステムのBCDRとも足並みを揃える
- コントロール例
- [ RDS.11 ] RDSインスタンスの自動バックアップは有効にする必要があります
- [ DynamoDB.2 ] DynamoDBテーブルはポイントインタイムリカバリを有効にしておく必要があります
- [ Kinesis.3 ] Kinesisストリームは適切なデータ保持期間が必要です
- これは必要ない。一時的なデータの保持期間であるため
アクセス制御
- 基本方針
- すべての環境で必須
- パブリックインターネットからのアクセスを制限したり認証が必要な操作に関する制限
- コントロール例
- [ EC2.19 ] セキュリティグループは、リスクの高いポートへの無制限のアクセスを許可してはならない
- [ RDS.1 ] RDS スナップショットはプライベートにする必要があります
- [ EC2.21 ] ネットワークACLは 0.0.0.0/0 からポート22または3389へのインバウンド許可ルールを追加してはいけない
- これは煩雑な運用になるため任意
認証情報管理
- 基本方針
- すべての環境で必須
- 運用コストが上がるものは任意とする
- コントロール例
- [ ECS.8 ] シークレットはコンテナ環境変数へ渡すべきではない
- [ SecretsManager.1 ] Secrets Manager のシークレットでは、自動ローテーションを有効にする必要があります
- これは任意
- RDSなどネイティブに連携できるものはやってよいが、うまく自動ローテーションできないものも多いため
設定チェック
- 基本方針
- 基本全て必須だが、項目ごとの重要度の違いが激しい
- AWSのサービスや機能固有の、知らないとハマりやすい設定などが対象
- コントロール例
- [ AutoScaling.3 ] Auto Scaling グループは、EC2インスタンスが Instance Metadata Service Version 2 (IMDSv2) を必要とするように設定すべき
- [ CloudFront.13 ] CloudFrontのディストリビューションはOrigin Access Control(OAC)を使用する必要があります
- [ EC2.17 ] EC2インスタンスは複数のENIを使用してはならない
- これは任意。かなり要件に依存するため
保護
- 基本方針
- すべての環境で必須
- 環境の保護に必要なサービスや機能の有効化が対象
- コントロール例
- [ GuardDuty.1 ] GuardDuty を有効にする必要があります
- [ CloudFront.6 ] CloudFrontのディストリビューションはAWS WAFを有効にする必要があります
- [ KMS.3 ] AWS KMSのキーは意図せずに削除してはいけない
- これは通知は受け取るべきだが基本対応の必要がない珍しい用途のコントロール
脆弱性管理
- 基本方針
- 基本全て必須だが、脆弱性の更新を含む内容は慎重に扱う必要がある
- コントロール例
- [ RDS.13 ] RDSのマイナーバージョンの自動アップグレードが有効であること
- アプリケーションに影響がある動作のため慎重に扱う必要がある
- [ Inspector.1 ] Amazon Inspector EC2スキャンを有効にする必要があります
- サーバー上のOS/ミドルウェアの脆弱性管理のツールはAmazon Inspector以外の選択肢もあるので、組織の方針に合わせる
コスト最適化
- 基本方針
- 必要な環境のみ
- 対象のリソースによっては極力実施したほうが良いものもある
- コントロール例
- [ EC2.4 ] 停止した EC2 インスタンスは、指定した期間後に削除する必要があります
- [ ECR.3 ] ECRリポジトリに少なくとも1つのライフサイクルポリシーが設定されている必要があります
- [ S3.13 ] S3 汎用バケットにはライフサイクル設定が必要です
- 使うならデータの要件を整理してから使う
まとめ
AWS Security Hub CSPMの運用のコツとしてカテゴライズの方法を解説しました。
コントロールの項目はたくさんあり対応も大変ですが、カテゴライズして大体の方針が決まれば進めやすくなります。是非真似してみなさんのAWS Security Hub CSPM運用を快適にしてください!