보안

이 문서는 WhatsApp Business API 클라이언트와 관련하여 비밀번호, 인증, SSL 구성, 네트워크 분리, 암호화된 통신, HTTP 헤더, 웹 서버 TLS 프로토콜에 대한 정보를 제공합니다.

비밀번호 및 인증

인증 토큰비밀번호 모범 사례에 대한 자세한 내용은 로그인 및 인증 문서를 참조하세요.

SSL 구성

WhatsApp Business API 클라이언트에 액세스하려면 HTTPS가 필요합니다.

WhatsApp Business API 클라이언트를 만들 때 기본적으로 자체 서명된 인증서가 생성됩니다. WhatsApp Business API 클라이언트 엔드포인트를 인증하고 인증서 신뢰 경고를 피하기 위해서는 자체 서명된 인증서를 생성하는 데 사용하는 인증 기관(CA) 인증서가 필요할 수 있습니다. 또는 자체 서명된 인증서 대신 CA 인증서를 업로드할 수도 있습니다. 자세한 내용은 CA 인증서 문서를 참조하세요.

또한 Webhooks는 콜백에 HTTPS를 요구하므로 자체 CA 인증서를 사용하여 앱이 구성된 Webhooks로 POST 요청을 보낼 때 SSL 오류가 발생하지 않게 할 수 있습니다. 자세한 내용은 Webhooks CA 인증서 문서를 참조하세요.

네트워크 분리

별도의 분리된 네트워크에서 Webapp과 Coreapp 노드를 호스팅하고 필요한 서비스에만 노출하는 것이 좋습니다.

Webapp 노드는 WhatsApp Business API 클라이언트와 관리 인력 워크스테이션이 호스팅되는 네트워크에만 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는 서버 자격 증명을 인증하도록 구성될 수 있습니다. 이는 특정 내부 개발 설정에 필수이며 인증을 비활성화하지 않는 것이 좋습니다. 이 매개변수를 설정하지 않을 경우 기본적으로 인증이 활성화됩니다. 인증을 비활성화하려면 다음을 사용하세요.

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)

TLS 프로토콜과 암호는 Mozilla 권장 구성에 따라 구성되었습니다. Webapp은 3가지 프로필인 MODERN(기본값), INTERMEDIATE 및 OLD를 지원합니다.

보안을 개선하기 위해 기본 구성을 유지하는 것이 좋습니다. 그러나 WA_WEB_SECURITY_LEVEL 환경 변수를 사용해서 프로필을 다운그레이드할 수 있습니다.

HTTP 헤더

다음의 HTTP 헤더는 웹 관리자에 대해서는 지원되지만 API 엔드포인트에 대해서는 지원되지 않고 사용 중인 브라우저의 영향을 받습니다.

이름설명

X-Content-Security-policy

동일한 도메인의 스크립트만 웹 관리자에서 실행되도록 하는 정책을 정의합니다.

X-Frame-Options

헤더는 어떤 도메인도 웹 관리자 페이지를 iframe으로 포함하지 못하게 합니다.

X-XSS

공격이 감지될 경우 입력을 정화하여 웹 관리자 페이지를 사이트 간 스크립팅 공격으로부터 보호하는 보호 헤더입니다.

X-Content-Type-Options

서버가 수신한 콘텐츠 유형이 서버에서 요청한 것과 동일한지 확인합니다.

Strict-Transport-Security

HTTPS를 통해서만 웹 관리자에 액세스할 수 있도록 합니다.