【Security Hub修復手順】[SNS.4] SNS トピックアクセスポリシーはパブリックアクセスを許可するべきではありません

【Security Hub修復手順】[SNS.4] SNS トピックアクセスポリシーはパブリックアクセスを許可するべきではありません

AWS SecurityHub 基礎セキュリティのベストプラクティスコントロール修復手順をご紹介します。
Clock Icon2025.04.01

こんにちは!AWS事業本部の吉田です。

皆さん、お使いのAWS環境のセキュリティチェックはしていますか?

当エントリでは、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。

本記事の対象コントロール

[SNS.4] SNS トピックアクセスポリシーはパブリックアクセスを許可するべきではありません

[SNS.4] SNS topic access policies should not allow public access

前提条件

本記事は、AWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。
AWS Security Hubの詳細についてはこちらのブログをご覧ください。

https://dev.classmethod.jp/articles/lets-learn-aws-security-hub/

https://dev.classmethod.jp/articles/aws-security-operation-with-securityhub-2021/

対象コントロールの説明

本コントロールは、Amazon SNS トピックアクセスポリシーがパブリックアクセスを許可しているかか確認します。
トピックアクセスポリシーによってアクセスを制限しない場合、データの流出、不要なメッセージの挿入につながる可能性があります。

本コントロールは、KMS.5のコントロールの内容に似ています。
【Security Hub修復手順】[KMS.5] KMSキーはパブリックに公開すべきではありません | DevelopersIO

KMS.5と同様に、Principalでワイルドカードを使用していた場合に本コントロールは失敗します。
(後述しますが、Condtionで条件つきで許可していた場合は成功します。)

修復手順

トピックアクセスポリシーの修復内容としては、主に以下の内容が考えられます。

  • Principalのワイルドカードの部分をIAMロール・もしくはIAMユーザーのARNに変更する
  • Principalのワイルドカードのままだが、Condtionによってトピックの所有者のみに制限する
    • マネージドコンソールで作成した場合は、デフォルトでこの設定となります

今回は、Condtionによってトピックの所有者のみに制限します。

修正前のトピックアクセスポリシー
{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:Publish",
        "SNS:RemovePermission",
        "SNS:SetTopicAttributes",
        "SNS:DeleteTopic",
        "SNS:ListSubscriptionsByTopic",
        "SNS:GetTopicAttributes",
        "SNS:AddPermission",
        "SNS:Subscribe"
      ],
      "Resource": "arn:aws:sns:ap-northeast-1:[アカウントID]:[トピック名]"
    }
  ]
}
修正後のトピックアクセスポリシー
{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:Publish",
        "SNS:RemovePermission",
        "SNS:SetTopicAttributes",
        "SNS:DeleteTopic",
        "SNS:ListSubscriptionsByTopic",
        "SNS:GetTopicAttributes",
        "SNS:AddPermission",
        "SNS:Subscribe"
      ],
      "Resource": "arn:aws:sns:ap-northeast-1:[アカウントID]:[トピック名]",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "[アカウントID]"
        }
      }
    }
  ]
}
  1. SNSの「トピック」のページに移動し、対象のSNSトピックをクリックします。
    スクリーンショット 2025-04-01 10.11.58

  2. SNSトピックの「編集」をクリックします。
    スクリーンショット 2025-04-01 10.12.14

  3. トピックアクセスポリシーでPrincipalにワイルドカードを使用しているStatementを探し修正します。
    スクリーンショット 2025-04-01 10.14.36

  4. 「変更の保存」をクリックします。
    スクリーンショット 2025-04-01 10.20.29

最後に

今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。

コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!

最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.