Gérez les groupes de sécurité avec AWS CloudFormation - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gérez les groupes de sécurité avec AWS CloudFormation

Les extraits suivants montrent comment gérer les groupes de sécurité et les EC2 instances Amazon AWS CloudFormation afin de contrôler l'accès à vos AWS ressources.

Associer une EC2 instance Amazon à un groupe de sécurité

Les exemples d'extraits suivants montrent comment associer une EC2 instance Amazon à un groupe de VPC sécurité Amazon par défaut à l'aide de. AWS CloudFormation

Associer une EC2 instance Amazon à un groupe VPC de sécurité par défaut

L'extrait suivant crée un AmazonVPC, un sous-réseau au sein de celui-ci et une VPC instance Amazon. EC2 VPCIl est créé à l'aide d'une VPC ressource AWSEC2: : : :. La plage d'adresses IP pour le VPC est définie dans le modèle plus large et est référencée par le MyVPCCIDRRange paramètre.

Un sous-réseau est créé dans le à l'VPCaide d'une AWSressource de sous-réseau EC2 : : :. Le sous-réseau est associé auVPC, qui est référencé commeMyVPC.

Une EC2 instance est lancée dans le sous-réseau VPC and à l'aide d'une ressource AWS: : EC2 : :Instance. Cette ressource indique l'Amazon Machine Image (AMI) à utiliser pour lancer l'instance, le sous-réseau sur lequel l'instance sera exécutée et le groupe de sécurité à associer à l'instance. La Fn::FindInMap fonction est utilisée pour récupérer des valeurs à partir du AWSRegionToAMI mappage défini dans le modèle afin de déterminer ImageId la ressource AWS: : EC2 : :Instance.

L'ID du groupe de sécurité est obtenu à l'aide de la fonction Fn::GetAtt, qui extrait le groupe de sécurité par défaut de la ressource MyVPC.

L'instance est placée dans la ressource MySubnet définie dans l'extrait.

Lorsque vous créez un utilisateur AWS CloudFormation, VPC crée AWS automatiquement des ressources par défaut au sein duVPC, y compris un groupe de sécurité par défaut. Toutefois, lorsque vous définissez un VPC dans un AWS CloudFormation modèle, il se peut que vous n'ayez pas accès à ces ressources par défaut lors IDs de la création du modèle. Pour accéder aux ressources par défaut spécifiées dans le modèle et les utiliser, vous pouvez utiliser des fonctions intrinsèques telles que Fn::GetAtt. Cette fonction vous permet de travailler avec les ressources par défaut créées automatiquement par AWS CloudFormation.

JSON

"MyVPC": { "Type": "AWS::EC2::VPC", "Properties": { "CidrBlock": { "Ref": "MyVPCCIDRRange" }, "EnableDnsSupport": false, "EnableDnsHostnames": false, "InstanceTenancy": "default" } }, "MySubnet": { "Type": "AWS::EC2::Subnet", "Properties": { "CidrBlock": { "Ref": "MyVPCCIDRRange" }, "VpcId": { "Ref": "MyVPC" } } }, "MyInstance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Fn::FindInMap": [ "AWSRegionToAMI", { "Ref": "AWS::Region" }, "64" ] }, "SecurityGroupIds": [ { "Fn::GetAtt": [ "MyVPC", "DefaultSecurityGroup" ] } ], "SubnetId": { "Ref": "MySubnet" } } }

YAML

MyVPC: Type: AWS::EC2::VPC Properties: CidrBlock: Ref: MyVPCCIDRRange EnableDnsSupport: false EnableDnsHostnames: false InstanceTenancy: default MySubnet: Type: AWS::EC2::Subnet Properties: CidrBlock: Ref: MyVPCCIDRRange VpcId: Ref: MyVPC MyInstance: Type: AWS::EC2::Instance Properties: ImageId: Fn::FindInMap: - AWSRegionToAMI - Ref: AWS::Region - "64" SecurityGroupIds: - Fn::GetAtt: - MyVPC - DefaultSecurityGroup SubnetId: Ref: MySubnet

Création d'une EC2 instance Amazon avec un volume et un groupe de sécurité attachés

L'extrait suivant crée une EC2 instance Amazon à l'aide d'une ressource AWS: : EC2 : :Instance, qui est lancée à partir d'une ressource désignée. AMI L'instance est associée à un groupe de sécurité qui autorise le SSH trafic entrant sur le port 22 à partir d'une adresse IP spécifiée, en utilisant une SecurityGroup ressource AWSEC2: : : :. Il crée un EBS volume Amazon de 100 Go à l'aide d'une ressource AWS: EC2 : : :Volume. Le volume est créé dans la même zone de disponibilité que l'instance, telle que spécifiée par la fonction GetAtt, et est monté sur l'instance sur le périphérique /dev/sdh.

Pour plus d'informations sur la création de EBS volumes Amazon, consultez Créer un EBS volume Amazon.

JSON

"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "SecurityGroups": [ { "Ref": "InstanceSecurityGroup" } ], "ImageId": "ami-1234567890abcdef0" } }, "InstanceSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Enable SSH access via port 22", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": "192.0.2.0/24" } ] } }, "NewVolume": { "Type": "AWS::EC2::Volume", "Properties": { "Size": "100", "AvailabilityZone": { "Fn::GetAtt": [ "Ec2Instance", "AvailabilityZone" ] } } }, "MountPoint": { "Type": "AWS::EC2::VolumeAttachment", "Properties": { "InstanceId": { "Ref": "Ec2Instance" }, "VolumeId": { "Ref": "NewVolume" }, "Device": "/dev/sdh" } }

YAML

Ec2Instance: Type: AWS::EC2::Instance Properties: SecurityGroups: - !Ref InstanceSecurityGroup ImageId: ami-1234567890abcdef0 InstanceSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable SSH access via port 22 SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 192.0.2.0/24 NewVolume: Type: AWS::EC2::Volume Properties: Size: 100 AvailabilityZone: !GetAtt [Ec2Instance, AvailabilityZone] MountPoint: Type: AWS::EC2::VolumeAttachment Properties: InstanceId: !Ref Ec2Instance VolumeId: !Ref NewVolume Device: /dev/sdh

Créer des groupes de sécurité avec des règles d'entrée

Les exemples d'extraits suivants montrent comment configurer des groupes de sécurité avec des règles d'entrée spécifiques à l'aide d' AWS CloudFormation.

Création d'un groupe de sécurité avec des règles d'entrée SSH et d'accès HTTP

L'extrait suivant décrit deux règles d'entrée de groupes de sécurité utilisant une ressource AWS: : : EC2 :. SecurityGroup La première règle d'entrée autorise SSH (port 22) l'accès à partir d'un groupe de sécurité existant nomméMyAdminSecurityGroup, qui appartient au AWS compte ayant le numéro 1111-2222-3333 de compte. La deuxième règle d'entrée autorise l'accès HTTP (port 80) à partir d'un groupe de sécurité différent nomméMySecurityGroupCreatedInCFN, créé dans le même modèle. La fonction Ref est utilisée pour référencer le nom logique du groupe de sécurité créé dans le même modèle.

Dans la première règle d'entrée, vous devez ajouter une valeur à la fois pour les propriétés SourceSecurityGroupName et SourceSecurityGroupOwnerId. Dans la deuxième règle d'entrée, MySecurityGroupCreatedInCFNTemplate fait référence à un autre groupe de sécurité créé dans le même modèle. Vérifiez que le nom logique MySecurityGroupCreatedInCFNTemplate correspond au nom logique réel de la ressource de groupe de sécurité que vous spécifiez dans le modèle plus large.

Pour plus d'informations sur les groupes de sécurité, consultez les sections Groupes EC2 de sécurité Amazon pour les instances Linux ou Groupes EC2 de sécurité Amazon pour les instances Windows.

JSON

"SecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Allow connections from specified source security group", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "SourceSecurityGroupName": "MyAdminSecurityGroup", "SourceSecurityGroupOwnerId": "1111-2222-3333" }, { "IpProtocol": "tcp", "FromPort": "80", "ToPort": "80", "SourceSecurityGroupName": { "Ref": "MySecurityGroupCreatedInCFNTemplate" } } ] } }

YAML

SecurityGroup: Type: 'AWS::EC2::SecurityGroup' Properties: GroupDescription: Allow connections from specified source security group SecurityGroupIngress: - IpProtocol: tcp FromPort: '22' ToPort: '22' SourceSecurityGroupName: MyAdminSecurityGroup SourceSecurityGroupOwnerId: '1111-2222-3333' - IpProtocol: tcp FromPort: '80' ToPort: '80' SourceSecurityGroupName: Ref: MySecurityGroupCreatedInCFNTemplate

Créez un groupe de sécurité avec des règles d'entrée HTTP et d'SSHaccès pour des plages spécifiées CIDR

L'extrait suivant crée un groupe de sécurité pour une EC2 instance Amazon avec deux règles entrantes. Les règles de TCP trafic entrant autorisent le trafic entrant sur les ports spécifiés à partir des CIDR plages désignées. Une SecurityGroup ressource AWS: EC2 : : : est utilisée pour spécifier les règles. Vous devez spécifier un protocole pour chaque règle. PourTCP, vous devez spécifier un port ou une plage de ports. Si vous ne spécifiez ni groupe de sécurité source ni CIDR plage, la pile sera lancée avec succès, mais la règle ne sera pas appliquée au groupe de sécurité.

Pour plus d'informations sur les groupes de sécurité, consultez les sections Groupes EC2 de sécurité Amazon pour les instances Linux ou Groupes EC2 de sécurité Amazon pour les instances Windows.

JSON

"ServerSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Allow connections from specified CIDR ranges", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": "80", "ToPort": "80", "CidrIp": "192.0.2.0/24" }, { "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": "192.0.2.0/24" } ] } }

YAML

ServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow connections from specified CIDR ranges SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 192.0.2.0/24 - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 192.0.2.0/24

Créer des groupes de sécurité à référencement croisé avec des règles d'entrée

L'extrait suivant utilise la SecurityGroup ressource AWS: : : EC2 : pour créer deux groupes de EC2 sécurité Amazon, etSGroup1. SGroup2 Les règles d'entrée qui autorisent la communication entre les deux groupes de sécurité sont créées à l'aide de la SecurityGroupIngress ressource AWS: EC2 : : :. SGroup1Ingressétablit une règle d'entrée SGroup1 qui autorise le TCP trafic entrant sur le port 80 en provenance du groupe de sécurité source,SGroup2. SGroup2Ingressétablit une règle d'entrée SGroup2 qui autorise le TCP trafic entrant sur le port 80 en provenance du groupe de sécurité source,SGroup1.

JSON

"SGroup1": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "EC2 instance access" } }, "SGroup2": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "EC2 instance access" } }, "SGroup1Ingress": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties": { "GroupName": { "Ref": "SGroup1" }, "IpProtocol": "tcp", "ToPort": "80", "FromPort": "80", "SourceSecurityGroupName": { "Ref": "SGroup2" } } }, "SGroup2Ingress": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties": { "GroupName": { "Ref": "SGroup2" }, "IpProtocol": "tcp", "ToPort": "80", "FromPort": "80", "SourceSecurityGroupName": { "Ref": "SGroup1" } } }

YAML

SGroup1: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: EC2 Instance access SGroup2: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: EC2 Instance access SGroup1Ingress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupName: !Ref SGroup1 IpProtocol: tcp ToPort: 80 FromPort: 80 SourceSecurityGroupName: !Ref SGroup2 SGroup2Ingress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupName: !Ref SGroup2 IpProtocol: tcp ToPort: 80 FromPort: 80 SourceSecurityGroupName: !Ref SGroup1

Créer un Elastic Load Balancer avec une règle d'entrée de groupe de sécurité

Le modèle suivant crée une LoadBalancer ressource AWS: ElasticLoadBalancing : : : dans la zone de disponibilité spécifiée. La LoadBalancer ressource AWS: : ElasticLoadBalancing : : est configurée pour écouter le HTTP trafic sur le port 80 et diriger les demandes vers les instances également sur le port 80. L'Elastic Load Balancer est chargé d'équilibrer la charge HTTP du trafic entrant entre les instances.

En outre, ce modèle génère une SecurityGroup ressource AWS: : EC2 : : associée à l'équilibreur de charge. Ce groupe de sécurité est créé avec une règle d'entrée unique, décrite commeELB ingress group, qui autorise le TCP trafic entrant sur le port 80. La source de cette règle d'entrée est définie à l'aide de la fonction Fn::GetAtt de récupération des attributs de la ressource d'équilibrage de charge. SourceSecurityGroupOwnerIdutilise Fn::GetAtt pour obtenir le groupe OwnerAlias de sécurité source de l'équilibreur de charge. SourceSecurityGroupNameutilise Fn::Getatt pour obtenir le groupe GroupName de sécurité source duELB.

Cette configuration garantit une communication sécurisée entre les ELB et les instances.

Pour plus d'informations sur l'équilibrage de charge, consultez Guide de l'utilisateur Elastic Load Balancing.

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "MyELB": { "Type": "AWS::ElasticLoadBalancing::LoadBalancer", "Properties": { "AvailabilityZones": [ "aa-example-1a" ], "Listeners": [ { "LoadBalancerPort": "80", "InstancePort": "80", "Protocol": "HTTP" } ] } }, "MyELBIngressGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "ELB ingress group", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "SourceSecurityGroupOwnerId": { "Fn::GetAtt": [ "MyELB", "SourceSecurityGroup.OwnerAlias" ] }, "SourceSecurityGroupName": { "Fn::GetAtt": [ "MyELB", "SourceSecurityGroup.GroupName" ] } } ] } } } }

YAML

AWSTemplateFormatVersion: '2010-09-09' Resources: MyELB: Type: 'AWS::ElasticLoadBalancing::LoadBalancer' Properties: AvailabilityZones: - aa-example-1a Listeners: - LoadBalancerPort: '80' InstancePort: '80' Protocol: HTTP MyELBIngressGroup: Type: 'AWS::EC2::SecurityGroup' Properties: GroupDescription: ELB ingress group SecurityGroupIngress: - IpProtocol: tcp FromPort: '80' ToPort: '80' SourceSecurityGroupOwnerId: Fn::GetAtt: - MyELB - SourceSecurityGroup.OwnerAlias SourceSecurityGroupName: Fn::GetAtt: - MyELB - SourceSecurityGroup.GroupName