「起動設定を使ったAuto Scalingグループ」を作らせないIAMポリシー(SCP)

「起動設定を使ったAuto Scalingグループ」を作らせないIAMポリシー(SCP)

Clock Icon2022.08.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Auto Scaling、起動設定、起動テンプレートとは

Amazon EC2 Auto Scaling は EC2インスタンスの水平スケールを実現するサービスです。 「Auto Scaling グループ」 を作成して「EC2インスタンスの集合」を管理できます。 グループ内のインスタンスの最大数や最小数を指定できます。 また、特定の条件下でインスタンスを増減させる「スケーリングポリシー」を設定できます。 アプリケーションの負荷に応じた水平スケールを実現できます。

Auto Scaling を使用するためには「どのようなインスタンスを起動するか」の設定が必要です。 例えば 使用するAMI IDや インスタンスタイプ、セキュリティグループなどです。 この設定には 「 起動テンプレート 」もしくは「 起動設定 」が使用できます。

起動設定は「非推奨」

現在は 起動テンプレートを使うことが推奨されており起動設定は非推奨 になっています。 起動設定は昔からあった設定で、機能が少ないためです。 AWS公式ドキュメント にも 「起動設定を使用しないことを強くお勧めします」 と明記されています。

img

予防的ガードレールを作りたい

そのため、これから作っていくワークロードには起動設定は使わせたくありません。

予防的に「起動設定を使わせない」ようにするには IAMポリシーが適しています。 例えば、利用者のユーザーポリシーを定めて、「起動設定を使う」アクションを禁止します。 また、SCP(サービスコントロールポリシー)を使って、アカウント単位で そのアクションを禁止します。

以降で「起動設定を使わせない」ためのIAMポリシー例を紹介します。

「起動設定を使ったAuto Scalingグループ」を作らせないIAMポリシー

以下のような IAMポリシーを作ってみました。 2つのステートメントを順番に説明します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyCreateLaunchConfiguration",
      "Effect": "Deny",
      "Action": "autoscaling:CreateLaunchConfiguration",
      "Resource": "*"
    },
    {
      "Sid": "DenyUseLaunchConfiguration",
      "Effect": "Deny",
      "Action": [
        "autoscaling:CreateAutoScalingGroup",
        "autoscaling:UpdateAutoScalingGroup"
      ],
      "Resource": "*",
      "Condition": {
        "Null": {
          "autoscaling:LaunchConfigurationName": false
        }
      }
    }
  ]
}   

DenyCreateLaunchConfiguration

"Sid": "DenyCreateLaunchConfiguration",
"Effect": "Deny",
"Action": "autoscaling:CreateLaunchConfiguration",
"Resource": "*"

そのままです。「起動設定の作成」を禁止します。
新規アカウントで、他に起動設定リソースが無いような環境であれば、 このステートメントだけで十分です。

DenyUseLaunchConfiguration

"Sid": "DenyUseLaunchConfiguration",
"Effect": "Deny",
"Action": [
  "autoscaling:CreateAutoScalingGroup",
  "autoscaling:UpdateAutoScalingGroup"
],
"Resource": "*",
"Condition": {
  "Null": {
    "autoscaling:LaunchConfigurationName": false
  }
}

このステートメントで「起動設定を使わせる」ことを禁止します。 例えば「Auto Scaling グループの設定を 起動テンプレートから起動設定 に変更する」 ことを禁止できます。

試してみる

起動設定を新規作成

起動設定の作成を試みます。

img

拒否されました。

img

Auto Scalingグループの設定変更

既存の Auto Scalingグループの設定を「起動テンプレート」から 「起動設定」に変えてみます。

img

こちらも拒否されました。

img

おわりに

以上 「Auto Scaling グループで起動設定を使わせない」ための予防ガードレール例でした。 SCPや IAM Permissions Boundary などで設定しておくと良いでしょう。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.