こんばんは、小寺です。
先日のアップデートでAMIのパブリック共有をAWSアカウントから無効化する機能が発表されています。
https://aws.amazon.com/about-aws/whats-new/2023/09/amazon-ec2-block-public-access-machine-images/

過去コラム記事

今日は、パブリック共有の無効化設定が削除されないようSCPから無効にする方法を試してみました。
SCPでは以下ポリシーを適用してみます。

SCPを設定する

(1) AWS Organizationsから、「ポリシー」→「サービスコントロールポリシー」を選び、「ポリシーを作成」をクリックします。

(2) 以下のポリシーを追加します。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Deny",
"Action": [
"ec2:DisableImageBlockPublicAccess"
],
"Resource": "*"
}
]
}

(3) ポリシーの追加を確認してみます。

SCPの適用を確認する

(1)最初にAMIのパブリック共有を無効化しておきます。

(2)次に、Manageから「①Block new public sharing」のチェックを外し、「②Update」をクリックします。

(3)確認メッセージが表示されるので、「confirm」をクリックして「Allow public sharing」をクリックします。

(4)SCPによる無効化チェックを外すオペレーションの拒否が確認できました。

強制的にパブリックアクセスを無効にしたい場合は、以下のポリシーをSCPに追加します。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Enable",
"Action": [
"ec2:EnableImageBlockPublicAccess"
],
"Resource": "*"
}
]
}

まとめ

AMIのパブリックアクセス無効化について確認してみました。
AMIをパブリック共有することは想定されないため、基本的にはAWSアカウント作成時にデフォルトで全リージョンへ無効化設定を行い、
OUに対してSCPでの制御をかけていく運用をデフォルトにするのが良いと思います。