

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 CloudFormation
<a name="quickref-ec2-sg"></a>

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

**Topics**
+ [Associer une instance Amazon EC2 à un groupe de sécurité](#quickref-ec2-instances-associate-security-group)
+ [Créer des groupes de sécurité avec des règles d'entrée](#quickref-ec2-instances-ingress)
+ [Créer un Elastic Load Balancer avec une règle d'entrée de groupe de sécurité](#scenario-ec2-security-group-elbingress)

## Associer une instance Amazon EC2 à un groupe de sécurité
<a name="quickref-ec2-instances-associate-security-group"></a>

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

**Topics**
+ [Associer une instance Amazon EC2 à un groupe de sécurité VPC par défaut](#using-cfn-getatt-default-values)
+ [Créer une instance Amazon EC2 avec un volume et un groupe de sécurité attachés](#scenario-ec2-volumeattachment)

### Associer une instance Amazon EC2 à un groupe de sécurité VPC par défaut
<a name="using-cfn-getatt-default-values"></a>

L'extrait suivant crée un Amazon VPC, un sous-réseau au sein du VPC et une instance Amazon EC2. Le VPC est créé à l'aide d'une ressource [AWS::EC2::VPC](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-vpc.html). La plage d'adresses IP du VPC est définie dans le modèle plus large et est référencée par le paramètre `MyVPCCIDRRange`.

Un sous-réseau est créé au sein du VPC à l'aide d'une ressource [AWS::EC2::Subnet](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-subnet.html). Le sous-réseau est associé au VPC, qui est référencé comme `MyVPC`.

Une instance EC2 est lancée au sein du VPC et du sous-réseau à l'aide d'une ressource. [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html) 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. Le `ImageId` utilise un paramètre Systems Manager pour récupérer dynamiquement la dernière AMI Amazon Linux 2. 

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 VPC à l'aide de CloudFormation, crée AWS automatiquement des ressources par défaut au sein du VPC, y compris un groupe de sécurité par défaut. Toutefois, lorsque vous définissez un VPC dans un 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 CloudFormation.

#### JSON
<a name="quickref-ec2-example-15.json"></a>

```
"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": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}",
        "SecurityGroupIds": [
            {
                "Fn::GetAtt": [
                    "MyVPC",
                    "DefaultSecurityGroup"
                ]
            }
        ],
        "SubnetId": {
            "Ref": "MySubnet"
        }
    }
}
```

#### YAML
<a name="quickref-ec2-example-15.yaml"></a>

```
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: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}'
    SecurityGroupIds:
      - Fn::GetAtt:
          - MyVPC
          - DefaultSecurityGroup
    SubnetId:
      Ref: MySubnet
```

### Créer une instance Amazon EC2 avec un volume et un groupe de sécurité attachés
<a name="scenario-ec2-volumeattachment"></a>

L'extrait suivant crée une instance Amazon EC2 à l'aide d'[AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html)une ressource, qui est lancée à partir d'une AMI désignée. L'instance est associée à un groupe de sécurité qui autorise le trafic SSH entrant sur le port 22 à partir d'une adresse IP spécifiée, à l'aide d'une [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html)ressource. Il crée un volume Amazon EBS de 100 Go à l'aide d'une [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-volume.html)ressource. 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 d'es volumes Amazon EBS, consultez [Créer un volume Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-volume.html).

#### JSON
<a name="quickref-ec2-example-14.json"></a>

```
 1. "Ec2Instance": {
 2.     "Type": "AWS::EC2::Instance",
 3.     "Properties": {
 4.         "SecurityGroups": [
 5.             {
 6.                 "Ref": "InstanceSecurityGroup"
 7.             }
 8.         ],
 9.         "ImageId": "ami-1234567890abcdef0"
10.     }
11. },
12. "InstanceSecurityGroup": {
13.     "Type": "AWS::EC2::SecurityGroup",
14.     "Properties": {
15.         "GroupDescription": "Enable SSH access via port 22",
16.         "SecurityGroupIngress": [
17.             {
18.                 "IpProtocol": "tcp",
19.                 "FromPort": "22",
20.                 "ToPort": "22",
21.                 "CidrIp": "192.0.2.0/24"
22.             }
23.         ]
24.     }
25. },
26. "NewVolume": {
27.     "Type": "AWS::EC2::Volume",
28.     "Properties": {
29.         "Size": "100",
30.         "AvailabilityZone": {
31.             "Fn::GetAtt": [
32.                 "Ec2Instance",
33.                 "AvailabilityZone"
34.             ]
35.         }
36.     }
37. },
38. "MountPoint": {
39.     "Type": "AWS::EC2::VolumeAttachment",
40.     "Properties": {
41.         "InstanceId": {
42.             "Ref": "Ec2Instance"
43.         },
44.         "VolumeId": {
45.             "Ref": "NewVolume"
46.         },
47.         "Device": "/dev/sdh"
48.     }
49. }
```

#### YAML
<a name="quickref-ec2-example-14.yaml"></a>

```
 1. Ec2Instance:
 2.   Type: AWS::EC2::Instance
 3.   Properties:
 4.     SecurityGroups:
 5.       - !Ref InstanceSecurityGroup
 6.     ImageId: ami-1234567890abcdef0
 7. InstanceSecurityGroup:
 8.   Type: AWS::EC2::SecurityGroup
 9.   Properties:
10.     GroupDescription: Enable SSH access via port 22
11.     SecurityGroupIngress:
12.       - IpProtocol: tcp
13.         FromPort: 22
14.         ToPort: 22
15.         CidrIp: 192.0.2.0/24
16. NewVolume:
17.   Type: AWS::EC2::Volume
18.   Properties:
19.     Size: 100
20.     AvailabilityZone: !GetAtt [Ec2Instance, AvailabilityZone]
21. MountPoint:
22.   Type: AWS::EC2::VolumeAttachment
23.   Properties:
24.     InstanceId: !Ref Ec2Instance
25.     VolumeId: !Ref NewVolume
26.     Device: /dev/sdh
```

## Créer des groupes de sécurité avec des règles d'entrée
<a name="quickref-ec2-instances-ingress"></a>

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' CloudFormation.

**Topics**
+ [Créer un groupe de sécurité avec des règles d'entrée pour l'accès SSH et HTTP](#scenario-ec2-security-group-rule)
+ [Créer un groupe de sécurité avec des règles d'entrée pour l'accès HTTP et SSH à partir des plages d'adresses CIDR spécifiées](#scenario-ec2-security-group-two-ports)
+ [Créer des groupes de sécurité à référencement croisé avec des règles d'entrée](#scenario-ec2-security-group-ingress)

### Créer un groupe de sécurité avec des règles d'entrée pour l'accès SSH et HTTP
<a name="scenario-ec2-security-group-rule"></a>

L'extrait suivant décrit deux règles d'entrée de groupes de sécurité utilisant une ressource. [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html) La première règle d'entrée autorise l'accès SSH (port 22) à partir d'un groupe de sécurité existant nommé`MyAdminSecurityGroup`, qui appartient au AWS compte ayant le numéro de compte. `1111-2222-3333` 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 la section [Groupes de sécurité Amazon EC2 pour vos instances Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html) dans le *Guide de l’utilisateur Amazon EC2*.

#### JSON
<a name="quickref-ec2-example-10.json"></a>

```
 1. "SecurityGroup": {
 2.     "Type": "AWS::EC2::SecurityGroup",
 3.     "Properties": {
 4.         "GroupDescription": "Allow connections from specified source security group",
 5.         "SecurityGroupIngress": [
 6.             {
 7.                 "IpProtocol": "tcp",
 8.                 "FromPort": "22",
 9.                 "ToPort": "22",
10.                 "SourceSecurityGroupName": "MyAdminSecurityGroup",
11.                 "SourceSecurityGroupOwnerId": "1111-2222-3333"
12.             },
13.             {
14.                 "IpProtocol": "tcp",
15.                 "FromPort": "80",
16.                 "ToPort": "80",
17.                 "SourceSecurityGroupName": {
18.                     "Ref": "MySecurityGroupCreatedInCFNTemplate"
19.                 }
20.             }
21.         ]
22.     }
23. }
```

#### YAML
<a name="quickref-ec2-example-10.yaml"></a>

```
 1. SecurityGroup:
 2.   Type: AWS::EC2::SecurityGroup
 3.   Properties:
 4.     GroupDescription: Allow connections from specified source security group
 5.     SecurityGroupIngress:
 6.       - IpProtocol: tcp
 7.         FromPort: '22'
 8.         ToPort: '22'
 9.         SourceSecurityGroupName: MyAdminSecurityGroup
10.         SourceSecurityGroupOwnerId: '1111-2222-3333'
11.       - IpProtocol: tcp
12.         FromPort: '80'
13.         ToPort: '80'
14.         SourceSecurityGroupName:
15.           Ref: MySecurityGroupCreatedInCFNTemplate
```

### Créer un groupe de sécurité avec des règles d'entrée pour l'accès HTTP et SSH à partir des plages d'adresses CIDR spécifiées
<a name="scenario-ec2-security-group-two-ports"></a>

L'extrait suivant crée un groupe de sécurité pour une instance Amazon EC2 avec deux règles entrantes. Les règles entrantes autorisent le trafic TCP entrant sur les ports spécifiés à partir des plages d'adresses CIDR désignées. Une [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html)ressource est utilisée pour définir les règles. Vous devez spécifier un protocole pour chaque règle. Pour TCP, vous devez spécifier un port ou la plage de ports. Si vous ne spécifiez ni le groupe de sécurité source ni de plage d’adresses CIDR, la pile est lancée avec succès, mais la règle n’est pas appliquée au groupe de sécurité. 

Pour plus d’informations sur les groupes de sécurité, consultez la section [Groupes de sécurité Amazon EC2 pour vos instances Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html) dans le *Guide de l’utilisateur Amazon EC2*.

#### JSON
<a name="quickref-ec2-example-9.json"></a>

```
 1. "ServerSecurityGroup": {
 2.   "Type": "AWS::EC2::SecurityGroup",
 3.   "Properties": {
 4.     "GroupDescription": "Allow connections from specified CIDR ranges",
 5.     "SecurityGroupIngress": [
 6.       {
 7.         "IpProtocol": "tcp",
 8.         "FromPort": "80",
 9.         "ToPort": "80",
10.         "CidrIp": "192.0.2.0/24"
11.       },
12.       {
13.         "IpProtocol": "tcp",
14.         "FromPort": "22",
15.         "ToPort": "22",
16.         "CidrIp": "192.0.2.0/24"
17.       }
18.     ]
19.   }
20. }
```

#### YAML
<a name="quickref-ec2-example-9.yaml"></a>

```
 1. ServerSecurityGroup:
 2.   Type: AWS::EC2::SecurityGroup
 3.   Properties:
 4.     GroupDescription: Allow connections from specified CIDR ranges
 5.     SecurityGroupIngress:
 6.       - IpProtocol: tcp
 7.         FromPort: 80
 8.         ToPort: 80
 9.         CidrIp: 192.0.2.0/24
10.       - IpProtocol: tcp
11.         FromPort: 22
12.         ToPort: 22
13.         CidrIp: 192.0.2.0/24
```

### Créer des groupes de sécurité à référencement croisé avec des règles d'entrée
<a name="scenario-ec2-security-group-ingress"></a>

L'extrait de code suivant utilise la [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html)ressource pour créer deux groupes de sécurité Amazon EC2, et. `SGroup1` `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 ressource [AWS::EC2::SecurityGroupIngress](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroupingress.html). `SGroup1Ingress`établit une règle d'entrée `SGroup1` qui autorise le trafic TCP 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 trafic TCP entrant sur le port 80 en provenance du groupe de sécurité source,. `SGroup1` 

#### JSON
<a name="quickref-ec2-example-12.json"></a>

```
 1. "SGroup1": {
 2.     "Type": "AWS::EC2::SecurityGroup",
 3.     "Properties": {
 4.         "GroupDescription": "EC2 instance access"
 5.     }
 6. },
 7. "SGroup2": {
 8.     "Type": "AWS::EC2::SecurityGroup",
 9.     "Properties": {
10.         "GroupDescription": "EC2 instance access"
11.     }
12. },
13. "SGroup1Ingress": {
14.     "Type": "AWS::EC2::SecurityGroupIngress",
15.     "Properties": {
16.         "GroupName": {
17.             "Ref": "SGroup1"
18.         },
19.         "IpProtocol": "tcp",
20.         "ToPort": "80",
21.         "FromPort": "80",
22.         "SourceSecurityGroupName": {
23.             "Ref": "SGroup2"
24.         }
25.     }
26. },
27. "SGroup2Ingress": {
28.     "Type": "AWS::EC2::SecurityGroupIngress",
29.     "Properties": {
30.         "GroupName": {
31.             "Ref": "SGroup2"
32.         },
33.         "IpProtocol": "tcp",
34.         "ToPort": "80",
35.         "FromPort": "80",
36.         "SourceSecurityGroupName": {
37.             "Ref": "SGroup1"
38.         }
39.     }
40. }
```

#### YAML
<a name="quickref-ec2-example-12.yaml"></a>

```
 1. SGroup1:
 2.   Type: AWS::EC2::SecurityGroup
 3.   Properties:
 4.     GroupDescription: EC2 Instance access
 5. SGroup2:
 6.   Type: AWS::EC2::SecurityGroup
 7.   Properties:
 8.     GroupDescription: EC2 Instance access
 9. SGroup1Ingress:
10.   Type: AWS::EC2::SecurityGroupIngress
11.   Properties:
12.     GroupName: !Ref SGroup1
13.     IpProtocol: tcp
14.     ToPort: 80
15.     FromPort: 80
16.     SourceSecurityGroupName: !Ref SGroup2
17. SGroup2Ingress:
18.   Type: AWS::EC2::SecurityGroupIngress
19.   Properties:
20.     GroupName: !Ref SGroup2
21.     IpProtocol: tcp
22.     ToPort: 80
23.     FromPort: 80
24.     SourceSecurityGroupName: !Ref SGroup1
```

## Créer un Elastic Load Balancer avec une règle d'entrée de groupe de sécurité
<a name="scenario-ec2-security-group-elbingress"></a>

Le modèle suivant crée une [AWS::ElasticLoadBalancing::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancing-loadbalancer.html)ressource dans la zone de disponibilité spécifiée. La [AWS::ElasticLoadBalancing::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancing-loadbalancer.html)ressource est configurée pour écouter le trafic HTTP sur le port 80 et pour diriger les demandes vers les instances également sur le port 80. L'Elastic Load Balancer est chargé d'équilibrer la charge du trafic HTTP entrant entre les instances.

 En outre, ce modèle génère une [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html)ressource associée à l'équilibreur de charge. Ce groupe de sécurité est créé avec une règle d'entrée unique, décrite comme `ELB ingress group`, qui autorise le trafic TCP 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. `SourceSecurityGroupOwnerId` utilise `Fn::GetAtt` pour obtenir le `OwnerAlias` du groupe de sécurité source de l'équilibreur de charge. `SourceSecurityGroupName` utilise `Fn::Getatt` pour obtenir le `GroupName` du groupe de sécurité source de l'ELB. 

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

Pour plus d'informations sur l'équilibrage de charge, consultez [Guide de l'utilisateur Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/).

### JSON
<a name="quickref-ec2-example-11.json"></a>

```
{
    "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
<a name="quickref-ec2-example-11.yaml"></a>

```
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
```