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.
Catégories d'extraits
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
Exemples d'extraits
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.
Extraits
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. SourceSecurityGroupOwnerId
utilise Fn::GetAtt
pour obtenir le groupe OwnerAlias
de sécurité source de l'équilibreur de charge. SourceSecurityGroupName
utilise 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