Event Webhookのデータを保護しよう

Event Webhookのデータを保護しよう

この記事は Protect Your Data with Twilio SendGrid’s Event Webhook Security の抄訳です。

企業が保有するデータの情報漏洩は過去5年で67%も増加したという報告があります。そして、それによる損害は決して馬鹿にはなりません。IBM Securityのレポートによると、情報漏洩が起きた場合には、長期にわたる様々な影響に加え、平均819万ドルのコストがかかります。このような状況に陥らないよう、悪質な攻撃から情報を守るセキュリティの担保がこれまで以上に重要となっています。

リスクを軽減する対策の一つとして、受け取るデータが信頼された情報源から提供されたことを立証する必要があります。
Event Webhookのセキュリティ機能を有効にして、Twilio SendGridとのデータのやりとりをよりセキュアにしましょう!

セキュアなEvent Webhook

Event Webhookのセキュリティ強化オプションは、メールのイベントデータが直接Twilio SendGridからもたらされていることを保証します。「Signed Event Webhook Requests」と「OAuth 2.0」の2種類の機能で、データを保護しましょう。

これら2種類は互いに独立していて、同時に有効にすることもできます。異なる側面からデータを保護するので、これらの設定によりセキュリティを大きく高めることができます。「Signed Event Webhook Requests」は認証(Authentication)のための機能で、データの身元を確認します。対して「OAuth 2.0」は認可(Authorization)のためのプロセスを表し、URLへのアクセス権限を与えます。

セキュアなEvent Webhook

Signed Event Webhook Requestsでは、メールのイベントデータが信頼された情報源からポストされたことを確かめることができます。設定を有効にすると、Twilio SendGridは指定されたURLにPOSTする前に全てのリクエストにデジタル署名を加えます。

デジタル署名は非対称鍵暗号方式(公開鍵暗号方式)を用いて作成されます。高いセキュリティを実現できるだけでなく、主要な言語でSDKを用意しているので簡単に設定が可能です。

Twilio SendGridはOAuth 2.0にも対応しています。この機能はSendGridにアクセス権限を認可することで、信頼された情報源からのリクエストであることを保証します。OAuth2.0のClient Credentialsグラントを用い、SendGridはEvent Webhookの各リクエスト内にアクセストークンを含めてPOSTします。どのイベントをPOSTするか設定できる従来の機能に加え、POSTそれ自体に認可を設けてセキュリティを向上できます。ただし、OAuth 2.0の設定は少し複雑で、認可に必要ないくつかの情報を登録することが求められます。

Signed Event Webhook Requestsの仕組み

Signed Event Webhook Requestsを有効にすると、SendGridは公開鍵と秘密鍵のキーペアを作成します。秘密鍵はSendGrid側でしか確認できず、デジタル署名の作成に利用されます。公開鍵はユーザが取得可能で、デジタル署名を確認するために利用します。設定が有効な場合、リクエストボディとタイムスタンプがSHA-256を用いてハッシュ化されます。

Signed Event Webhook Requestsの仕組み

楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm; ECDSA)を利用してこのハッシュ値と秘密鍵からデジタル署名が作成されます。これはbase64エンコードされ、HTTPヘッダにX-Twilio-Email-Event-Webhook-Signatureとして追加されます。またリプレイアタックを防ぐため、タイムスタンプもX-Twilio-Email-Event-Webhook-Timestampとして加えられます。

Event WebhookのリクエストがTwilio SendGridからのものであることを確かめる手順は以下の通りです。まず、リクエストボディとHTTPヘッダにあるタイムスタンプからSHA-256ハッシュ値を生成します。これと公開鍵からECDSA署名を作成します。この値と、リクエストヘッダのX-Twilio-Email-Event-Webhook-Signatureをbase64デコードしたものを比較し、検証します。SendGridがサポートしている各言語のパッケージやライブラリを用いればこの検証プロセスは簡単に実装できます。

OAuth 2.0の仕組み

OAuth 2.0の仕組み

OAuth 2.0を利用する場合、Client ID、Client Secret、認可サーバのURL (トークンURL) を設定時に指定する必要があります。

SendGridはClient IDとClient SecretをトークンURLに渡し、アクセストークンを取得します。これはイベントデータのPOST時にAuthorizationヘッダに加えられます。トークンが認可サーバ、SendGrid、そして皆さんのアプリケーションの間でのみ共有されているという事実から、POSTされたデータが認可された情報源からのものであることが証明できます。

OAuth 2.0

Event Webhookのセキュリティ強化機能についてご理解いただけたでしょうか。これらの機能はSendGridのコンソールから今すぐにでもお使いいただけます。設定方法の詳細については、Getting Started with the Event Webhook Security Featuresをご覧ください。

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。