Security Hub CSPM の セキュリティ基準: CIS AWS Foundations Benchmark を更新してみた
はじめに
猫とアポロチョコが好きな m.hayakawaです。
今回は、Security Hub CSPM の CIS AWS Foundations Benchmark についての記事になります。最新は v5.0.0 になっていますが、最新に切り替えることで、「何か壊れたりしないか」「今まで見れたものが見れなくなったりしないか」と、なかなかバージョンの変更に踏み切れない方もいると思います。
今回は、実際に v1.2.0 → v5.0.0 へ切り替えてみて、何が変わるのか確認してみました。
CIS AWS Foundations Benchmark とは
CIS AWS Foundations Benchmark は、Center for Internet Security (CIS) が策定した AWS 環境のセキュリティベストプラクティス集です。Security Hub CSPM では、このベンチマークに基づいてリソースの設定を自動チェックできます。
v1.2.0 は 2018年11月に Security Hub CSPM に対応されたものです。一方で、v5.0.0 は 2025年10月に Security Hub CSPM で利用可能になりました。
v1.2.0 は 7年以上前のバージョンです。
| バージョン | Security Hub CSPM 対応日 | StandardsArn |
|---|---|---|
| v1.2.0 | 2018年11月(Security Hub ローンチ時) | arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0 |
| v1.4.0 | 2022年11月 (doc-history) | arn:aws:securityhub:{region}::standards/cis-aws-foundations-benchmark/v/1.4.0 |
| v3.0.0 | 2024年5月 (doc-history) | arn:aws:securityhub:{region}::standards/cis-aws-foundations-benchmark/v/3.0.0 |
| v5.0.0 | 2025年10月 (doc-history) | arn:aws:securityhub:{region}::standards/cis-aws-foundations-benchmark/v/5.0.0 |
v1.2.0 のみ ARN の形式が異なります(ruleset パス、リージョンなし)。
切り替えで既存環境に影響はある?
既存リソースに対する影響はありません。
セキュリティ標準の有効化・無効化は「チェック(評価)」の ON/OFF だけです。EC2 が止まったり、セキュリティグループが変わったり、IAM ポリシーが書き換わったりすることはありません。
やってみた
前提
- リージョン: ap-northeast-1
- Security Hub CSPM 有効化済み
- AWS 基礎セキュリティのベストプラクティス v1.0.0 が有効
- CIS Benchmark は無効の状態からスタート
現在の状態を確認
aws securityhub get-enabled-standards \
--region ap-northeast-1
{
"StandardsSubscriptions": [
{
"StandardsSubscriptionArn": "arn:aws:securityhub:ap-northeast-1:<AccountID>:subscription/aws-foundational-security-best-practices/v/1.0.0",
"StandardsArn": "arn:aws:securityhub:ap-northeast-1::standards/aws-foundational-security-best-practices/v/1.0.0",
"StandardsInput": {},
"StandardsStatus": "READY",
"StandardsControlsUpdatable": "READY_FOR_UPDATES"
}
]
}

AWS 基礎セキュリティのベストプラクティス v1.0.0 のみ有効になっています。
CIS v1.2.0 を有効化
aws securityhub batch-enable-standards \
--standards-subscription-requests '[{"StandardsArn": "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0"}]' \
--region ap-northeast-1
{
"StandardsSubscriptions": [
{
"StandardsSubscriptionArn": "arn:aws:securityhub:ap-northeast-1:<AccountID>:subscription/cis-aws-foundations-benchmark/v/1.2.0",
"StandardsArn": "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0",
"StandardsInput": {},
"StandardsStatus": "PENDING",
"StandardsControlsUpdatable": "NOT_READY_FOR_UPDATES"
}
]
}
数分後、CIS v1.2.0 の StandardsStatus が READY になります。
aws securityhub get-enabled-standards \
--region ap-northeast-1
{
"StandardsSubscriptions": [
{
"StandardsSubscriptionArn": "arn:aws:securityhub:ap-northeast-1:<AccountID>:subscription/cis-aws-foundations-benchmark/v/1.2.0",
"StandardsArn": "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0",
"StandardsInput": {},
"StandardsStatus": "READY",
"StandardsControlsUpdatable": "READY_FOR_UPDATES"
},
{
"StandardsSubscriptionArn": "arn:aws:securityhub:ap-northeast-1:<AccountID>:subscription/aws-foundational-security-best-practices/v/1.0.0",
"StandardsArn": "arn:aws:securityhub:ap-northeast-1::standards/aws-foundational-security-best-practices/v/1.0.0",
"StandardsInput": {},
"StandardsStatus": "READY",
"StandardsControlsUpdatable": "READY_FOR_UPDATES"
}
]
}
v1.2.0 のコントロール数を確認
aws securityhub list-security-control-definitions \
--standards-arn "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0" \
--region ap-northeast-1 \
--query "length(SecurityControlDefinitions)"
42
v1.2.0 のコントロール数は 42 個 でした。
v1.2.0 の Findings を確認
マネジメントコンソールで、セキュリティスコアを確認しようとしましたが、45 分ほど表示に時間がかかるようです。

45 分後確認したら、スコアが出ました。

生成された Findings を AWS CLI で確認してみます。
aws securityhub get-findings \
--filters '{
"ComplianceStatus": [{"Value": "FAILED", "Comparison": "EQUALS"}],
"ComplianceAssociatedStandardsId": [{"Value": "ruleset/cis-aws-foundations-benchmark/v/1.2.0", "Comparison": "EQUALS"}],
"RecordState": [{"Value": "ACTIVE", "Comparison": "EQUALS"}]
}' \
--region ap-northeast-1 \
--query "sort_by(Findings[].{ID: Compliance.SecurityControlId, Title: Title, Severity: Severity.Label}, &ID)" \
--output table
------------------------------------------------------------------------------------------------------------
| GetFindings |
+--------+-----------+-------------------------------------------------------------------------------------+
| ID | Severity | Title |
+--------+-----------+-------------------------------------------------------------------------------------+
| IAM.15| MEDIUM | 1.9 Ensure IAM password policy requires minimum password length of 14 or greater |
| IAM.16| LOW | 1.10 Ensure IAM password policy prevents password reuse |
| IAM.17| LOW | 1.11 Ensure IAM password policy expires passwords within 90 days or less |
| KMS.4 | MEDIUM | 2.8 Ensure rotation for customer created CMKs is enabled |
+--------+-----------+-------------------------------------------------------------------------------------+
マネジメントコンソールではこのように見えます。

CIS v5.0.0 を有効化
公式ドキュメントでは「先に新バージョンを有効化 → 後で旧バージョンを無効化」が推奨されています。チェックの空白期間を作らないためですね。
セキュリティのベストプラクティスに最新の状態で準拠するため、v5.0.0 の使用をお勧めします。CIS AWSFoundations Benchmark 標準の複数のバージョンを同時に有効にできます。標準の有効化の詳細については、「セキュリティ標準の有効化」を参照してください。v5.0.0 にアップグレードする場合は、古いバージョンを無効にするより前にそれを有効にしてください。そうすることで、セキュリティチェックのギャップが生じるのを防ぐことができます。
AWS CLI コマンドで CIS v5.0.0 を有効化します。
aws securityhub batch-enable-standards \
--standards-subscription-requests '[{"StandardsArn": "arn:aws:securityhub:ap-northeast-1::standards/cis-aws-foundations-benchmark/v/5.0.0"}]' \
--region ap-northeast-1
{
"StandardsSubscriptions": [
{
"StandardsSubscriptionArn": "arn:aws:securityhub:ap-northeast-1:<AccountID>:subscription/cis-aws-foundations-benchmark/v/5.0.0",
"StandardsArn": "arn:aws:securityhub:ap-northeast-1::standards/cis-aws-foundations-benchmark/v/5.0.0",
"StandardsInput": {},
"StandardsStatus": "PENDING",
"StandardsControlsUpdatable": "NOT_READY_FOR_UPDATES"
}
]
}
マネジメントコンソールでは、セキュリティスコアの表示まで 1422 分(約24時間)かかると出てしまいました。

ドキュメントによると、30分以内にセキュリティスコアが生成されるようですが、今回は 24 時間後に再度確認することにします。
標準を有効化すると、Security Hub CSPM はその標準に対して予備的なセキュリティスコアを生成します。これは通常、Security Hub CSPM コンソールの [概要] ページまたは [セキュリティ標準] ページに初めてアクセスしてから約 30 分以内に生成されます。
24 時間後、スコアが更新されていることを確認しました。

v1.2.0 を無効化
v1.2.0 と v5.0.0 の両方のスコアを確認できたところで、v1.2.0 を無効化します。
aws securityhub batch-disable-standards \
--standards-subscription-arns "arn:aws:securityhub:ap-northeast-1:<AccountID>:subscription/cis-aws-foundations-benchmark/v/1.2.0" \
--region ap-northeast-1
{
"StandardsSubscriptions": [
{
"StandardsSubscriptionArn": "arn:aws:securityhub:ap-northeast-1:<AccountID>:subscription/cis-aws-foundations-benchmark/v/1.2.0",
"StandardsArn": "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0",
"StandardsInput": {},
"StandardsStatus": "DELETING",
"StandardsControlsUpdatable": "NOT_READY_FOR_UPDATES",
"Provider": "AWS"
}
]
}
無効化する際には v1.2.0 の StandardsSubscriptionArn を指定します。get-enabled-standards で返ってきた値を使ってください。
v5.0.0 のコントロール数を確認
aws securityhub list-security-control-definitions \
--standards-arn "arn:aws:securityhub:ap-northeast-1::standards/cis-aws-foundations-benchmark/v/5.0.0" \
--region ap-northeast-1 \
--query "length(SecurityControlDefinitions)"
40
v5.0.0 のコントロール数は 40 個 でした。
v5.0.0 の結果を確認
生成された Findings を AWS CLI で確認してみます。
なお、v5.0.0 の Findings では ProductFields.SecurityControlId が None になるため、--query で Compliance.SecurityControlId を使います。詳細は後述の「切り替え時の注意点」を参照してください。
aws securityhub get-findings \
--filters '{
"ComplianceStatus": [{"Value": "FAILED", "Comparison": "EQUALS"}],
"ComplianceAssociatedStandardsId": [{"Value": "standards/cis-aws-foundations-benchmark/v/5.0.0", "Comparison": "EQUALS"}],
"RecordState": [{"Value": "ACTIVE", "Comparison": "EQUALS"}]
}' \
--region ap-northeast-1 \
--query "Findings[].{Control: Compliance.SecurityControlId, Title: Title}" \
--output table
-------------------------------------------------------------------------------------------------------------
| GetFindings |
+--------------+--------------------------------------------------------------------------------------------+
| Control | Title |
+--------------+--------------------------------------------------------------------------------------------+
| IAM.22 | 1.11 IAM user credentials unused for 45 days should be removed |
| S3.22 | 3.8 S3 general purpose buckets should log object-level write events |
| IAM.28 | 1.19 IAM Access Analyzer external access analyzer should be enabled |
| S3.23 | 3.9 S3 general purpose buckets should log object-level read events |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
| IAM.15 | 1.7 Ensure IAM password policy requires minimum password length of 14 or greater |
| IAM.16 | 1.8 Ensure IAM password policy prevents password reuse |
| KMS.4 | 3.6 AWS KMS key rotation should be enabled |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| EC2.2 | 5.5 VPC default security groups should not allow inbound or outbound traffic |
| CloudTrail.7| 3.4 Ensure S3 bucket access logging is enabled on the CloudTrail S3 bucket |
| Config.1 | 3.3 AWS Config should be enabled and use the service-linked role for resource recording |
| EC2.6 | 3.7 VPC flow logging should be enabled in all VPCs |
| Account.1 | 1.2 Security contact information should be provided for an AWS account. |
| CloudTrail.2| 3.5 CloudTrail should have encryption at-rest enabled |
| EC2.7 | 5.1.1 EBS default encryption should be enabled |
| IAM.6 | 1.5 Hardware MFA should be enabled for the root user |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.5 | 2.1.1 S3 general purpose buckets should require requests to use SSL |
| S3.8 | 2.1.4.2 S3 general purpose buckets should block public access |
| S3.20 | 2.1.2 S3 general purpose buckets should have MFA delete enabled |
+--------------+--------------------------------------------------------------------------------------------+
コントロールの比較
切り替えの前と後の差分をまとめます。PASS と FAILED と No Data については、筆者の検証環境での結果となるため、あくまで目安と捉えてください。
数の比較
| 項目 | v1.2.0 | v5.0.0 |
|---|---|---|
| コントロール数 | 42 | 40 |
| PASSED | 10 | 18 |
| No Data | 28 | 1 |
| Unknown | 0 | 3 |
| FAILED | 4 | 18 |
| セキュリティスコア | 71% | 46% |
対象のコントロールに差異があるため、セキュリティスコアも差が見られます。
v1.2.0 → v5.0.0 で削除されたコントロール
CloudWatch.1〜14(ログメトリクスフィルター&アラーム系)が自動チェック対象外になっています。他にも、IAM のパスワードポリシーなどが対象外となっています。
| Control ID | 内容 |
|---|---|
| CloudTrail.5 | CloudTrailとCloudWatch Logs統合 |
| CloudTrail.6 | CloudTrail S3バケットの公開アクセス確認 |
| CloudWatch.1 | rootユーザー使用のログメトリクスフィルター&アラーム |
| CloudWatch.2 | 未承認APIコールのフィルター&アラーム |
| CloudWatch.3 | MFAなしコンソールサインインのフィルター&アラーム |
| CloudWatch.4 | IAMポリシー変更のフィルター&アラーム |
| CloudWatch.5 | CloudTrail設定変更のフィルター&アラーム |
| CloudWatch.6 | コンソール認証失敗のフィルター&アラーム |
| CloudWatch.7 | KMSキー無効化/削除のフィルター&アラーム |
| CloudWatch.8 | S3バケットポリシー変更のフィルター&アラーム |
| CloudWatch.9 | Config設定変更のフィルター&アラーム |
| CloudWatch.10 | SG変更のフィルター&アラーム |
| CloudWatch.11 | NACL変更のフィルター&アラーム |
| CloudWatch.12 | ネットワークゲートウェイ変更のフィルター&アラーム |
| CloudWatch.13 | ルートテーブル変更のフィルター&アラーム |
| CloudWatch.14 | VPC変更のフィルター&アラーム |
| EC2.13 | SGで0.0.0.0/0 または ::/0→ポート22許可禁止 |
| EC2.14 | SGで0.0.0.0/0 または ::/0→ポート3389許可禁止 |
| IAM.1 | フル管理者権限ポリシー禁止 |
| IAM.8 | 未使用IAMユーザー認証情報の削除 |
| IAM.11 | パスワードポリシー(大文字必須) |
| IAM.12 | パスワードポリシー(小文字必須) |
| IAM.13 | パスワードポリシー(記号必須) |
| IAM.14 | パスワードポリシー(数字必須) |
| IAM.17 | パスワード90日有効期限 |
v5.0.0 で新たに追加されたコントロール
RDS、S3、EFS 系のチェックが追加されています。カバー範囲は広がっていますね。
| Control ID | タイトル |
|---|---|
| Account.1 | AWS アカウントにセキュリティ連絡先情報を提供する |
| EC2.7 | EBS のデフォルト暗号化を有効にする |
| EC2.8 | EC2 インスタンスは Instance Metadata Service Version 2 (IMDSv2) を使用する |
| EC2.21 | ネットワーク ACL は 0.0.0.0/0 からポート 22 またはポート 3389 への入力を許可しない |
| EC2.53 | EC2 セキュリティグループは 0.0.0.0/0 からリモートサーバー管理ポートへの入力を許可しない |
| EC2.54 | EC2 セキュリティグループは ::/0 からリモートサーバー管理ポートへの入力を許可しない |
| EFS.1 | Elastic File System は AWS KMS を使用して保存時のファイルデータを暗号化する |
| EFS.8 | EFS ファイルシステムは保存時に暗号化する |
| IAM.22 | 45 日間未使用の IAM ユーザー認証情報を削除する |
| IAM.26 | IAM で管理されている期限切れの SSL/TLS 証明書を削除する |
| IAM.27 | IAM アイデンティティに AWSCloudShellFullAccess ポリシーをアタッチしない |
| IAM.28 | IAM Access Analyzer 外部アクセスアナライザーを有効にする |
| RDS.2 | RDS DB インスタンスはパブリックアクセスを禁止する |
| RDS.3 | RDS DB インスタンスは保存時の暗号化を有効にする |
| RDS.5 | RDS DB インスタンスは複数のアベイラビリティーゾーンで構成する |
| RDS.13 | RDS 自動マイナーバージョンアップグレードを有効にする |
| RDS.15 | RDS DB クラスターは複数のアベイラビリティーゾーンで構成する |
| S3.1 | S3 汎用バケットはブロックパブリックアクセス設定を有効にする |
| S3.5 | S3 汎用バケットはリクエストに SSL の使用を要求する |
| S3.8 | S3 汎用バケットはパブリックアクセスをブロックする |
| S3.20 | S3 汎用バケットは MFA Delete を有効にする |
| S3.22 | S3 汎用バケットはオブジェクトレベルの書き込みイベントをログに記録する |
| S3.23 | S3 汎用バケットはオブジェクトレベルの読み取りイベントをログに記録する |
切り替え時の注意点
- 先に v5.0.0 を有効化してから v1.2.0 を無効化する(チェック空白期間を防ぐため)
- CloudWatch.1〜14 が対象外になる(ログメトリクスフィルター系の手動確認が必要になる)
- その他にも対象外となるコントロールがあるため要確認
- セキュリティスコア の生成は通常30分以内に完了するが、24時間程度かかる場合があった
- ARN の形式が v1.2.0 だけ異なる(CLI 操作時に注意)
後片付け
検証が終わったら、不要であれば v5.0.0 も無効化しましょう。
aws securityhub batch-disable-standards \
--standards-subscription-arns "arn:aws:securityhub:ap-northeast-1:<AccountID>:subscription/cis-aws-foundations-benchmark/v/5.0.0" \
--region ap-northeast-1
まとめ
CIS AWS Foundations Benchmark を v1.2.0 から v5.0.0 へ切り替えてみました。
- 切り替えによる既存環境への影響はない(チェックの ON/OFF のみ)
- v5.0.0 では RDS・S3・EFS・EC2 系のチェックが追加され、カバー範囲が広がっている
- 一方で CloudWatch.1〜14(ログメトリクスフィルター&アラーム系)など v5.0.0 のチェック対象外となるコントロールがある。
- これらの準拠状況は Security Hub CSPM 上で確認できなくなる
- 中間バージョン(v1.4.0, v3.0.0)を経由せず直接 v5.0.0 へ移行できる
- 切り替え手順は「先に v5.0.0 を有効化 → 後で旧バージョンを無効化」が推奨
v1.2.0 は 7年以上前のベンチマークです。もし、更新が必要な場合は、この記事を元に実施してみてください。
この記事がどこかの誰かに役に立ちますように。
参考資料
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AI をフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026 年 1 月 アノテーション㈱から社名変更しました







