

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

# Blokir akses publik ke Amazon RDS dengan menggunakan Cloud Custodian
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian"></a>

*abhay kumar dan Dwarika Patra, Amazon Web Services*

## Ringkasan
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-summary"></a>

Banyak organisasi menjalankan beban kerja dan layanan mereka di beberapa vendor cloud. Dalam lingkungan cloud hybrid ini, infrastruktur cloud membutuhkan tata kelola cloud yang ketat, selain keamanan yang disediakan oleh penyedia cloud individu. Database cloud seperti Amazon Relational Database Service (Amazon RDS) adalah salah satu layanan penting yang harus dipantau untuk setiap kerentanan akses dan izin. Meskipun Anda dapat membatasi akses ke database Amazon RDS dengan mengonfigurasi grup keamanan, Anda dapat menambahkan lapisan perlindungan kedua untuk melarang tindakan seperti akses publik. Memblokir akses publik membantu Anda dengan Peraturan Perlindungan Data Umum (GDPR), Undang-Undang Portabilitas dan Akuntabilitas Asuransi Kesehatan (HIPAA), Institut Standar dan Teknologi Nasional (NIST), dan Standar Keamanan Data Industri Kartu Pembayaran (PCI DSS).

Cloud Custodian adalah mesin aturan sumber terbuka yang dapat Anda gunakan untuk memberlakukan pembatasan akses untuk sumber daya Amazon Web Services (AWS) seperti Amazon RDS. Dengan Cloud Custodian, Anda dapat menetapkan aturan yang memvalidasi lingkungan berdasarkan standar keamanan dan kepatuhan yang ditetapkan. Anda dapat menggunakan Cloud Custodian untuk mengelola lingkungan cloud Anda dengan membantu memastikan kepatuhan terhadap kebijakan keamanan, kebijakan tag, dan pengumpulan sampah sumber daya dan manajemen biaya yang tidak digunakan. Dengan Cloud Custodian, Anda dapat menggunakan satu antarmuka untuk menerapkan tata kelola di lingkungan cloud hybrid. Misalnya, Anda dapat menggunakan antarmuka Cloud Custodian untuk berinteraksi dengan AWS Microsoft Azure, mengurangi upaya bekerja dengan mekanisme seperti AWS Config, grup AWS keamanan, dan kebijakan Azure.

Pola ini memberikan instruksi untuk menggunakan Cloud Custodian on AWS untuk memberlakukan pembatasan aksesibilitas publik pada instans Amazon RDS.

## Prasyarat dan batasan
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS
+ [Sebuah key pair](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds-create)
+ AWS Lambda dipasang

## Arsitektur
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-architecture"></a>

Diagram berikut menunjukkan Cloud Custodian yang menerapkan kebijakan ke AWS Lambda, AWS CloudTrail memulai `CreateDBInstance` acara, dan setelan fungsi Lambda ke `PubliclyAccessible` false di Amazon RDS.

![Menggunakan Cloud Custodian di AWS untuk membatasi akses publik ke instans Amazon RDS.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/90f9537e-9365-4da2-8a28-da0ff374743c/images/6d04ca3b-6aa4-4c62-ade9-8b7474928c5e.png)


## Alat
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-tools"></a>

**Layanan AWS**
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)membantu Anda mengaudit tata kelola, kepatuhan, dan risiko operasional Anda Akun AWS.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) adalah alat sumber terbuka yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
+ [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)) membantu Anda menyiapkan, mengoperasikan, dan menskalakan database relasional di. AWS Cloud

**Alat lainnya**
+ [Cloud Custodian](https://cloudcustodian.io/) menyatukan alat dan skrip yang digunakan banyak organisasi untuk mengelola akun cloud publik mereka menjadi satu alat open source. Ini menggunakan mesin aturan stateless untuk definisi dan penegakan kebijakan, dengan metrik, output terstruktur, dan pelaporan terperinci untuk infrastruktur cloud. Ini terintegrasi erat dengan runtime tanpa server untuk memberikan remediasi dan respons waktu nyata dengan overhead operasional yang rendah.

## Epik
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-epics"></a>

### Mengatur AWS CLI
<a name="set-up-the-cli"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Instal AWS CLI. | Untuk menginstal AWS CLI, ikuti instruksi dalam [AWS dokumentasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html). | Administrator AWS | 
| Siapkan AWS kredensil. | Konfigurasikan pengaturan yang AWS CLI digunakan untuk berinteraksi AWS, termasuk Wilayah AWS dan format output yang ingin Anda gunakan.<pre>$>aws configure<br />AWS Access Key ID [None]: <your_access_key_id><br />AWS Secret Access Key [None]: <your_secret_access_key><br />Default region name [None]:<br />Default output format [None]:</pre><br />Lihat informasi yang lebih lengkap dalam [dokumentasi AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). | Administrator AWS | 
| Buat peran IAM. | Untuk membuat peran IAM dengan peran eksekusi Lambda, jalankan perintah berikut.<pre>aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}</pre> | AWS DevOps | 

### Siapkan Cloud Custodian
<a name="set-up-cloud-custodian"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Instal Cloud Custodian. | Untuk menginstal Cloud Custodian untuk sistem operasi dan lingkungan Anda, ikuti petunjuk dalam dokumentasi [Cloud Custodian](https://cloudcustodian.io/docs/quickstart/index.html#install-cc). | DevOps insinyur | 
| Periksa skema Cloud Custodian. | Untuk melihat daftar lengkap sumber daya Amazon RDS yang dapat digunakan untuk menjalankan kebijakan, gunakan perintah berikut.<pre>custodian schema aws.rds</pre> | DevOps insinyur | 
| Buat kebijakan Cloud Custodian. | Simpan kode yang ada di bawah *file kebijakan Cloud Custodian* di bagian [Informasi tambahan](#block-public-access-to-amazon-rds-by-using-cloud-custodian-additional) menggunakan ekstensi YAMM. | DevOps insinyur | 
| Tentukan tindakan Cloud Custodian untuk mengubah flag yang dapat diakses publik. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/block-public-access-to-amazon-rds-by-using-cloud-custodian.html) | DevOps insinyur | 
| Lakukan lari kering. | (Opsional) Untuk memeriksa sumber daya mana yang diidentifikasi oleh kebijakan tanpa menjalankan tindakan apa pun pada sumber daya, gunakan perintah berikut.<pre>custodian run -dryrun <policy_name>.yaml -s <output_directory></pre> | DevOps insinyur | 

### Terapkan kebijakan
<a name="deploy-the-policy"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Terapkan kebijakan dengan menggunakan Lambda. | Untuk membuat fungsi Lambda yang akan menjalankan kebijakan, gunakan perintah berikut.<pre>custodian run -s policy.yaml</pre><br />Kebijakan ini kemudian akan diprakarsai oleh AWS CloudTrail `CreateDBInstance` acara tersebut.<br />Akibatnya, AWS Lambda akan mengatur flag yang dapat diakses publik `false` untuk instance yang sesuai dengan kriteria. | DevOps insinyur | 

## Sumber daya terkait
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-resources"></a>
+ [AWS Lambda situs web](https://aws.amazon.com/lambda/)
+ [Situs Amazon RDS](https://aws.amazon.com/rds/)
+ [Dokumentasi Cloud Custodian](https://cloudcustodian.io/docs/quickstart/index.html)

## Informasi tambahan
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-additional"></a>

**File YAMM kebijakan Cloud Custodian**

```
policies:
  - name: "block-public-access"
    resource: rds
    description: |
      This Enforcement blocks public access for RDS instances.
    mode:
      type: cloudtrail
      events:
        - event: CreateDBInstance # Create RDS instance cloudtrail event
          source: rds.amazonaws.com
          ids: requestParameters.dBInstanceIdentifier
      role: arn:aws:iam::1234567890:role/Custodian-compliance-role
    filters:
      - type: event
        key: 'detail.requestParameters.publiclyAccessible'
        value: true
    actions:
      - type: set-public-access
        state: false
```

**file rds.py sumber daya c7n**

```
@actions.register('set-public-access')
 class RDSSetPublicAvailability(BaseAction):
 
     schema = type_schema(
         "set-public-access",
         state={'type': 'boolean'})
     permissions = ('rds:ModifyDBInstance',)
 
     def set_accessibility(self, r):
         client = local_session(self.manager.session_factory).client('rds')
         waiter = client.get_waiter('db_instance_available')
         waiter.wait(DBInstanceIdentifier=r['DBInstanceIdentifier'])
         client.modify_db_instance(
             DBInstanceIdentifier=r['DBInstanceIdentifier'],
             PubliclyAccessible=self.data.get('state', False))
 
 
     def process(self, rds):
         with self.executor_factory(max_workers=2) as w:
             futures = {w.submit(self.set_accessibility, r): r for r in rds}
             for f in as_completed(futures):
                 if f.exception():
                     self.log.error(
                         "Exception setting public access on %s  \n %s",
                         futures[f]['DBInstanceIdentifier'], f.exception())
         return rds
```

**Integrasi CSPM Security Hub**

Cloud Custodian dapat diintegrasikan [AWS Security Hub CSPM](https://aws.amazon.com/security-hub/)untuk mengirim temuan keamanan dan mencoba tindakan remediasi. Untuk informasi selengkapnya, lihat [Mengumumkan Integrasi Cloud Custodian](https://aws.amazon.com/blogs/opensource/announcing-cloud-custodian-integration-aws-security-hub/) dengan. AWS Security Hub CSPM