Gunakan AWS WAF untuk melindungi AWS AppSync APIs - AWS AppSync GraphQL

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

Gunakan AWS WAF untuk melindungi AWS AppSync APIs

AWS WAF adalah firewall aplikasi web yang membantu melindungi aplikasi web dan APIs dari serangan. Ini memungkinkan Anda untuk mengonfigurasi seperangkat aturan, yang disebut daftar kontrol akses web (webACL), yang memungkinkan, memblokir, atau memantau (menghitung) permintaan web berdasarkan aturan dan kondisi keamanan web yang dapat disesuaikan yang Anda tentukan. Ketika Anda mengintegrasikan AWS AppSync API dengan Anda AWS WAF, Anda mendapatkan lebih banyak kontrol dan visibilitas ke HTTP lalu lintas yang diterima oleh AndaAPI. Untuk mempelajari selengkapnya AWS WAF, lihat Cara AWS WAF Kerja di Panduan AWS WAF Pengembang.

Anda dapat menggunakan AWS WAF untuk melindungi Anda AppSync API dari eksploitasi web umum, seperti SQL injeksi dan cross-site scripting () XSS serangan. Ini dapat mempengaruhi API ketersediaan dan kinerja, membahayakan keamanan, atau mengkonsumsi sumber daya yang berlebihan. Misalnya, Anda dapat membuat aturan untuk mengizinkan atau memblokir permintaan dari rentang alamat IP tertentu, permintaan dari CIDR blok, permintaan yang berasal dari negara atau wilayah tertentu, permintaan yang berisi SQL kode berbahaya, atau permintaan yang berisi skrip berbahaya.

Anda juga dapat membuat aturan yang cocok dengan string tertentu atau pola ekspresi reguler di HTTP header, metode, string kueriURI, dan badan permintaan (terbatas pada 8 KB pertama). Selain itu, Anda dapat membuat aturan untuk memblokir serangan dari agen pengguna tertentu, bot buruk, dan pencakar konten. Misalnya, Anda dapat menggunakan aturan berbasis tarif untuk menentukan jumlah permintaan web yang diizinkan oleh setiap IP klien dalam periode 5 menit yang tertinggal, terus diperbarui.

Untuk mempelajari lebih lanjut tentang jenis aturan yang didukung dan AWS WAF fitur tambahan, lihat Panduan AWS WAF Pengembang dan AWS WAF APIReferensi.

penting

AWS WAF adalah garis pertahanan pertama Anda terhadap eksploitasi web. Ketika AWS WAF diaktifkan padaAPI, AWS WAF aturan dievaluasi sebelum fitur kontrol akses lainnya, seperti otorisasi API kunci, IAM kebijakan, OIDC token, dan kumpulan pengguna Amazon Cognito.

Integrasikan AppSync API dengan AWS WAF

Anda dapat mengintegrasikan Appsync API dengan AWS WAF menggunakan AWS Management Console,, AWS CLI AWS CloudFormation, atau klien lain yang kompatibel.

Untuk mengintegrasikan AWS AppSync API dengan AWS WAF
  1. Buat AWS WAF webACL. Untuk langkah-langkah mendetail menggunakan AWS WAF Konsol, lihat Membuat web ACL.

  2. Tentukan aturan untuk webACL. Aturan atau aturan didefinisikan dalam proses pembuatan webACL. Untuk informasi tentang cara menyusun aturan, lihat AWS WAF aturan. Untuk contoh aturan berguna yang dapat Anda tentukan untuk Anda AWS AppSync API, lihatMembuat aturan untuk web ACL.

  3. Kaitkan web ACL dengan file AWS AppSync API. Anda dapat melakukan langkah ini di AWS WAF Konsol atau di AppSync Konsol.

    • Untuk mengaitkan web ACL dengan AWS AppSync API di AWS WAF Konsol, ikuti petunjuk untuk Mengaitkan atau memisahkan Web ACL dengan AWS sumber daya di Panduan Pengembang AWS WAF .

    • Untuk mengaitkan web ACL dengan AWS AppSync API di AWS AppSync Konsol

      1. Masuk ke AWS Management Console dan buka AppSync Konsol.

      2. Pilih API yang ingin Anda kaitkan dengan webACL.

      3. Pada panel navigasi, silakan pilih Pengaturan.

      4. Di bagian firewall aplikasi Web, nyalakan Aktifkan AWS WAF.

      5. Dalam daftar ACL dropdown Web, pilih nama web ACL untuk dikaitkan dengan Anda. API

      6. Pilih Simpan untuk mengaitkan web ACL dengan AndaAPI.

catatan

Setelah Anda membuat web ACL di AWS WAF Konsol, perlu beberapa menit ACL agar web baru tersedia. Jika Anda tidak melihat web yang baru dibuat ACL di menu firewall aplikasi Web, tunggu beberapa menit dan coba lagi langkah-langkah untuk mengaitkan web ACL dengan AndaAPI.

catatan

AWS WAF integrasi hanya mendukung Subscription registration message acara untuk titik akhir waktu nyata. AWS AppSync akan merespons dengan pesan kesalahan alih-alih start_ack pesan untuk apa pun yang Subscription registration message diblokir oleh AWS WAF.

Setelah Anda mengaitkan web ACL dengan AWS AppSync API, Anda akan mengelola web ACL menggunakan AWS WAF APIs. Anda tidak perlu mengaitkan kembali web ACL dengan Anda AWS AppSync API kecuali Anda ingin mengasosiasikan AWS AppSync API dengan web ACL yang berbeda.

Membuat aturan untuk web ACL

Aturan menentukan cara memeriksa permintaan web dan apa yang harus dilakukan ketika permintaan web cocok dengan kriteria inspeksi. Aturan tidak ada dengan AWS WAF sendirinya. Anda dapat mengakses aturan berdasarkan nama di grup aturan atau di web ACL tempat aturan ditentukan. Untuk informasi selengkapnya, lihat AWS WAF aturan. Contoh-contoh berikut menunjukkan bagaimana mendefinisikan dan mengaitkan aturan yang berguna untuk melindungi sebuah AppSync API.

contoh ACLaturan web untuk membatasi ukuran badan permintaan

Berikut ini adalah contoh aturan yang membatasi ukuran badan permintaan. Ini akan dimasukkan ke dalam JSONeditor Aturan saat membuat web ACL di AWS WAF Konsol.

{ "Name": "BodySizeRule", "Priority": 1, "Action": { "Block": {} }, "Statement": { "SizeConstraintStatement": { "ComparisonOperator": "GE", "FieldToMatch": { "Body": {} }, "Size": 1024, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ] } }, "VisibilityConfig": { "CloudWatchMetricsEnabled": true, "MetricName": "BodySizeRule", "SampledRequestsEnabled": true } }

Setelah Anda membuat web Anda ACL menggunakan aturan contoh sebelumnya, Anda harus mengaitkannya dengan Anda. AppSync API Sebagai alternatif untuk menggunakan AWS Management Console, Anda dapat melakukan langkah ini AWS CLI dengan menjalankan perintah berikut.

aws waf associate-web-acl --web-acl-id waf-web-acl-arn --resource-arn appsync-api-arn

Diperlukan beberapa menit agar perubahan menyebar, tetapi setelah menjalankan perintah ini, permintaan yang berisi badan yang lebih besar dari 1024 byte akan ditolak oleh. AWS AppSync

catatan

Setelah Anda membuat web baru ACL di AWS WAF Konsol, diperlukan beberapa menit ACL agar web tersedia untuk diasosiasikan dengan fileAPI. Jika Anda menjalankan CLI perintah dan mendapatkan WAFUnavailableEntityException kesalahan, tunggu beberapa menit dan coba lagi menjalankan perintah.

contoh ACLaturan web untuk membatasi permintaan dari satu alamat IP

Berikut ini adalah contoh aturan yang membatasi AppSync API hingga 100 permintaan dari satu alamat IP. Ini akan dimasukkan ke dalam JSONeditor Aturan saat membuat web ACL dengan aturan berbasis tarif di AWS WAF Konsol.

{ "Name": "Throttle", "Priority": 0, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "Throttle" }, "Statement": { "RateBasedStatement": { "Limit": 100, "AggregateKeyType": "IP" } } }

Setelah Anda membuat web Anda ACL menggunakan aturan contoh sebelumnya, Anda harus mengaitkannya dengan Anda. AppSync API Anda dapat melakukan langkah ini AWS CLI dengan menjalankan perintah berikut.

aws waf associate-web-acl --web-acl-id waf-web-acl-arn --resource-arn appsync-api-arn
contoh ACLaturan web untuk mencegah kueri introspeksi GraphQL __schema ke API

Berikut ini adalah contoh aturan yang mencegah kueri introspeksi GraphQL __schema ke sebuah. API Setiap HTTP badan yang menyertakan string “__schema” akan diblokir. Ini akan dimasukkan ke dalam JSONeditor Aturan saat membuat web ACL di AWS WAF Konsol.

{ "Name": "BodyRule", "Priority": 5, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "BodyRule" }, "Statement": { "ByteMatchStatement": { "FieldToMatch": { "Body": {} }, "PositionalConstraint": "CONTAINS", "SearchString": "__schema", "TextTransformations": [ { "Type": "NONE", "Priority": 0 } ] } } }

Setelah Anda membuat web Anda ACL menggunakan aturan contoh sebelumnya, Anda harus mengaitkannya dengan Anda. AppSync API Anda dapat melakukan langkah ini AWS CLI dengan menjalankan perintah berikut.

aws waf associate-web-acl --web-acl-id waf-web-acl-arn --resource-arn appsync-api-arn