SCP で SSM ドキュメントのパブリック共有ブロック設定の変更を禁止する

SCP で SSM ドキュメントのパブリック共有ブロック設定の変更を禁止する

2025.07.29

AWS Security Hub CSPM において、AWS Systems Manager (SSM) ドキュメントのパブリック共有ブロック設定がブロック状態になっているか確認するコントロールが追加されました。本ブログでは、このコントロールに関連して、特定ユーザー以外が SSM ドキュメントのパブリック共有ブロック設定を変更できなくする AWS Organizations の SCP のポリシー例を紹介します。

AWS Security Hub CSPM に追加されたコントロールは SSM.7 が該当します。

参考情報ですが、AWS CLI を用いて全てのリージョンでブロック状態に設定するブログは下記となります。

https://dev.classmethod.jp/articles/ssm-documents-public-sharing-permission/

SSM ドキュメントのパブリック共有ブロック設定の変更を禁止する SCP

SSM ドキュメントのパブリック共有ブロック設定の変更を禁止する SCP の設定例です。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ssm:UpdateServiceSetting",
        "ssm:ResetServiceSetting"
      ],
      "Resource": "arn:aws:ssm:*:*:servicesetting/ssm/documents/console/public-sharing-permission",
      "Condition": {
        "ArnNotLike": {
          "aws:PrincipalARN": [
            "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/*/AWSReservedSSO_AdministratorAccess_*",
            "arn:aws:iam::*:role/security-admin-role",
            "arn:aws:iam::*:user/security-admin-user"
          ]
        }
      }
    }
  ]
}

Action と Resource の指定値は、AWS が公開しているブログにポリシーの例が紹介されていたため、参考にしました。

https://aws.amazon.com/jp/blogs/news/best-practice-considerations-aws-systems-manager-document-sharing/

SSM ドキュメントの設定に対して、更新とリセットを Deny しています。
Resource は * 指定でもよいと始めは思っていたのですが、ssm:UpdateServiceSetting の対象にはオートメーションなどの他の SSM のサービスの設定も含まれれることから、明示的に SSM ドキュメントのパブリック共有ブロック設定を指定する必要がありました。

他の SSM 設定にどのような項目があるかは、SSM の UpdateServiceSetting の API リファレンスが参考になりました。

Condtion では、特定の IAM ロール/ユーザーを除外しています。
上から、指定した AWS IAM Identity Center のアクセス許可セットの割り当てがあるユーザー、IAM ロール、IAM ユーザーを除外する記載例です。
初期セットアップのための IAM ユーザー/ロールやセキュリティの管理者など、SCP の影響を受けずに作業できるようにするために除外する場合の書き方の例です。

SCP を試してみた

AWS IAM Identity Center を利用している環境で、「AdministratorAccess」という名前のアクセス許可セットを割り当てたユーザーを除外対象とした次のポリシーを SCP として設定してみます。上述した例と異なり、 aws:PrincipalARN の指定においてリージョンはワイルドカードではなく、AWS IAM Identity Center を構築している東京リージョンに限定しています。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ssm:UpdateServiceSetting",
        "ssm:ResetServiceSetting"
      ],
      "Resource": "arn:aws:ssm:*:*:servicesetting/ssm/documents/console/public-sharing-permission",
      "Condition": {
        "ArnNotLike": {
          "aws:PrincipalARN": [
            "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_*"
          ]
        }
      }
    }
  ]
}

AWS Organizations の SCP からポリシー DenySsmUpdateServiceSetting を作成します。

deny-update-ssm-document-sharing-setting1

作成したポリシーを SSM ドキュメントの設定変更をテストするアカウントが格納されている OU にアタッチします。

deny-update-ssm-document-sharing-setting2

AWS 管理ポリシーの「AdministratorAccess」を関連付けた次の 2 つのアクセス許可セットで、それぞれ SSM ドキュメントのパブリック共有ブロック設定を「オン」→「オフ」に変更できるか試してみます。事前準備として「オン(パブリック共有をブロックする状態)」に変更済みです。

アクセス許可セット名 関連付けている AWS 管理ポリシ-
AdministratorAccess AdministratorAccess
TestAccess AdministratorAccess

SCP において Deny の除外対象になっている、アクセス許可セット名「AdministratorAccess」では設定を「オフ」に変更できました。

deny-update-ssm-document-sharing-setting3

SCP において Deny の除外対象になっていない、アクセス許可セット名「TestAccess」では、意図通り設定を「オフ」に変更できず、エラーとなりました。

deny-update-ssm-document-sharing-setting4

SCP が SSM ドキュメントのパブリック共有ブロック設定の変更を防止していることを確認できました。

さいごに

SSM ドキュメントのパブリック共有ブロック設定の更新を拒否する SCP のポリシー例を紹介しました。CCoE が初期設定用 IAM ユーザー/ロールで設定した後は、利用者が設定を変更できないようにする運用を想定して、特定の IAM ユーザー/ロールだけ除外する例で試してみました。

以上、このブログがどなたかのご参考にばれば幸いです。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.