Auto Scalingの起動設定で指定できるインスタンスタイプをSCPで制限する

こんにちは。サービスグループの武田です。Auto Scalingグループで指定する「起動設定」を作成する際、指定されたインスタンスタイプが含まれていた場合に拒否するようなSCPを設定してみました。
2021.08.30

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

こんにちは。サービスグループの武田です。

Auto Scalingグループを使用する際、起動するEC2インスタンスの設定テンプレートとして、「起動設定」と「起動テンプレート」があります。今回は「起動設定」を対象として、作成する際に指定されたインスタンスタイプが含まれていた場合、拒否するようなSCPを設定してみました。

今回作成したポリシーは次のようなものです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "autoscaling:CreateLaunchConfiguration",
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "autoscaling:InstanceType": "t2.*"
                }
            }
        }
    ]
}

T2ファミリーをインスタンスタイプとして指定する「起動設定」の作成を拒否します。「起動設定」の条件キーにはautoscaling:InstanceTypeが使用できるため、これで指定しています。その他の条件キーなどについてはドキュメントを参照してください。

このポリシーを検証用アカウントにアタッチしてコマンドを実行してみます。

$ aws autoscaling create-launch-configuration --launch-configuration-name test1 --image-id ami-09ebacdc178ae23b7 --instance-type t3.micro

$ aws autoscaling create-launch-configuration --launch-configuration-name test2 --image-id ami-09ebacdc178ae23b7 --instance-type t2.micro

An error occurred (AccessDenied) when calling the CreateLaunchConfiguration operation: User: arn:aws:sts::123456789012:assumed-role/test-role/botocore-session-1630308446 is not authorized to perform: autoscaling:CreateLaunchConfiguration on resource: arn:aws:autoscaling:ap-northeast-1:123456789012:launchConfiguration:*:launchConfigurationName/test2 with an explicit deny

t3.microを指定した「起動設定」は作成に成功していますが、t2.microを指定した「起動設定」は失敗しました。ポリシーが効いていますね。

まとめ

Auto Scalingで起動するインスタンスのインスタンスタイプをSCPで制限してみました。冒頭で述べたようにAuto Scalingグループは「起動設定」と「起動テンプレート」が指定できます。今回検証したのは「起動設定」のみですので、その点は注意してください。