この記事は公開されてから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グループは「起動設定」と「起動テンプレート」が指定できます。今回検証したのは「起動設定」のみですので、その点は注意してください。