Blokir akses publik ke Amazon RDS dengan menggunakan Cloud Custodian - AWS Prescriptive Guidance

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

abhay kumar dan Dwarika Patra, Amazon Web Services

Ringkasan

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

Prasyarat

Arsitektur

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.

Alat

Layanan AWS

  • AWS CloudTrailmembantu Anda mengaudit tata kelola, kepatuhan, dan risiko operasional Anda Akun AWS.

  • AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Lambdaadalah 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) membantu Anda menyiapkan, mengoperasikan, dan menskalakan database relasional di. AWS Cloud

Alat-alat lainnya

  • Cloud Custodian 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

TugasDeskripsiKeterampilan yang dibutuhkan

Instal AWS CLI.

Untuk menginstal AWS CLI, ikuti instruksi dalam AWS dokumentasi.

Administrator AWS

Siapkan AWS kredensil.

Konfigurasikan pengaturan yang AWS CLI digunakan untuk berinteraksi AWS, termasuk Wilayah AWS dan format output yang ingin Anda gunakan.

$>aws configure AWS Access Key ID [None]: <your_access_key_id> AWS Secret Access Key [None]: <your_secret_access_key> Default region name [None]: Default output format [None]:

Lihat informasi yang lebih lengkap dalam dokumentasi AWS.

Administrator AWS

Buat peran IAM.

Untuk membuat peran IAM dengan peran eksekusi Lambda, jalankan perintah berikut.

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"}]}
AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Instal Cloud Custodian.

Untuk menginstal Cloud Custodian untuk sistem operasi dan lingkungan Anda, ikuti petunjuk dalam dokumentasi Cloud Custodian.

DevOps insinyur

Periksa skema Cloud Custodian.

Untuk melihat daftar lengkap sumber daya Amazon RDS yang dapat digunakan untuk menjalankan kebijakan, gunakan perintah berikut.

custodian schema aws.rds
DevOps insinyur

Buat kebijakan Cloud Custodian.

Simpan kode yang ada di bawah file kebijakan Cloud Custodian di bagian Informasi tambahan menggunakan ekstensi YAMAL.

DevOps insinyur

Tentukan tindakan Cloud Custodian untuk mengubah flag yang dapat diakses publik.

  1. Temukan kode kustodian (misalnya,/Users/abcd/custodian/lib/python3.9/site-packages/c7n/resources/rds.py).

  2. Temukan RDSSetPublicAvailability kelas dirds.py, dan modifikasi kelas ini dengan menggunakan kode yang ada di bawah file rds.py sumber daya c7n di bagian Informasi tambahan.

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.

custodian run -dryrun <policy_name>.yaml -s <output_directory>
DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Terapkan kebijakan dengan menggunakan Lambda.

Untuk membuat fungsi Lambda yang akan menjalankan kebijakan, gunakan perintah berikut.

custodian run -s policy.yaml

Kebijakan ini kemudian akan diprakarsai oleh AWS CloudTrail CreateDBInstance acara tersebut.

Akibatnya, AWS Lambda akan mengatur flag yang dapat diakses publik false untuk instance yang sesuai dengan kriteria.

DevOps insinyur

Sumber daya terkait

Informasi tambahan

File YAMAL 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 Security Hub

Cloud Custodian dapat diintegrasikan AWS Security Hubuntuk mengirim temuan keamanan dan mencoba tindakan remediasi. Untuk informasi selengkapnya, lihat Mengumumkan Integrasi Cloud Custodian dengan. AWS Security Hub