この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
背景
以前、特定VPCに特定セキュリティグループのEC2インスタンスのみ起動するように制限してみましたので、備忘録として残していきたいと思います。
構成図
特定VPCにEC2インスタンスへのセキュリティグループ関連付けを制限したいです。 具体的には特定セキュリティグループのみ付与が可能、 ほかセキュリティグループはインスタンスへ関連付けできないようにします。
その他VPCに制限しない
ポリシー
ポリシー1(cpi-kobayashi-tag-limit-test1)
特定VPCの条件を下記のように記載します。
"Condition": {
"ArnEquals": {
"ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/vpc-id"
}
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyNotAllowedSGAttach",
"Effect": "Deny",
"Action": [
"ec2:ModifyNetworkInterfaceAttribute",
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:*:*:security-group/*"
],
"Condition": {
"ArnEquals": {
"ec2:Vpc": "arn:aws:ec2:ap-northeast-1:717076937412:vpc/vpc-0133514a2d1f31b3c"
},
"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
動作確認(特定VPC)
SGに"AdminManaged": "yes"が付いていない場合
(EC2の起動が制限される)
①
②
③
SGに"AdminManaged": "yes"が付いている場合
(EC2の起動が制限されない)
①
②
③
動作確認(その他VPC)
SGに"AdminManaged": "yes"が付いていない場合
(EC2の起動が制限されない)
①
②
③
SGに"AdminManaged": "yes"が付いている場合
(EC2の起動が制限されない)
①
②
③
参考
https://cloud5.jp/tag-limit-for-sg/
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-policy-examples.html