サイトアイコン 協栄情報ブログ

特定セキュリティグループのEC2インスタンスのみ起動するように制限してみました。


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

背景

以前、特定セキュリティグループのEC2インスタンスのみ起動するように制限してみましたので、備忘録として残していきたいと思います。

構成図

EC2インスタンスへのセキュリティグループ関連付けを制限したいです。 具体的には特定セキュリティグループのみ付与が可能、 ほかセキュリティグループはインスタンスへ関連付けできないようにします。

ポリシー

ポリシー1(cpi-kobayashi-tag-limit-test1)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyNotAllowedSGAttach",
            "Effect": "Deny",
            "Action": [
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:security-group/*"
            ],
            "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:ResourceTag/AdminManaged": "yes"
                }
            }
        }
    ]
}

ポリシー2(cpi-kobayashi-tag-limit-test2)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyTagOperationsForManagedSG",
            "Effect": "Deny",
            "Action": [
                "ec2:CreateTags",
                "ec2:DeleteTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:security-group/*"
            ],
            "Condition": {
                "Null": {
                    "aws:ResourceTag/AdminManaged": false
                }
            }
        },
        {
            "Sid": "DenyTagCreationForNonManagedSG",
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": [
                "arn:aws:ec2:*:*:security-group/*"
            ],
            "Condition": {
                "Null": {
                    "aws:ResourceTag/AdminManaged": true,
                    "aws:RequestTag/AdminManaged": false
                }
            }
        }
    ]
}

ポリシー3(cpi-kobayashi-tag-limit-test3)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Resource": "arn:aws:ec2:*:*:security-group/*",
            "Condition": {
                "StringLike": {
                    "aws:ResourceTag/AdminManaged": "yes"
                }
            }
        }
    ]
}

IAMユーザの権限

IAMユーザ「CPI-KOBAYASHI-TEST」に下記の権限を付与します。

AmazonEC2FullAccess
cpi-kobayashi-tag-limit-test1
cpi-kobayashi-tag-limit-test2
cpi-kobayashi-tag-limit-test3

動作確認

制限される場合の例




制限しない場合の例


参考

https://dev.classmethod.jp/articles/restrict-security-group-attaching/

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_ec2_instances-subnet.html

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_ec2_tag-owner.html

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_ec2-start-stop-tags.html

https://qiita.com/simeji/items/dc32b2dec0362376258f

モバイルバージョンを終了