セキュリティ

このドキュメントには、WhatsApp Business APIクライアントに関連するパスワード、認証、SSL設定、ネットワークセグリゲーション、暗号化通信、HTTPヘッダー、ウェブサーバーTLSプロトコルに関する情報が掲載されています。

SSL設定

WhatsApp Business APIクライアントにアクセスするにはHTTPSが必要です。

WhatsApp Business APIクライアントが作成されると、デフォルトで自己署名証明書を生成します。WhatsApp Business APIクライアントのエンドポイントを認証し証明書の信頼性に関する警告が出されないようにするために、自己署名証明書を生成するのに使用される認証局(CA)証明書が必要になる場合があります。または、自己署名証明書の代わりにCA証明書をアップロードすることもできます。詳細はCA証明書のドキュメントをご覧ください。

WebhooksはコールバックにもHTTPSが必要なので、独自のCA証明書を使用して、設定済みのWebhookに対するPOSTの試行時にアプリケーションでSSLエラーが発生しないようにすることができます。詳細はWebhooks CA証明書のドキュメントをご覧ください。

ネットワークセグリゲーション

WebappノードとCoreappノードを別々の、分離されたネットワークでホストし、必要なサービスにのみ公開することをおすすめします。

Webappノードでは、APIとウェブ管理エンドポイントを、WhatsApp Business APIクライアントと管理されている社員のワークステーションをホストしているネットワークにのみ公開する必要があります。

Coreappノードは通信サービスをWebappノードにのみ公開します。マルチコネクト設定では、制御サービスを他のCoreappノードにのみ公開します。

暗号化通信

WebappからCoreappへの通信

CoreappコンテナとWebappコンテナの両方で環境変数WA_SECRETを設定して、それらの間での通信が暗号化されるようにすることをおすすめします。

注: 暗号化が完璧に動作するよう、CoreappホストとWebappホストの時計を同期させる必要があります。時間が狂うと、リプレイ保護(10秒の猶予があるタイムスタンプチェック)が通信エラーになる可能性があります。

データベース通信

データベース接続を暗号化するために使用するSSLパラメーターを設定して、転送中のデータを保護することができます。

以前は、Coreappにしかデータベースへのアクセス権がなかったため、環境変数WA_DB_CONNECTION_OPTIONを使用して暗号化できるのはCoreappからデータベースへの接続だけでした。しかし、Webappコンテナもデータベースにアクセスするため、Webappからデータベースへの接続を暗号化することは重要です。このため、すべてのコンテナがアクセスできるようにSSL設定が変更されます。暗号化は次の環境変数を使用して設定することができます。

  • WA_DB_SSL_KEY
  • WA_DB_SSL_CERT
  • WA_DB_SSL_CA
  • WA_DB_SSL_VERIFY

WA_DB_SSL_VERIFYを設定すればサーバーのIDを確認できます。特定の内部開発の設定ではこれが必要です。認証を無効にしないよう強くおすすめします。このパラメーターが設定されていない場合、認証はデフォルトでオンになります。認証を無効にするには、以下のものを使用します。

WA_DB_SSL_VERIFY=0

注:WA_DB_SSL_VERIFYは、Webappにのみ適用することができます。

既存機種との互換性を確保するため、今後もWA_DB_CONNECTION_OPTIONは非推奨モードでサポートされ、Coreappからデータベースへの接続を暗号化するために使用されます。これらの新しいパラメーターに切り替えることを強くおすすめします。

Key、Cert、CA環境変数で設定されたすべてのファイルは、コンテナ内からアクセス可能でなければなりません。このために、適切なアクセス許可を使用してデータボリュームの下にcertsディレクトリを作成することができます。通常、データボリュームは/usr/local/waent/dataとしてマウントされ、証明書ディレクトリはコンテナ内の/usr/local/waent/data/certsでアクセスできます。

ウェブサーバー(TLS)

Mozilla推奨構成により、TLSプロトコルおよび暗号が構成されています。Webappでは、MODERN(デフォルト)、INTERMEDIATE、OLDの3つのプロフィールがサポートされています。

セキュリティ向上のために、デフォルトの設定のままにしておくことをおすすめします。ただし、環境変数WA_WEB_SECURITY_LEVELを使用してプロフィールをダウングレードすることもできます。

HTTPヘッダー

次のHTTPヘッダーはWeb Admin向けにはサポートされていますが、APIエンドポイント向けにはサポートされておらず、使用中のブラウザに依存します。

名前説明

X-Content-Security-policy

同じドメインのスクリプトのみをWeb Adminで実行できるようにするポリシーを定義する

X-Frame-Options

ヘッダーは、Web Adminページをiframeとして含めることをどのドメインにも許可しない

X-XSS

攻撃が検出された場合に入力をサニタイズしてクロスサイトスクリプティング攻撃からWeb Adminページを守る保護ヘッダー

X-Content-Type-Options

サーバーが受信したコンテンツタイプがサーバーがリクエストしたのと同じであることを確認する

Strict-Transport-Security

HTTPSでのみWeb Adminにアクセスできるようにする