Sicherheitsgruppen verwalten mit AWS CloudFormation - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Sicherheitsgruppen verwalten mit AWS CloudFormation

Die folgenden Ausschnitte zeigen, wie Sie AWS CloudFormation Sicherheitsgruppen und EC2 Amazon-Instances verwalten können, um den Zugriff auf Ihre AWS Ressourcen zu kontrollieren.

Ordnen Sie eine EC2 Amazon-Instance einer Sicherheitsgruppe zu

Die folgenden Beispielausschnitte zeigen, wie Sie eine EC2 Amazon-Instance mit einer standardmäßigen VPC Amazon-Sicherheitsgruppe verknüpfen, indem Sie. AWS CloudFormation

Ordnen Sie eine EC2 Amazon-Instance einer VPC Standardsicherheitsgruppe zu

Das folgende Snippet erstellt ein AmazonVPC, ein Subnetz innerhalb von und eine VPC Amazon-Instance. EC2 Das VPC wird mithilfe einer AWS:::EC2: Ressource erstellt. VPC Der IP-Adressbereich für VPC ist in der größeren Vorlage definiert und wird durch den MyVPCCIDRRange Parameter referenziert.

Ein Subnetz wird innerhalb der VPC Subnetzressource unter Verwendung einerAWS:EC2::: erstellt. Das Subnetz ist mit dem verknüpftVPC, auf das verwiesen wird als. MyVPC

Eine EC2 Instanz wird innerhalb des Subnetzes VPC und mithilfe einer AWS:EC2: :Instance-Ressource gestartet. Diese Ressource gibt das Amazon Machine Image (AMI) an, das zum Starten der Instance verwendet werden soll, das Subnetz, in dem die Instance ausgeführt wird, und die Sicherheitsgruppe, die der Instance zugeordnet werden soll. Die Fn::FindInMap Funktion wird verwendet, um Werte aus der in der Vorlage definierten AWSRegionToAMI Zuordnung abzurufen, um die Ressource ImageId AWS::EC2: :Instance zu ermitteln.

Die ID der Sicherheitsgruppe wird mit der Funktion Fn::GetAtt abgerufen, die die Standardsicherheitsgruppe aus der Ressource MyVPC abruft.

Die Instance wird in der im Ausschnitt definierten Ressource MySubnet platziert.

Wenn Sie eine VPC Verwendung erstellen AWS CloudFormation, AWS werden automatisch Standardressourcen innerhalb derVPC, einschließlich einer Standardsicherheitsgruppe, erstellt. Wenn Sie jedoch VPC innerhalb einer AWS CloudFormation Vorlage eine definieren, haben Sie beim Erstellen IDs der Vorlage möglicherweise keinen Zugriff auf diese Standardressourcen. Um auf die in der Vorlage angegebenen Standardressourcen zuzugreifen und diese zu nutzen, können Sie intrinsische Funktionen wie etwa Fn::GetAtt verwenden. Mithilfe dieser Funktion können Sie mit den Standardressourcen arbeiten, die von AWS CloudFormation automatisch erstellt werden.

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

Erstellen Sie eine EC2 Amazon-Instance mit einem angehängten Volume und einer Sicherheitsgruppe

Das folgende Snippet erstellt eine EC2 Amazon-Instance mithilfe einer AWS::EC2: :Instance-Ressource, die von einer bestimmten Instanz aus gestartet wird. AMI Die Instance ist einer Sicherheitsgruppe zugeordnet, die eingehenden SSH Datenverkehr auf Port 22 von einer bestimmten IP-Adresse aus unter Verwendung einer AWS:::EC2: -Ressource zulässt. SecurityGroup Es erstellt ein EBS 100-GB-Amazon-Volume mithilfe einer AWS::EC2: :Volume-Ressource. Das Volume wird in derselben Availability Zone wie die Instance erstellt (wie in der Funktion GetAtt angegeben) und in der Instance auf dem Gerät /dev/sdh gemountet.

Weitere Informationen zum Erstellen von EBS Amazon-Volumes finden Sie unter EBSAmazon-Volume erstellen.

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

Erstellen von Sicherheitsgruppen mit Regeln für eingehenden Datenverkehr

Die folgenden Beispielausschnitte zeigen, wie mit AWS CloudFormation Sicherheitsgruppen mit bestimmten Regeln für eingehenden Datenverkehr konfiguriert werden können.

Erstellen Sie eine Sicherheitsgruppe mit Eingangsregeln für SSH und HTTP Zugriff

Der folgende Ausschnitt beschreibt zwei Regeln für den Zugriff auf Sicherheitsgruppen mithilfe einer AWS:::: EC2 -Ressource. SecurityGroup Die erste Eingangsregel ermöglicht SSH (Port 22) den Zugriff von einer vorhandenen Sicherheitsgruppe mit dem NamenMyAdminSecurityGroup, die dem AWS Konto mit der Kontonummer gehört. 1111-2222-3333 Die zweite Eingangsregel ermöglicht HTTP (Port 80) den Zugriff von einer anderen Sicherheitsgruppe mit dem NamenMySecurityGroupCreatedInCFN, die in derselben Vorlage erstellt wurde. Mithilfe der Funktion Ref wird der logische Name der Sicherheitsgruppe referenziert, die in derselben Vorlage erstellt wurde.

In der ersten Regel für eingehenden Datenverkehr müssen Sie sowohl für die Eigenschaft SourceSecurityGroupName als auch für die Eigenschaft SourceSecurityGroupOwnerId einen Wert hinzufügen. In der zweiten Regel für eingehenden Datenverkehr referenziert MySecurityGroupCreatedInCFNTemplate eine andere Sicherheitsgruppe, die in derselben Vorlage erstellt wurde. Vergewissern Sie sich, dass der logische Name MySecurityGroupCreatedInCFNTemplate mit dem tatsächlichen logischen Namen der Sicherheitsgruppe übereinstimmt, die Sie in der größeren Vorlage angeben.

Weitere Informationen zu Sicherheitsgruppen finden Sie unter EC2Amazon-Sicherheitsgruppen für Linux-Instances oder EC2Amazon-Sicherheitsgruppen für Windows-Instances.

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

Erstellen Sie eine Sicherheitsgruppe mit Eingangsregeln für HTTP und SSH Zugriff aus bestimmten Bereichen CIDR

Das folgende Snippet erstellt eine Sicherheitsgruppe für eine EC2 Amazon-Instance mit zwei Regeln für eingehenden Datenverkehr. Die Regeln für eingehenden Datenverkehr ermöglichen eingehenden TCP Datenverkehr auf den angegebenen Ports aus den angegebenen Bereichen. CIDR Eine AWS::EC2: SecurityGroup -Ressource wird verwendet, um die Regeln zu spezifizieren. Für jede Regel müssen Sie ein Protokoll angeben. Für TCP müssen Sie einen Port oder einen Portbereich angeben. Wenn Sie weder eine Quellsicherheitsgruppe noch einen CIDR Bereich angeben, wird der Stack erfolgreich gestartet, aber die Regel wird nicht auf die Sicherheitsgruppe angewendet.

Weitere Informationen zu Sicherheitsgruppen finden Sie unter EC2Amazon-Sicherheitsgruppen für Linux-Instances oder EC2Amazon-Sicherheitsgruppen für Windows-Instances.

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

Erstellen von miteinander kommunizierenden Sicherheitsgruppen mit Regeln für eingehenden Datenverkehr

Das folgende Snippet verwendet die SecurityGroup Ressource AWS::EC2:, um zwei EC2 Amazon-Sicherheitsgruppen zu erstellen, undSGroup1. SGroup2 Eingangsregeln, die die Kommunikation zwischen den beiden Sicherheitsgruppen ermöglichen, werden mithilfe der Ressource AWS::EC2: erstellt. SecurityGroupIngress SGroup1Ingressrichtet eine Eingangsregel einSGroup1, die eingehenden TCP Datenverkehr über Port 80 von der Quellsicherheitsgruppe zulässt,. SGroup2 SGroup2Ingressrichtet eine Eingangsregel einSGroup2, die eingehenden TCP Datenverkehr auf Port 80 von der Quellsicherheitsgruppe zulässt,. 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

Erstellen eines Elastic Load Balancers mit einer Regel für eingehenden Datenverkehr für eine Sicherheitsgruppe

Die folgende Vorlage erstellt eine AWS:::ElasticLoadBalancing: LoadBalancer Ressource in der angegebenen Availability Zone. Die AWS::ElasticLoadBalancing: LoadBalancer Ressource ist so konfiguriert, dass sie auf Port 80 auf HTTP Traffic wartet und Anfragen an Instances weiterleitet, ebenfalls auf Port 80. Der Elastic Load Balancer ist für den Lastenausgleich des eingehenden HTTP Datenverkehrs zwischen den Instances verantwortlich.

Darüber hinaus generiert dieses Template eine AWS:::EC2: SecurityGroup -Ressource, die dem Load Balancer zugeordnet ist. Diese Sicherheitsgruppe wird mit einer einzigen Eingangsregel erstellt, die als beschrieben wird ELB ingress group und eingehenden TCP Datenverkehr auf Port 80 zulässt. Die Quelle für diese Eingangsregel wird mithilfe der Fn::GetAtt Funktion zum Abrufen von Attributen aus der Load Balancer-Ressource definiert. SourceSecurityGroupOwnerIdverwendetFn::GetAtt, um die Quell-Sicherheitsgruppe OwnerAlias des Load Balancers abzurufen. SourceSecurityGroupNameverwendetFn::Getatt, um die GroupName Quell-Sicherheitsgruppe von abzurufen. ELB

Dieses Setup gewährleistet eine sichere Kommunikation zwischen den ELB und den Instances.

Weitere Informationen zu Elastic Load Balancing finden Sie im Elastic Load Balancing-Entwicklerhandbuch.

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