【SecurityHub】Foundational Security Best Practicesにチェック項目が25個追加されました。

記事タイトルとURLをコピーする

こんにちは。AWS CLIが好きな福島です。

昨日のアップデートでSecurity Hubの「Foundational Security Best Practices」に 25個のチェック項目が追加されましたので、Google翻訳を駆使し、追加された内容を簡単にまとめました。

aws.amazon.com

今回は以下の11個のAWSサービスに関係するチェック項目が追加されました。

  • Amazon API Gateway:1個(APIGateway.1)
  • Amazon Cloudfront:4個(CloudFront.1-4)
  • Amazon DynamoDB:3個(DynamoDB.1-3)
  • Amazon Elastic Compute Cloud:2個(EC2.9-10)
  • Amazon Elastic File System:1個(EFS.2)
  • Amazon Elasticsearch Service:2個(ES.2-3)
  • Amazon RDS:2個(RDS.9-10)
  • Amazon Redshift:4個(RedShift.1-3,6)
  • Amazon Simple Notification System:1個(SNS.1)
  • AWS Elastic Load Balancing:3個(ELB.3-6)
  • AWS Key Management Service:1個(KMS.3)

※CloudFrontは、米国東部(バージニア北部)でのみサポートされております。

重要度:重要

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

※米国東部(バージニア北部)でのみサポート。

このコントロールは、AmazonCloudFrontディストリビューションがデフォルトのルートオブジェクトである特定のオブジェクトを返すように設定されているかどうかをチェックします。 CloudFrontディストリビューションにデフォルトのルートオブジェクトが設定されていない場合、コントロールは失敗します。

  • カテゴリ:保護>安全なアクセス管理>公開されていないリソース
  • 重大度:重大
  • リソース:配布
  • AWS構成ルール: cloudfront-default-root-object-configured
  • パラメータ:なし

[ES.2] Amazon ElasticsearchServiceドメインはVPCに含まれている必要があります

このコントロールは、Amazon ElasticsearchServiceドメインがVPCにあるかどうかをチェックします。
※パブリックアクセスを決定するためにVPCサブネットルーティング設定を評価しません。

  • カテゴリ:保護>安全なネットワーク構成> VPC内のリソース
  • 重大度:重大
  • リソースタイプ: Elasticsearchドメイン
  • AWS構成ルール: elasticsearch-in-vpc-only
  • パラメータ:なし

[Redshift.1] AmazonRedshiftクラスターはパブリックアクセスを禁止する必要があります

このコントロールは、AmazonRedshiftクラスターがパブリックにアクセス可能かどうかをチェックします。 PubliclyAccessibleクラスター構成項目のフィールドを評価し ます。

  • カテゴリ:保護>安全なネットワーク構成>公開されていないリソース
  • 重大度:重大
  • リソース:クラスター
  • AWS構成ルール: redshift-cluster-public-access-check
  • パラメータ:なし

[KMS.3] AWSKMSキーを意図せずに削除しないでください

このコントロールは、AWS KMSカスタマーマネージドキー(CMK)が削除されるようにスケジュールされているかどうかをチェックします。 CMKの削除がスケジュールされている場合、コントロールは失敗します。

  • カテゴリ:保護>データ保護>データ削除保護
  • 重大度:重大
  • リソースタイプ: KMSキー
  • AWS構成ルール: kms-cmk-not-scheduled-for-deletion
  • パラメータ:なし

重要度:高

[EC2.9] EC2インスタンスはパブリックIPアドレスを持つべきではありません

このコントロールは、EC2インスタンスがパブリックIPアドレスを持っているかどうかをチェックします。 publicIpフィールドがEC2インスタンス設定アイテムに存在する場合、コントロールは失敗します。この制御は、IPv4アドレスにのみ適用されます。

  • カテゴリ:保護>安全なネットワーク構成>パブリックIPアドレス
  • 重大度:高
  • リソース: EC2インスタンス
  • AWS構成ルール: ec2-instance-no-public-ip
  • パラメータ:なし

重要度:中

[APIGateway.1] APIゲートウェイRESTおよびHTTPAPIログを有効にする必要があります

このコントロールは、Amazon API GatewayRESTまたはHTTPAPIステージのすべてのメソッドでロギングが有効になっているかどうかを確認します。 ステージのすべてのメソッドでロギングが有効になっていない場合、またはloggingLevelがERRORでもINFOでもない場合、制御は失敗します。

  • カテゴリ:識別>ロギング
  • 重大度:中
  • リソース:ステージ(v1)、ステージ(v2)
  • AWS構成ルール: api-gw-execution-logging-enabled
  • パラメータ:なし

[CloudFront.2] CloudFrontディストリビューションでは、オリジンアクセスIDを有効にする必要があります

※米国東部(バージニア北部)でのみサポート。

Amazon S3OriginタイプのAmazonCloudFrontディストリビューションにOriginAccess Identity(OAI)が設定されているかどうかを確認します。 OAIが構成されていない場合、制御は失敗します。

  • カテゴリ:保護>セキュアアクセス管理>リソースポリシー設定
  • 重大度:中
  • リソース:配布
  • AWS構成ルール: cloudfront-origin-access-identity-enabled
  • パラメータ:なし

[CloudFront.3] CloudFrontディストリビューションでは、転送中に暗号化が必要です

※米国東部(バージニア北部)でのみサポート。

このコントロールは、Amazon CloudFrontディストリビューションで視聴者がHTTPSを直接使用する必要があるかどうか、またはリダイレクトを使用するかどうかをチェックします。 ViewerProtocolPolicyがdefaultCacheBehaviorまたはcacheBehaviorsに対してallow-allに設定されている場合、コントロールは失敗します。

  • カテゴリ:保護>データ保護>転送中のデータの暗号化
  • 重大度:中
  • リソース:配布
  • AWS構成ルール: cloudfront-viewer-policy-https
  • パラメータ:なし

[DynamoDB.1] DynamoDBテーブルは、需要に応じて容量を自動的にスケーリングする必要があります

このコントロールは、AmazonDynamoDBテーブルが必要に応じて読み取りおよび書き込み容量をスケーリングできるかどうかをチェックします。 この制御は、テーブルがオンデマンド容量モードまたは自動スケーリングが構成されたプロビジョニングモードのいずれかを使用している場合に合格します。

  • カテゴリ:回復>復元力>高可用性
  • 重大度:中
  • リソース:表
  • AWS構成ルール: dynamodb-autoscaling-enabled
  • パラメータ:なし

[DynamoDB.2] DynamoDBテーブルでポイントインタイムリカバリを有効にする必要があります

このコントロールは、Amazon DynamoDBテーブルでポイントインタイムリカバリ(PITR)が有効になっているかどうかを確認します。

  • カテゴリ:リカバリ>復元力>バックアップが有効
  • 重大度:中
  • リソース:表
  • AWS構成ルール: dynamodb-pitr-enabled
  • パラメータ:なし

[DynamoDB.3] DynamoDB Accelerator(DAX)クラスターは保存時に暗号化する必要があります

このコントロールは、DAXクラスターが保存時に暗号化されているかどうかを確認します。

  • カテゴリ:保護>データ保護>保存データの暗号化
  • 重大度:中
  • リソース:クラスター
  • AWS構成ルール: dax_encryption_enabled
  • パラメータ:なし

[EC2.10] Amazon EC2は、VPCエンドポイントを使用するように設定する必要があります

このコントロールは、AmazonEC2のサービスエンドポイントがVPCごとに作成されているかどうかを確認します。 VPCにAmazonEC2サービス用に作成されたVPCエンドポイントがない場合、コントロールは失敗します。

  • カテゴリ:保護-安全なネットワーク構成> APIプライベートアクセス
  • 重大度:中
  • リソース: EC2 VPC
  • AWS構成ルール: service-vpc-endpoint-enabled
  • パラメーター:serviceName: ec2

[EFS.2] AmazonEFSボリュームはバックアップ計画に含まれている必要があります

このコントロールは、Amazon Elastic File System(Amazon EFS)ファイルシステムがAWSBackupのバックアッププランに追加されているかどうかを確認します。 Amazon EFSファイルシステムがバックアッププランに含まれていない場合、制御は失敗します。

  • カテゴリ:リカバリ>復元力>バックアップ
  • 重大度:中
  • リソースタイプ: EFSファイルシステム
  • AWS構成ルール: efs_in_backup_plan
  • パラメータ:なし

[ES.3] Amazon Elasticsearch Serviceドメインは、ノード間で送信されるデータを暗号化する必要があります

このコントロールは、AmazonESドメインでノード間暗号化が有効になっているかどうかを確認します。

  • カテゴリ:保護>データ保護>転送中のデータの暗号化
  • 重大度:中
  • リソースタイプ: Elasticsearchドメイン
  • AWS構成ルール: elasticsearch-node-to-node-encryption-check
  • パラメータ:なし

[RDS.9]データベースログを有効にする必要があります

このコントロールは、Amazon RDSの次のログが有効になっていて、CloudWatchLogsに送信されているかどうかを確認します。

Oracle: (Alert, Audit, Trace, Listener)
PostgreSQL: (Postgresql, Upgrade)
MySQL: (Audit, Error, General, SlowQuery)
MariaDB: (Audit, Error, General, SlowQuery)
SQL Server: (Error, Agent)
Aurora: (Audit, Error, General, SlowQuery)
Aurora-MySQL: (Audit, Error, General, SlowQuery)
Aurora-PostgreSQL: (Postgresql, Upgrade).

  • カテゴリ:識別>ロギング
  • 重大度:中
  • リソース: DBInstance
  • AWS構成ルール: rds_logging_enabled
  • パラメータ:なし

[RDS.10] IAM認証はRDSインスタンス用に設定する必要があります

このコントロールは、RDSDBインスタンスでIAMデータベース認証が有効になっているかどうかを確認します。

  • カテゴリ:保護>セキュアアクセス管理>パスワードなしの認証
  • 重大度:中
  • リソース: DBInstance
  • AWS構成ルール: rds-instance-iam-authentication-enabled
  • パラメータ:なし

[Redshift.2] AmazonRedshiftクラスターへの接続は転送中に暗号化する必要があります

このコントロールは、AmazonRedshiftクラスターへの接続が転送中に暗号化を使用する必要があるかどうかをチェックします。 Amazon Redshiftクラスター* パラメーターrequire_SSLが1に設定されていない場合、チェックは失敗します。

  • カテゴリ:保護>データ保護>転送中のデータの暗号化
  • 重大度:中
  • リソース:クラスター
  • AWS構成ルール: redshift-require-tls-ssl
  • パラメータ:なし

[Redshift.3] AmazonRedshiftクラスターでは自動スナップショットを有効にする必要があります

このコントロールは、AmazonRedshiftクラスターで自動スナップショットが有効になっているかどうかを確認します。 また、スナップショットの保持期間が7以上かどうかもチェックします。

  • カテゴリ:リカバリ>復元力>バックアップが有効
  • 重大度:中
  • リソース:クラスター
  • AWS構成ルール: redshift-backup-enabled
  • パラメーター:MinRetentionPeriod = 7

[Redshift.6] Amazon Redshiftでは、メジャーバージョンへの自動アップグレードが有効になっている必要があります

このコントロールは、AmazonRedshiftクラスターでメジャーバージョンの自動アップグレードが有効になっているかどうかを確認します。

  • カテゴリ:検出>脆弱性とパッチ管理
  • 重大度:中
  • リソース:クラスター
  • AWS構成ルール: redshift-cluster-maintenancesettings-check
  • パラメーター:allowVersionUpgrade = true

[SNS.1] SNSトピックは、AWSKMSを使用して保存時に暗号化する必要があります

このコントロールは、AWSKMSを使用してSNSトピックが保存時に暗号化されているかどうかを確認します。

  • カテゴリ:保護>データ保護>保存データの暗号化
  • 重大度:中
  • リソース: AmazonSNSトピック
  • AWS構成ルール: sns-encrypted-kms
  • パラメータ:なし

[ELB.3]クラシックロードバランサーリスナーはHTTPSまたはTLSターミネーションで構成する必要があります

このコントロールは、Classic Load Balancerリスナーがフロントエンド(クライアントからロードバランサー)接続用にHTTPSまたはTLSプロトコルで構成されているかどうかを確認します。 このコントロールは、Classic LoadBalancerにリスナーがある場合に適用できます。Classic Load Balancerにリスナーが構成されていない場合、コントロールは結果を報告しません。

  • カテゴリ:保護>データ保護>転送中のデータの暗号化
  • 重大度:中
  • リソース: ELBロードバランサー
  • AWS構成ルール: elb_tls_https_listeners_only
  • パラメータ:なし

[ELB.4]アプリケーションロードバランサーはHTTPヘッダーをドロップするように構成する必要があります

このコントロールは、AWS Application Load Balancer(ALB)を評価して、無効なHTTPヘッダーをドロップするように設定されていることを確認します。 routing.http.drop_invalid_header_fields.enabledの値がfalseに設定されている場合、制御は失敗します。

  • カテゴリ:保護>ネットワークセキュリティ
  • 重大度:中
  • リソースタイプ: ELBロードバランサー
  • AWS構成ルール: alb_http_drop_invalid_header_enabled
  • パラメータ:なし

[ELB.5]アプリケーションとクラシックロードバランサーのログを有効にする必要があります

このコントロールは、Application LoadBalancerとClassicLoadBalancerでログが有効になっているかどうかを確認します。 access_logs.s3.enabledがfalseの場合、コントロールは失敗します。

  • カテゴリ:ロギング
  • 重大度:中
  • リソース: ELBロードバランサー
  • AWS構成ルール: elb-logging-enabled
  • パラメータ:なし

[ELB.6]アプリケーションロードバランサーの削除保護を有効にする必要があります

このコントロールは、アプリケーションロードバランサーで削除保護が有効になっているかどうかを確認します。 削除保護が構成されていない場合、制御は失敗します。

  • カテゴリ:回復>復元力>高可用性
  • 重大度:中
  • リソース: Elbv2ロードバランサー
  • AWS構成ルール: elb-deletion-protection-enabled
  • パラメータ:なし

重要度:低

[CloudFront.4] CloudFrontディストリビューションでは、オリジンフェイルオーバーを設定する必要があります

※米国東部(バージニア北部)でのみサポート。

このコントロールは、AmazonCloudFrontディストリビューションが2つ以上のオリジンを持つオリジングループで設定されているかどうかをチェックします。

  • カテゴリ:回復>復元力>高可用性
  • 重大度:低
  • リソース:配布
  • AWS構成ルール: cloudfront-origin-failover-enabled
  • パラメータ:なし

(おまけ)SecurityHubの重要度がCRITICALおよびHIGHの結果をAWS CLIで出力してみた

AWS CLIが好きということでSecurityHubの重要度がCRITICALおよびHIGHの結果をAWS CLIで出力してみました。

aws securityhub get-findings  --query "Findings[].[Severity.Original,Title,Resources[0].Type,Resources[0].Id]" \
--filters '{"SeverityLabel":[{"Value": "CRITICAL","Comparison":"EQUALS"},{"Value": "HIGH","Comparison":"EQUALS"}]}'  \
--output text | tr "," "@" | tr "\t" "," | column -s, -t | tr "@" "," | sort
  • 実行結果
CRITICAL  1.14 Ensure hardware MFA is enabled for the "root" account                                                                    AwsAccount               AWS::::Account:xxxxxxxxxxxxx
CRITICAL  ES.2 Amazon Elasticsearch Service domains should be in a VPC                                                                  AwsAccount               AWS::::Account:xxxxxxxxxxxxx
CRITICAL  IAM.6 Hardware MFA should be enabled for the root user                                                                        AwsAccount               AWS::::Account:xxxxxxxxxxxxx
CRITICAL  KMS.3 AWS KMS keys should not be deleted unintentionally                                                                      AwsAccount               AWS::::Account:xxxxxxxxxxxxx
CRITICAL  Lambda.1 Lambda function policies should prohibit public access                                                               AwsLambdaFunction        arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxxx:function/Con-SecHub-Lambda

終わりに

今回は、SecurityHubに追加されたチェック項目をまとめてみました。 SecurityHubを有効にしておりましたら、重要度が高いチェック項目だけでも確認してみてはいかがでしょうか。

福島 和弥 (記事一覧)

SRE3課

2019/10 入社

AWS CLIが好きです。