Keamanan

Dokumen ini memberikan informasi tentang kata sandi, autentikasi, konfigurasi SSL, segregasi jaringan, komunikasi yang terenkripsi, judul HTTP, dan protokol server web TLS yang terkait dengan klien API WhatsApp Business.

Kata Sandi dan Autentikasi

Silakan lihat dokumentasi Login dan Autentikasi untuk informasi selengkapnya tentang token autentikasi dan praktik terbaik kata sandi.

Konfigurasi SSL

Akses ke klien API WhatsApp Business membutuhkan HTTPS.

Saat dibuat, Klien API WhatsApp Business secara default akan menghasilkan sertifikat bertanda tangan sendiri. Sertifikat Certification Authority (CA) yang digunakan untuk menghasilkan sertifikat bertanda tangan sendiri mungkin diperlukan untuk memeriksa endpoint Klien API WhatsApp Business dan agar terhindar dari peringatan kepercayaan sertifikat. Atau, Anda dapat mengunggah sertifikat CA dan bukan sertifikat bertanda tangan sendiri. Lihat dokumentasi Sertifikat CA untuk informasi selengkapnya.

Karena Webhooks juga membutuhkan HTTPS untuk panggilan balik; Anda dapat menggunakan sertifikat CA Anda sendiri untuk mencegah aplikasi agar tidak mengalami kesalahan SSL ketika mencoba untuk melakukan POST ke Webhooks terkonfigurasi. Lihat dokumentasi Sertifikat CA Webhooks untuk informasi selengkapnya.

Segregasi Jaringan

Anda direkomendasikan untuk meng-host node WebApp dan CoreApp di jaringan tersegregasi yang terpisah, dan hanya mengekspos node untuk layanan wajib.

Node WebApp harus mengekspos endpoint API dan Administrasi Web hanya ke jaringan tempat di-hosting-nya klien API WhatsApp Business dan stasiun kerja personel pengelolaan.

Node CoreApp seharusnya hanya mengekspos layanan komunikasi ke node WebApp, dan hanya membuka layanan kontrol ke node CoreApp lainnya di pengaturan Multikoneksi.

Komunikasi Terenkripsi

Komunikasi WebApp ke CoreApp

Anda direkomendasikan agar mengatur variabel lingkungan WA_SECRET baik dalam kontainer CoreApp maupun Web/app untuk memastikan bahwa komunikasi di antara keduanya terenkripsi.

Catatan: Host CoreApp dan WebApp harus menyinkronkan jam mereka agar enkripsi berfungsi dengan sempurna. Dalam hal penyimpangan waktu, perlindungan putar ulang (yaitu: pemeriksaan cap waktu dengan tenggang 10 detik) dapat berakibat gagalnya komunikasi.

Komunikasi database

Anda dapat mengonfigurasi parameter SSL yang digunakan untuk mengenkripsi koneksi database guna melindungi data dalam transit.

Sebelumnya, hanya koneksi CoreApp ke database yang dapat dienkripsi menggunakan variabel lingkungan WA_DB_CONNECTION_OPTION, karena secara tradisional hanya CoreApp yang memiliki akses ke database. Namun, kontainer WebApp juga mengakses database, jadi mengenkripsi koneksi WebApp ke database itu penting. Oleh karenanya, konfigurasi SSL diubah agar netral untuk diakses oleh semua kontainer. Enkripsi dapat dikonfigurasi menggunakan variabel lingkungan berikut:

  • WA_DB_SSL_KEY
  • WA_DB_SSL_CERT
  • WA_DB_SSL_CA
  • WA_DB_SSL_VERIFY

WA_DB_SSL_VERIFY dapat dikonfigurasi untuk memverifikasi identitas server. Ini wajib dalam pengaturan pengembangan internal tertentu dan sangat disarankan Anda tidak menonaktifkan verifikasi. Jika parameter ini tidak diatur, verifikasi diaktifkan secara default. Untuk menonaktifkan verifikasi, gunakan:

WA_DB_SSL_VERIFY=0

Catatan:WA_DB_SSL_VERIFYhanya tersedia untuk WebApp.

Untuk kompatibilitas ke belakang, WA_DB_CONNECTION_OPTION akan terus didukung dalam mode yang sudah tidak berlaku lagi dan digunakan untuk mengenkripsi koneksi CoreApp ke database. Anda sangat direkomendasikan untuk beralih ke parameter baru ini.

Semua file yang dikonfigurasikan dalam variabel lingkungan Kode, Sertifikat, dan CA harus dapat diakses di dalam kontainer. Untuk melakukan ini, Anda bisa membuat direktori certs di bawah volume data dengan izin yang sesuai. Volume data biasanya dipasang sebagai /usr/local/waent/data dan direktori sertifikat kemudian akan dapat diakses di /usr/local/waent/data/certs di dalam kontainer.

Server Web (TLS)

Protokol TLS dan cipher telah dikonfigurasikan sesuai Konfigurasi yang direkomendasikan oleh Mozilla. WebApp mendukung 3 profil: MODERN (default), INTERMEDIATE, dan OLD.

Anda direkomendasikan untuk mempertahankan konfigurasi default demi keamanan yang lebih maju. Namun, Anda dapat memilih untuk melakukan downgrade profil menggunakan variabel lingkungan WA_WEB_SECURITY_LEVEL.

Header HTTP

Tajuk HTTP berikut didukung untuk Admin Web, tetapi tidak didukung untuk endpoint API, dan tunduk pada browser yang digunakan.

NamaDeskripsi

X-Content-Security-policy

Mendefinisikan kebijakan yang hanya mengizinkan skrip dari domain yang sama untuk dijalankan di Admin Web

X-Frame-Options

Tajuk melarang domain apa pun untuk menyertakan halaman Admin Web sebagai iframe

X-XSS

Tajuk perlindungan yang membuat halaman Admin Web aman dari serangan skrip lintas situs dengan membersihkan input jika terdeteksi ada serangan

X-Content-Type-Options

Memastikan bahwa jenis konten yang diterima oleh server sama dengan yang diminta oleh server

Strict-Transport-Security

Memastikan Admin Web hanya dapat diakses melalui HTTPS