Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
I seguenti frammenti mostrano come gestire i gruppi di sicurezza e AWS CloudFormation le EC2 istanze Amazon per controllare l'accesso alle tue risorse. AWS
Categorie dei frammenti
Associare un' EC2istanza Amazon a un gruppo di sicurezza
I seguenti frammenti di esempio mostrano come associare un' EC2 istanza Amazon a un gruppo di sicurezza Amazon VPC predefinito utilizzando. AWS CloudFormation
Frammenti di esempio
Associa un' EC2 istanza Amazon a un gruppo di sicurezza VPC predefinito
Il seguente frammento crea un Amazon VPC, una sottorete all'interno del VPC e un'istanza Amazon. EC2 Il VPC viene creato utilizzando una risorsa AWS::EC2: :VPC. L'intervallo di indirizzi IP per il VPC è definito nel modello più grande e viene richiamato dal parametro MyVPCCIDRRange
.
Una sottorete viene creata all'interno del VPC utilizzando una risorsa AWS:::EC2: Subnet. La sottorete è associata al VPC, a cui si fa riferimento come MyVPC
.
Un' EC2 istanza viene avviata all'interno del VPC e della sottorete utilizzando una risorsa. AWS::EC2::Instance Questa risorsa specifica l'Amazon Machine Image (AMI) da utilizzare per avviare l'istanza, la sottorete in cui verrà eseguita l'istanza e il gruppo di sicurezza da associare all'istanza. La Fn::FindInMap
funzione viene utilizzata per recuperare i valori dalla AWSRegionToAMI
mappatura definita nel modello per determinare la ImageId
risorsa. AWS::EC2::Instance
L'ID del gruppo di sicurezza viene ottenuto utilizzando la funzione Fn::GetAtt
, che recupera il gruppo di sicurezza predefinito dalla risorsa MyVPC
.
L'istanza viene inserita all'interno della risorsa MySubnet
definita nel frammento.
Quando crei un VPC utilizzando AWS CloudFormation, crea AWS automaticamente risorse predefinite all'interno del VPC, incluso un gruppo di sicurezza predefinito. Tuttavia, quando definisci un VPC all'interno di un AWS CloudFormation modello, potresti non avere accesso a queste risorse predefinite quando crei il modello. IDs Per accedere e utilizzare le risorse predefinite specificate nel modello, puoi utilizzare funzioni intrinseche come Fn::GetAtt
. Questa funzione consente di lavorare con le risorse predefinite create automaticamente da 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
Crea un' EC2 istanza Amazon con un volume e un gruppo di sicurezza collegati
Il seguente frammento crea un' EC2 istanza Amazon utilizzando una AWS::EC2::Instancerisorsa, che viene lanciata da un AMI designato. L'istanza è associata a un gruppo di sicurezza che consente il traffico SSH in entrata sulla porta 22 da un indirizzo IP specificato, utilizzando una risorsa. AWS::EC2::SecurityGroup Crea un volume Amazon EBS da 100 GB utilizzando una AWS::EC2::Volumerisorsa. Il volume viene creato nella stessa zona di disponibilità dell'istanza, come specificato dalla funzione GetAtt
, e viene montato sull'istanza sul dispositivo /dev/sdh
.
Per ulteriori informazioni sulla creazione di volumi Amazon EBS, consulta Creazione di un volume Amazon EBS.
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
Creazione di gruppi di sicurezza con regole di ingresso
I frammenti di esempio seguenti mostrano come configurare i gruppi di sicurezza con regole di ingresso specifiche utilizzando AWS CloudFormation.
Frammenti
Creazione di un gruppo di sicurezza con regole di ingresso per l'accesso SSH e HTTP
Il seguente frammento descrive due regole di ingresso per gruppi di sicurezza che utilizzano una risorsa. AWS::EC2::SecurityGroup La prima regola di ingresso consente l'accesso SSH (porta 22) da un gruppo di sicurezza esistente denominatoMyAdminSecurityGroup
, di proprietà dell'account con il numero di AWS account. 1111-2222-3333
La seconda regola di ingresso consente l'accesso HTTP (porta 80) da un gruppo di sicurezza diverso denominato MySecurityGroupCreatedInCFN
, creato nello stesso modello. La funzione Ref
viene utilizzata per fare riferimento al nome logico del gruppo di sicurezza creato nello stesso modello.
Nella prima regola di ingresso, è necessario aggiungere un valore per entrambe le proprietà SourceSecurityGroupName
e SourceSecurityGroupOwnerId
. Nella seconda regola di ingresso, MySecurityGroupCreatedInCFNTemplate
fa riferimento a un gruppo di sicurezza diverso, creato nello stesso modello. Verifica che il nome logico MySecurityGroupCreatedInCFNTemplate
corrisponda al nome logico effettivo della risorsa del gruppo di sicurezza specificata nel modello più grande.
Per ulteriori informazioni sui gruppi di sicurezza, consulta Gruppi EC2 di sicurezza Amazon per istanze Linux o Gruppi EC2 di sicurezza Amazon per istanze 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
Creazione di un gruppo di sicurezza con regole di ingresso per l'accesso HTTP e SSH da intervalli CIDR specificati
Il seguente frammento crea un gruppo di sicurezza per un' EC2 istanza Amazon con due regole in entrata. Le regole in entrata consentono il traffico TCP in ingresso sulle porte specificate dagli intervalli CIDR designati. Una AWS::EC2::SecurityGrouprisorsa viene utilizzata per specificare le regole. È possibile specificare un protocollo per ciascuna regola. Per TCP, è necessario anche specificare una porta o un intervallo di porte. Se non si specifica un gruppo di sicurezza di origine o un intervallo CIDR, lo stack verrà avviato correttamente, ma la regola non verrà applicata al gruppo di sicurezza.
Per ulteriori informazioni sui gruppi di sicurezza, consulta Gruppi EC2 di sicurezza Amazon per istanze Linux o Gruppi EC2 di sicurezza Amazon per istanze 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
Crea gruppi di sicurezza con riferimenti incrociati e regole di ingresso
Il seguente frammento utilizza la AWS::EC2::SecurityGrouprisorsa per creare due gruppi di EC2 sicurezza Amazon e. SGroup1
SGroup2
Le regole di ingresso che consentono la comunicazione tra i due gruppi di sicurezza vengono create utilizzando la AWS::EC2::SecurityGroup risorsa Ingress. SGroup1Ingress
stabilisce una regola di ingresso SGroup1
che consente il traffico TCP in entrata sulla porta 80 dal gruppo di sicurezza di origine,. SGroup2
SGroup2Ingress
stabilisce una regola di ingresso SGroup2
che consente il traffico TCP in entrata sulla porta 80 dal gruppo di sicurezza di origine,. 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
Creazione di un Elastic Load Balancer con una regola di ingresso al gruppo di sicurezza
Il modello seguente crea una AWS::ElasticLoadBalancing::LoadBalancerrisorsa nella zona di disponibilità specificata. La AWS::ElasticLoadBalancing::LoadBalancerrisorsa è configurata per ascoltare il traffico HTTP sulla porta 80 e indirizzare le richieste alle istanze anche sulla porta 80. Elastic Load Balancer è responsabile del bilanciamento del carico del traffico HTTP in entrata tra le istanze.
Inoltre, questo modello genera una AWS::EC2::SecurityGrouprisorsa associata al load balancer. Questo gruppo di sicurezza viene creato con un'unica regola di ingresso, descritta come ELB ingress group
, che consente il traffico TCP in entrata sulla porta 80. L'origine di questa regola di ingresso viene definita utilizzando la funzione Fn::GetAtt
per recuperare gli attributi dalla risorsa di bilanciamento del carico. SourceSecurityGroupOwnerId
utilizza Fn::GetAtt
per ottenere l'OwnerAlias
del gruppo di sicurezza di origine del sistema di bilanciamento del carico. SourceSecurityGroupName
utilizza Fn::Getatt
per ottenere il GroupName
del gruppo di sicurezza di origine dell'ELB.
Questa configurazione garantisce una comunicazione sicura tra l'ELB e le istanze.
Per ulteriori informazioni su Elastic Load Balancing, consulta la Guida per l'utente di 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