Si vous créez ALB avec Fargate avec CDK, Security Group sera complètement ouvert. S'il s'agit d'un environnement de développement ou d'un service interne, je voudrais affiner l'adresse IP en tenant compte de la sécurité, mais avec CDK, il était facile à ajouter mais difficile à supprimer, je vais donc partager cette méthode
Commencez par créer le groupe de sécurité à modifier
alb_sg=ec2.SecurityGroup(self, "alb-sg",
vpc=ivpc,
description="alb sg"
)
Ensuite, créez un ALB qui utilise ce groupe de sécurité.
ecs_alb=elasticloadbalancingv2.ApplicationLoadBalancer(self, "alb",
security_group=alb_sg,
vpc=ivpc,
internet_facing=True,
load_balancer_name="ecs-alb"
)
Créez ensuite un service Fargate en utilisant ecs_patterns
fargate_service = ecs_patterns.ApplicationLoadBalancedFargateService(self, "service",
cluster=cluster,
task_definition=task,
load_balancer=ecs_alb,
cloud_map_options = ecs.CloudMapOptions(
name = 'hoge'
)
)
Lorsque vous l'exécutez, vous pouvez voir qu'un groupe de sécurité avec 80 ports entièrement ouverts est créé comme indiqué ci-dessous. (Seule la partie Groupe de sécurité est extraite)
$ cdk diff ecs
Stack ecs
Security Group Changes
┌───┬───────────────────────────────────────────────────────┬─────┬──────────┬────────────────────────────────┐
│ │ Group │ Dir │ Protocol │ Peer │
├───┼───────────────────────────────────────────────────────┼─────┼──────────┼────────────────────────────────┤
│ + │ ${prod-alb-sg.GroupId} │ In │ TCP 80 │ Everyone (IPv4) │
└───┴───────────────────────────────────────────────────────┴─────┴──────────┴────────────────────────────────┘
Resources
[~] AWS::EC2::SecurityGroup prod-alb-sg prodmonitoralbsg0D94D960
└─ [+] SecurityGroupIngress
└─ [{"CidrIp":"0.0.0.0/0","Description":"Allow from anyone on port 80","FromPort":80,"IpProtocol":"tcp","ToPort":80}]
Vous pouvez l'écraser avec node.default_child.add_override
, alors spécifiez la clé et écrasez-la.
Les deux suivants sont spécifiés, et comme une seule règle entièrement ouverte est ajoutée, la 0e est spécifiée.
alb_sg.node.default_child.add_override(
"Properties.SecurityGroupIngress.0.CidrIp",
"1.1.1.1/32"
)
alb_sg.node.default_child.add_override(
"Properties.SecurityGroupIngress.0.Description",
"Google"
)
Lorsqu'il est exécuté, le TCP80 par défaut autorise tout le monde disparaît et passe à l'adresse IP spécifiée
$ SYSTEM_ENV=prod cdk diff ecs
Stack ecs
Security Group Changes
┌───┬────────────────────────────────┬─────┬──────────┬─────────────────┐
│ │ Group │ Dir │ Protocol │ Peer │
├───┼────────────────────────────────┼─────┼──────────┼─────────────────┤
│ - │ ${prod-alb-sg.GroupId} │ In │ TCP 80 │ Everyone (IPv4) │
├───┼────────────────────────────────┼─────┼──────────┼─────────────────┤
│ + │ ${prod-alb-sg.GroupId} │ In │ TCP 80 │ 1.1.1.1/32 │
└───┴────────────────────────────────┴─────┴──────────┴─────────────────┘
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)
Resources
[~] AWS::EC2::SecurityGroup prod-alb-sg prodmonitoralbsg0D94D960
└─ [~] SecurityGroupIngress
└─ @@ -1,7 +1,7 @@
[ ] [
[ ] {
[-] "CidrIp": "0.0.0.0/0",
[-] "Description": "Allow from anyone on port 80",
[+] "CidrIp": "1.1.1.1/32",
[+] "Description": "Google",
[ ] "FromPort": 80,
[ ] "IpProtocol": "tcp",
[ ] "ToPort": 80
Voilà comment jouer avec ALB par défaut SG de CDK
Recommended Posts