この記事は公開されてから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://qiita.com/simeji/items/dc32b2dec0362376258f