Akamai Diversity

Akamai Japan ブログ

February 2019 Archives

Masahiko Suzuki

Masahiko Suzuki

February 27, 2019 3:00 PM

GraphQL Caching について

はじめに GraphQL (Query Language)は、Facebookにより開発され、2015年にリリースされたAPI用のデータクエリ言語であり、REST APIの次のパラダイムとして益々注目されています。GraphQLの主な特徴として、クライアントが送出するAPIコールであるHTTP POST Bodyにサービスに必要なリソースを明示的に記述することで、過剰なAPIコール数の削減や、レスポンス内の余分な情報を無くすことでペイロードサイズの削減ができる点などがあげられます。また、基本的に単一のエンドポイントのみを利用すること、APIのバージョンという概念が存在しないことなどもGraphQLの特徴となります。 REST APIと比較して利点が多いように思われるGraphQLですが、一つの課題としてCDNにおけるキャッシュが難しいという点があげられます。REST APIにおける多くのケースでは、APIリソース毎にURLが一意であれば、URLをベースにキャッシュキーを生成する事ができます。(「キャッシュキー」についてはこちらをご参照ください。)一方、GraphQLでは単一のエンドポイントのみを利用し、HTTP POST Bodyの内容によってレスポンス結果が異なるため、URLベースでキャッシュキーの生成ができず、これまでのCDNの仕組みではキャッシュを実現する事ができません。結果として、CDNによるオリジンサーバのオフロードを実現ができなかったり、クライアントのパフォーマンスやユーザ体験に影響を及ぼす可能性があります。 このような課題を解決するために、昨年リリースしたAkamai API Gatewayという製品における拡張機能として、「GraphQL Caching」が実装されました。本機能ではGraphQLで記述されたリクエストに対して、HTTP POST BodyのParseおよびHash値を取り一意のキャッシュキーを生成することで、GraphQLで呼び出されたレスポンス結果をCDN上のエッジサーバーでキャッシュすることが可能になります。 本ブログではGraphQL Cachingについて具体例を交えて説明したいと思います。尚、GraphQLそのものの技術仕様についてはこちらを参照ください。

佐々木 貴志

佐々木 貴志

February 27, 2019 2:00 PM

ゼロデイ攻撃対策にも繫がる Client Reputation

以前寄稿した「AKAMAI と SIEM と CLOUD SECURITY」でも述べさせていただきましたが、近年のサイバーセキュリティは高度化、迅速化がより重要なキーワードとなっております。迅速化の一例として、2018年の Apache Struts2の脆弱性に対しての攻撃では、弊社観測情報として脆弱性の情報公開から2日未満でその脆弱性を突いた攻撃が行われ、その1日後には大規模な攻撃キャンペーンに至った、という例もございます。こちらはあくまで公開できる情報からの参考となりますので、ボットネットが攻撃プラットフォームとして容易に利用できるようになってしまっている昨今では、例えバーチャルパッチの位置付けであるWAFソリューションを導入していたとしても攻撃への迅速な対処という観点では万全であると言えない状況となっております。 本稿でご説明する AKAMAI の Client Reputation は既に別の投稿でも説明がある通り、この 「Apache Struts2 の脆弱性に対しての攻撃=ゼロデイ攻撃を未然に防御する」という大きな効果を発揮した AKAMAI の Cloud Security ソリューションとなります。当時の状況については「APACHE STRUTS2脆弱性攻撃のゼロデイ防御に成功!」の投稿をご参照いただくとして、その中で活躍した Client Reputation について掘り下げてご説明させていただきます。