

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kelola grup keamanan dengan CloudFormation
<a name="quickref-ec2-sg"></a>

Cuplikan berikut menunjukkan cara menggunakan CloudFormation untuk mengelola grup keamanan dan instans Amazon EC2 untuk mengontrol akses ke sumber daya Anda. AWS 

**Topics**
+ [Kaitkan instans Amazon EC2 dengan grup keamanan](#quickref-ec2-instances-associate-security-group)
+ [Buat grup keamanan dengan aturan masuk](#quickref-ec2-instances-ingress)
+ [Buat Elastic Load Balancer dengan aturan masuknya grup keamanan](#scenario-ec2-security-group-elbingress)

## Kaitkan instans Amazon EC2 dengan grup keamanan
<a name="quickref-ec2-instances-associate-security-group"></a>

Contoh cuplikan berikut menunjukkan cara mengaitkan instans Amazon EC2 dengan grup keamanan Amazon VPC default yang digunakan. CloudFormation

**Topics**
+ [Kaitkan instans Amazon EC2 dengan grup keamanan VPC default](#using-cfn-getatt-default-values)
+ [Membuat instans Amazon EC2 dengan volume dan grup keamanan terlampir](#scenario-ec2-volumeattachment)

### Kaitkan instans Amazon EC2 dengan grup keamanan VPC default
<a name="using-cfn-getatt-default-values"></a>

Cuplikan berikut membuat Amazon VPC, subnet dalam VPC, dan instans Amazon EC2. VPC dibuat menggunakan sumber daya [AWS: :EC2: :VPC](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-vpc.html). Rentang alamat IP untuk VPC didefinisikan dalam template yang lebih besar dan direferensikan oleh parameter. `MyVPCCIDRRange`

Subnet dibuat dalam VPC menggunakan sumber daya [AWS: :EC2::](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-subnet.html) Subnet. Subnet dikaitkan dengan VPC, yang direferensikan sebagai. `MyVPC`

Instans EC2 diluncurkan dalam VPC dan subnet menggunakan sumber daya. [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html) Resource ini menentukan Amazon Machine Image (AMI) yang akan digunakan untuk meluncurkan instance, subnet tempat instance akan berjalan, dan grup keamanan yang akan diasosiasikan dengan instance. `ImageId`Menggunakan parameter Systems Manager untuk secara dinamis mengambil Amazon Linux 2 AMI terbaru. 

ID grup keamanan diperoleh dengan menggunakan `Fn::GetAtt` fungsi, yang mengambil grup keamanan default dari `MyVPC` sumber daya. 

Instance ditempatkan dalam `MySubnet` sumber daya yang ditentukan dalam cuplikan. 

Saat Anda membuat VPC menggunakan CloudFormation, AWS secara otomatis membuat sumber daya default dalam VPC, termasuk grup keamanan default. Namun, ketika Anda mendefinisikan VPC dalam CloudFormation template, Anda mungkin tidak memiliki akses ke sumber daya default ini saat Anda membuat template. IDs Untuk mengakses dan menggunakan sumber daya default yang ditentukan dalam template, Anda dapat menggunakan fungsi intrinsik seperti. `Fn::GetAtt` Fungsi ini memungkinkan Anda untuk bekerja dengan sumber daya default yang dibuat secara otomatis oleh CloudFormation.

#### JSON
<a name="quickref-ec2-example-15.json"></a>

```
"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": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}",
        "SecurityGroupIds": [
            {
                "Fn::GetAtt": [
                    "MyVPC",
                    "DefaultSecurityGroup"
                ]
            }
        ],
        "SubnetId": {
            "Ref": "MySubnet"
        }
    }
}
```

#### YAML
<a name="quickref-ec2-example-15.yaml"></a>

```
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: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}'
    SecurityGroupIds:
      - Fn::GetAtt:
          - MyVPC
          - DefaultSecurityGroup
    SubnetId:
      Ref: MySubnet
```

### Membuat instans Amazon EC2 dengan volume dan grup keamanan terlampir
<a name="scenario-ec2-volumeattachment"></a>

Cuplikan berikut membuat instans Amazon EC2 menggunakan sumber daya, [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html)yang diluncurkan dari AMI yang ditunjuk. Instance ini dikaitkan dengan grup keamanan yang memungkinkan lalu lintas SSH masuk pada port 22 dari alamat IP tertentu, menggunakan sumber daya. [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html) Ini menciptakan volume Amazon EBS 100 GB menggunakan [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-volume.html)sumber daya. Volume dibuat di zona ketersediaan yang sama dengan instance, seperti yang ditentukan oleh `GetAtt` fungsi, dan dipasang ke instance di `/dev/sdh` perangkat.

Untuk informasi selengkapnya tentang membuat volume Amazon EBS, lihat [Membuat volume Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-volume.html).

#### JSON
<a name="quickref-ec2-example-14.json"></a>

```
 1. "Ec2Instance": {
 2.     "Type": "AWS::EC2::Instance",
 3.     "Properties": {
 4.         "SecurityGroups": [
 5.             {
 6.                 "Ref": "InstanceSecurityGroup"
 7.             }
 8.         ],
 9.         "ImageId": "ami-1234567890abcdef0"
10.     }
11. },
12. "InstanceSecurityGroup": {
13.     "Type": "AWS::EC2::SecurityGroup",
14.     "Properties": {
15.         "GroupDescription": "Enable SSH access via port 22",
16.         "SecurityGroupIngress": [
17.             {
18.                 "IpProtocol": "tcp",
19.                 "FromPort": "22",
20.                 "ToPort": "22",
21.                 "CidrIp": "192.0.2.0/24"
22.             }
23.         ]
24.     }
25. },
26. "NewVolume": {
27.     "Type": "AWS::EC2::Volume",
28.     "Properties": {
29.         "Size": "100",
30.         "AvailabilityZone": {
31.             "Fn::GetAtt": [
32.                 "Ec2Instance",
33.                 "AvailabilityZone"
34.             ]
35.         }
36.     }
37. },
38. "MountPoint": {
39.     "Type": "AWS::EC2::VolumeAttachment",
40.     "Properties": {
41.         "InstanceId": {
42.             "Ref": "Ec2Instance"
43.         },
44.         "VolumeId": {
45.             "Ref": "NewVolume"
46.         },
47.         "Device": "/dev/sdh"
48.     }
49. }
```

#### YAML
<a name="quickref-ec2-example-14.yaml"></a>

```
 1. Ec2Instance:
 2.   Type: AWS::EC2::Instance
 3.   Properties:
 4.     SecurityGroups:
 5.       - !Ref InstanceSecurityGroup
 6.     ImageId: ami-1234567890abcdef0
 7. InstanceSecurityGroup:
 8.   Type: AWS::EC2::SecurityGroup
 9.   Properties:
10.     GroupDescription: Enable SSH access via port 22
11.     SecurityGroupIngress:
12.       - IpProtocol: tcp
13.         FromPort: 22
14.         ToPort: 22
15.         CidrIp: 192.0.2.0/24
16. NewVolume:
17.   Type: AWS::EC2::Volume
18.   Properties:
19.     Size: 100
20.     AvailabilityZone: !GetAtt [Ec2Instance, AvailabilityZone]
21. MountPoint:
22.   Type: AWS::EC2::VolumeAttachment
23.   Properties:
24.     InstanceId: !Ref Ec2Instance
25.     VolumeId: !Ref NewVolume
26.     Device: /dev/sdh
```

## Buat grup keamanan dengan aturan masuk
<a name="quickref-ec2-instances-ingress"></a>

Contoh cuplikan berikut menunjukkan cara mengkonfigurasi grup keamanan dengan aturan masuk tertentu menggunakan. CloudFormation

**Topics**
+ [Buat grup keamanan dengan aturan masuk untuk akses SSH dan HTTP](#scenario-ec2-security-group-rule)
+ [Buat grup keamanan dengan aturan ingress untuk akses HTTP dan SSH dari rentang CIDR yang ditentukan](#scenario-ec2-security-group-two-ports)
+ [Buat grup keamanan referensi silang dengan aturan masuk](#scenario-ec2-security-group-ingress)

### Buat grup keamanan dengan aturan masuk untuk akses SSH dan HTTP
<a name="scenario-ec2-security-group-rule"></a>

Cuplikan berikut menjelaskan dua aturan masuknya grup keamanan menggunakan sumber daya. [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html) Aturan masuk pertama memungkinkan akses SSH (port 22) dari grup keamanan yang ada bernama`MyAdminSecurityGroup`, yang dimiliki oleh AWS akun dengan nomor akun. `1111-2222-3333` Aturan ingress kedua memungkinkan akses HTTP (port 80) dari grup keamanan yang berbeda bernama`MySecurityGroupCreatedInCFN`, yang dibuat dalam template yang sama. `Ref`Fungsi ini digunakan untuk referensi nama logis dari grup keamanan yang dibuat dalam template yang sama. 

Dalam aturan ingress pertama, Anda harus menambahkan nilai untuk `SourceSecurityGroupOwnerId` properti `SourceSecurityGroupName` dan properti. Dalam aturan ingress kedua, `MySecurityGroupCreatedInCFNTemplate` referensi grup keamanan yang berbeda, yang dibuat dalam template yang sama. Verifikasi bahwa nama logis `MySecurityGroupCreatedInCFNTemplate` cocok dengan nama logis sebenarnya dari sumber daya grup keamanan yang Anda tentukan dalam templat yang lebih besar. 

Untuk informasi selengkapnya tentang grup keamanan, lihat [grup keamanan Amazon EC2 untuk instans Amazon EC2 Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html) di Panduan Pengguna Amazon *EC2*.

#### JSON
<a name="quickref-ec2-example-10.json"></a>

```
 1. "SecurityGroup": {
 2.     "Type": "AWS::EC2::SecurityGroup",
 3.     "Properties": {
 4.         "GroupDescription": "Allow connections from specified source security group",
 5.         "SecurityGroupIngress": [
 6.             {
 7.                 "IpProtocol": "tcp",
 8.                 "FromPort": "22",
 9.                 "ToPort": "22",
10.                 "SourceSecurityGroupName": "MyAdminSecurityGroup",
11.                 "SourceSecurityGroupOwnerId": "1111-2222-3333"
12.             },
13.             {
14.                 "IpProtocol": "tcp",
15.                 "FromPort": "80",
16.                 "ToPort": "80",
17.                 "SourceSecurityGroupName": {
18.                     "Ref": "MySecurityGroupCreatedInCFNTemplate"
19.                 }
20.             }
21.         ]
22.     }
23. }
```

#### YAML
<a name="quickref-ec2-example-10.yaml"></a>

```
 1. SecurityGroup:
 2.   Type: AWS::EC2::SecurityGroup
 3.   Properties:
 4.     GroupDescription: Allow connections from specified source security group
 5.     SecurityGroupIngress:
 6.       - IpProtocol: tcp
 7.         FromPort: '22'
 8.         ToPort: '22'
 9.         SourceSecurityGroupName: MyAdminSecurityGroup
10.         SourceSecurityGroupOwnerId: '1111-2222-3333'
11.       - IpProtocol: tcp
12.         FromPort: '80'
13.         ToPort: '80'
14.         SourceSecurityGroupName:
15.           Ref: MySecurityGroupCreatedInCFNTemplate
```

### Buat grup keamanan dengan aturan ingress untuk akses HTTP dan SSH dari rentang CIDR yang ditentukan
<a name="scenario-ec2-security-group-two-ports"></a>

Cuplikan berikut membuat grup keamanan untuk instans Amazon EC2 dengan dua aturan masuk. Aturan masuk memungkinkan lalu lintas TCP masuk pada port yang ditentukan dari rentang CIDR yang ditentukan. [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html)Sumber daya digunakan untuk menentukan aturan. Anda harus menentukan protokol untuk setiap aturan. Untuk TCP, Anda harus menentukan port atau rentang port. Jika Anda tidak menentukan grup keamanan sumber atau rentang CIDR, tumpukan akan berhasil diluncurkan, tetapi aturan tidak akan diterapkan ke grup keamanan. 

Untuk informasi selengkapnya tentang grup keamanan, lihat [grup keamanan Amazon EC2 untuk instans Amazon EC2 Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html) di Panduan Pengguna Amazon *EC2*.

#### JSON
<a name="quickref-ec2-example-9.json"></a>

```
 1. "ServerSecurityGroup": {
 2.   "Type": "AWS::EC2::SecurityGroup",
 3.   "Properties": {
 4.     "GroupDescription": "Allow connections from specified CIDR ranges",
 5.     "SecurityGroupIngress": [
 6.       {
 7.         "IpProtocol": "tcp",
 8.         "FromPort": "80",
 9.         "ToPort": "80",
10.         "CidrIp": "192.0.2.0/24"
11.       },
12.       {
13.         "IpProtocol": "tcp",
14.         "FromPort": "22",
15.         "ToPort": "22",
16.         "CidrIp": "192.0.2.0/24"
17.       }
18.     ]
19.   }
20. }
```

#### YAML
<a name="quickref-ec2-example-9.yaml"></a>

```
 1. ServerSecurityGroup:
 2.   Type: AWS::EC2::SecurityGroup
 3.   Properties:
 4.     GroupDescription: Allow connections from specified CIDR ranges
 5.     SecurityGroupIngress:
 6.       - IpProtocol: tcp
 7.         FromPort: 80
 8.         ToPort: 80
 9.         CidrIp: 192.0.2.0/24
10.       - IpProtocol: tcp
11.         FromPort: 22
12.         ToPort: 22
13.         CidrIp: 192.0.2.0/24
```

### Buat grup keamanan referensi silang dengan aturan masuk
<a name="scenario-ec2-security-group-ingress"></a>

Cuplikan berikut menggunakan [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html)sumber daya untuk membuat dua grup keamanan Amazon EC2, dan. `SGroup1` `SGroup2` Aturan masuk yang memungkinkan komunikasi antara dua kelompok keamanan dibuat dengan menggunakan sumber daya [AWS::EC2::SecurityGroupIngress](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroupingress.html). `SGroup1Ingress`menetapkan aturan ingress untuk `SGroup1` yang memungkinkan lalu lintas TCP masuk pada port 80 dari grup keamanan sumber,. `SGroup2` `SGroup2Ingress`menetapkan aturan ingress untuk `SGroup2` yang memungkinkan lalu lintas TCP masuk pada port 80 dari grup keamanan sumber,. `SGroup1` 

#### JSON
<a name="quickref-ec2-example-12.json"></a>

```
 1. "SGroup1": {
 2.     "Type": "AWS::EC2::SecurityGroup",
 3.     "Properties": {
 4.         "GroupDescription": "EC2 instance access"
 5.     }
 6. },
 7. "SGroup2": {
 8.     "Type": "AWS::EC2::SecurityGroup",
 9.     "Properties": {
10.         "GroupDescription": "EC2 instance access"
11.     }
12. },
13. "SGroup1Ingress": {
14.     "Type": "AWS::EC2::SecurityGroupIngress",
15.     "Properties": {
16.         "GroupName": {
17.             "Ref": "SGroup1"
18.         },
19.         "IpProtocol": "tcp",
20.         "ToPort": "80",
21.         "FromPort": "80",
22.         "SourceSecurityGroupName": {
23.             "Ref": "SGroup2"
24.         }
25.     }
26. },
27. "SGroup2Ingress": {
28.     "Type": "AWS::EC2::SecurityGroupIngress",
29.     "Properties": {
30.         "GroupName": {
31.             "Ref": "SGroup2"
32.         },
33.         "IpProtocol": "tcp",
34.         "ToPort": "80",
35.         "FromPort": "80",
36.         "SourceSecurityGroupName": {
37.             "Ref": "SGroup1"
38.         }
39.     }
40. }
```

#### YAML
<a name="quickref-ec2-example-12.yaml"></a>

```
 1. SGroup1:
 2.   Type: AWS::EC2::SecurityGroup
 3.   Properties:
 4.     GroupDescription: EC2 Instance access
 5. SGroup2:
 6.   Type: AWS::EC2::SecurityGroup
 7.   Properties:
 8.     GroupDescription: EC2 Instance access
 9. SGroup1Ingress:
10.   Type: AWS::EC2::SecurityGroupIngress
11.   Properties:
12.     GroupName: !Ref SGroup1
13.     IpProtocol: tcp
14.     ToPort: 80
15.     FromPort: 80
16.     SourceSecurityGroupName: !Ref SGroup2
17. SGroup2Ingress:
18.   Type: AWS::EC2::SecurityGroupIngress
19.   Properties:
20.     GroupName: !Ref SGroup2
21.     IpProtocol: tcp
22.     ToPort: 80
23.     FromPort: 80
24.     SourceSecurityGroupName: !Ref SGroup1
```

## Buat Elastic Load Balancer dengan aturan masuknya grup keamanan
<a name="scenario-ec2-security-group-elbingress"></a>

Template berikut membuat [AWS::ElasticLoadBalancing::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancing-loadbalancer.html)sumber daya di zona ketersediaan yang ditentukan. [AWS::ElasticLoadBalancing::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancing-loadbalancer.html)Sumber daya dikonfigurasi untuk mendengarkan pada port 80 untuk lalu lintas HTTP dan permintaan langsung ke instance juga pada port 80. Elastic Load Balancer bertanggung jawab untuk menyeimbangkan beban lalu lintas HTTP yang masuk di antara instans.

 Selain itu, template ini menghasilkan [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html)sumber daya yang terkait dengan penyeimbang beban. Grup keamanan ini dibuat dengan aturan masuk tunggal, digambarkan sebagai`ELB ingress group`, yang memungkinkan lalu lintas TCP masuk pada port 80. Sumber untuk aturan ingress ini didefinisikan menggunakan `Fn::GetAtt` fucntion untuk mengambil atribut dari sumber daya penyeimbang beban. `SourceSecurityGroupOwnerId`digunakan `Fn::GetAtt` untuk mendapatkan kelompok keamanan sumber dari penyeimbang beban. `OwnerAlias` `SourceSecurityGroupName`digunakan `Fn::Getatt` untuk mendapatkan kelompok keamanan sumber ELB. `GroupName` 

Pengaturan ini memastikan komunikasi yang aman antara ELB dan instans. 

Untuk informasi selengkapnya tentang load balancing, lihat Panduan Pengguna [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/).

### JSON
<a name="quickref-ec2-example-11.json"></a>

```
{
    "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
<a name="quickref-ec2-example-11.yaml"></a>

```
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
```