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.
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 Amazon VPC-Sicherheitsgruppe verknüpfen, indem Sie. AWS CloudFormation
Beispielausschnitte
Ordnen Sie eine EC2 Amazon-Instance einer Standard-VPC-Sicherheitsgruppe zu
Das folgende Snippet erstellt eine Amazon-VPC, ein Subnetz innerhalb der VPC und eine Amazon-Instance. EC2 Die VPC wird mithilfe einer AWS::EC2: :VPC-Ressource erstellt. Der IP-Adressbereich für die VPC wird in der größeren Vorlage definiert und durch den Parameter MyVPCCIDRRange
referenziert.
Ein Subnetz wird innerhalb der VPC mithilfe einer AWS:::EC2: Subnetzressource erstellt. Das Subnetz wird mit der VPC verknüpft, die als MyVPC
referenziert wird.
Eine EC2 Instance wird innerhalb der VPC und des Subnetzes mithilfe einer AWS::EC2::InstanceRessource 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 mit der Instance zu verknüpfende Sicherheitsgruppe. Die Fn::FindInMap
Funktion wird verwendet, um Werte aus dem in der Vorlage definierten AWSRegionToAMI
Mapping abzurufen und den Wert ImageId
für die AWS::EC2::InstanceRessource 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 mit erstellen AWS CloudFormation, erstellt AWS automatisch Standardressourcen innerhalb der VPC, einschließlich einer Standardsicherheitsgruppe. Wenn Sie jedoch eine VPC innerhalb einer AWS CloudFormation Vorlage 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::InstanceRessource, die von einem bestimmten AMI gestartet wird. Die Instance ist einer Sicherheitsgruppe zugeordnet, die eingehenden SSH-Verkehr über Port 22 von einer bestimmten IP-Adresse aus unter Verwendung einer Ressource zulässt. AWS::EC2::SecurityGroup Es erstellt mithilfe einer AWS::EC2::VolumeRessource ein 100-GB-Amazon-EBS-Volume. 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 Amazon-EBS-Volumes finden Sie unter Erstellen eines Amazon-EBS-Volumes.
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 einer Sicherheitsgruppe mit Regeln für eingehenden Datenverkehr für SSH- und HTTP-Zugriff
Der folgende Ausschnitt beschreibt zwei Regeln für den Zugriff auf Sicherheitsgruppen, die eine Ressource verwenden. AWS::EC2::SecurityGroup Die erste Eingangsregel ermöglicht den SSH-Zugriff (Port 22) von einer vorhandenen Sicherheitsgruppe mit dem NamenMyAdminSecurityGroup
, die dem AWS Konto mit der Kontonummer gehört. 1111-2222-3333
Die zweite Regel für eingehenden Datenverkehr erlaubt den HTTP-Zugriff (Port 80) aus einer anderen Sicherheitsgruppe namens MySecurityGroupCreatedInCFN
, 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 EC2 Amazon-Sicherheitsgruppen für Linux-Instances oder EC2 Amazon-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 einer Sicherheitsgruppe mit Regeln für eingehenden Datenverkehr für SSH- und HTTP-Zugriff aus angegebenen CIDR-Bereichen
Das folgende Snippet erstellt eine Sicherheitsgruppe für eine EC2 Amazon-Instance mit zwei Regeln für eingehenden Datenverkehr. Diese Regeln erlauben eingehenden TCP-Verkehr an den angegebenen Ports aus den festgelegten CIDR-Bereichen. Eine AWS::EC2::SecurityGroupRessource 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 Portbereich angeben. Wenn Sie weder eine Quellsicherheitsgruppe noch einen CIDR-Bereich angeben, wird der Stack zwar gestartet, die Regel aber nicht auf die Sicherheitsgruppe angewendet.
Weitere Informationen zu Sicherheitsgruppen finden Sie unter EC2 Amazon-Sicherheitsgruppen für Linux-Instances oder EC2 Amazon-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 AWS::EC2::SecurityGroupRessource, um zwei EC2 Amazon-Sicherheitsgruppen zu erstellen, undSGroup1
. SGroup2
Eingangsregeln, die die Kommunikation zwischen den beiden Sicherheitsgruppen ermöglichen, werden mithilfe der AWS::EC2::SecurityGroup Ingress-Ressource erstellt. SGroup1Ingress
richtet eine Eingangsregel einSGroup1
, die eingehenden TCP-Verkehr von der Quellsicherheitsgruppe auf Port 80 zulässt. SGroup2
SGroup2Ingress
richtet eine Eingangsregel einSGroup2
, die eingehenden TCP-Verkehr 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::LoadBalancerRessource in der angegebenen Availability Zone. Die AWS::ElasticLoadBalancing::LoadBalancerRessource ist so konfiguriert, dass sie auf Port 80 auf HTTP-Verkehr wartet und Anfragen an Instanzen auch an Port 80 weiterleitet. Der Elastic Load Balancer übernimmt den Lastenausgleich des eingehenden HTTP-Datenverkehrs unter den Instances.
Darüber hinaus generiert diese Vorlage eine AWS::EC2::SecurityGroupRessource, die dem Load Balancer zugeordnet ist. Diese Sicherheitsgruppe wird mit einer einzigen Regel für eingehenden Datenverkehr erstellt, die als ELB ingress group
bezeichnet wird. Sie erlaubt eingehenden TCP-Verkehr an Port 80. Die Quelle für diese Regel wird mithilfe der Funktion Fn::GetAtt
definiert, um Attribute aus der Load-Balancer-Ressource abzurufen. SourceSecurityGroupOwnerId
ruft mit Fn::GetAtt
den OwnerAlias
der Quellsicherheitsgruppe des Load Balancers ab. SourceSecurityGroupName
ruft mit Fn::Getatt
den GroupName
der Quellsicherheitsgruppe des ELB ab.
Diese Konfiguration gewährleistet eine sichere Kommunikation zwischen dem 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