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.
Kategorien von Ausschnitten
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
Beispielausschnitte
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.
Ausschnitte
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 SGroup1Ingress
richtet eine Eingangsregel einSGroup1
, die eingehenden TCP Datenverkehr über Port 80 von der Quellsicherheitsgruppe zulässt,. SGroup2
SGroup2Ingress
richtet 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. SourceSecurityGroupOwnerId
verwendetFn::GetAtt
, um die Quell-Sicherheitsgruppe OwnerAlias
des Load Balancers abzurufen. SourceSecurityGroupName
verwendetFn::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