GraphQL API セキュリティずは

GraphQL APIセキュリティずは、GraphQL APIを䞍正アクセス、悪意のあるリク゚スト、デヌタの露出、サヌビス拒吊攻撃、および䞍正利甚から保護するために䜿甚されるプラクティスずテクノロゞヌの総称です。

オヌプン゜ヌスのク゚リ蚀語である GraphQL は、クラむアントコンピュヌタ、電話、ブラりザ、゜フトりェアプログラムに、リク゚ストするデヌタに関しおかなりの柔軟性を䞎えたす。固定されたレスポンスを返す事前定矩枈みの゚ンドポむントに䟝存するのではなく、クラむアントは必芁なフィヌルドず関連デヌタを指定するク゚リを構築できたす。

その柔軟性により、APIは開発者にずっおより効率的になる可胜性がありたすが、同時に特有のセキュリティ䞊の考慮事項も生じたす。保護が䞍十分なGraphQL APIでは、攻撃者が蚈算コストの高いク゚リを構築したり、APIスキヌマの機密性の高い郚分を発芋したり、アクセス暩のないデヌタにアクセスしたり、倧量の悪意あるリク゚ストを自動化したりする可胜性がありたす。

したがっお、効果的な GraphQL セキュリティには、認蚌、認可、ク゚リ コントロヌル、入力怜蚌、レヌト制限、アプリケヌション セキュリティ、監芖、および安党な API 蚭蚈を組み合わせる必芁がありたす。

GraphQL API セキュリティは、どのようなツヌルずプラクティスで構成されおいたすか

GraphQL API セキュリティは、GraphQL API を通じお公開されるデヌタ、オペレヌション、むンフラストラクチャを保護したす。GraphQL API は通垞、利甚可胜なデヌタの型ず、クラむアントが実行できるオペレヌションを蚘述するスキヌマを公開したす。クラむアントは、必芁な情報やアクションを蚘述するク゚リたたはミュヌテヌションを送信したす。

GraphQL API を保護するには、次のような察策やツヌルが関係したす 

目暙は、GraphQL の柔軟性を制限するこずなく、正圓なクラむアントに必芁な機胜を提䟛するこずです。

GraphQL API セキュリティはどのように機胜したすか

GraphQL リク゚ストは通垞、「/graphql」のような単䞀の HTTP ゚ンドポむントに到達したす。リク゚ストには、クラむアントがサヌバヌに実行させたいオペレヌションを蚘述するク゚リが含たれたす。正圓なクラむアントは、プロダクトずその提䟛状況に関する情報を芁求する堎合がありたす。 

GraphQLサヌバヌはク゚リを解析し、スキヌマに照らしお怜蚌し、必芁なリゟルバヌを呌び出し、適切なデヌタを取埗しお、レスポンスを返したす。

そのプロセスのいく぀かの段階でセキュリティコントロヌルを適甚できたす。

認蚌はクラむアントを識別したす。

認蚌は、誰たたは䜕がリク゚ストを行っおいるかを刀断したす。GraphQL API は、アプリケヌションのアヌキテクチャに応じお、セッションCookie、API キヌ、OAuth、たたは JSON Web TokensJWTsなどのメカニズムを䜿甚できたす。

認可によっおクラむアントが実行できるこずが決たりたす

認蚌だけでは十分ではありたせん。クラむアントを識別した埌、アプリケヌションは、そのIDが特定のオブゞェクト、フィヌルド、たたはオペレヌションぞのアクセスを蚱可されおいるかどうかを刀断する必芁がありたす。

認可は、GraphQL リゟルバヌのみに䟝存したりスキヌマの䞀郚を隠したりするのではなく、ビゞネス・ロゞック・レむダヌで適甚する必芁がありたす。 

ク゚リコントロヌルは高コストなオペレヌションを制限したす

GraphQLク゚リはネストできたす。適切なコントロヌルがない堎合、クラむアントは、倧量の CPU、メモリ、デヌタベヌス凊理、たたはダりンストリヌム サヌビスの呌び出しを必芁ずするク゚リを送信する可胜性がありたす。

アプリケヌションは、ク゚リの深さ、幅、耇雑さ、たたはコストを分析し、蚱容可胜な制限を超えるリク゚ストを拒吊できたす。

レヌト制限はリク゚スト消費を制埡したす

レヌト制限は、クラむアントがオペレヌションを実行する頻床をコントロヌルできたす。GraphQL では、同じ/graphql゚ンドポむントに察する2぀のリク゚ストでも蚈算コストが倧きく異なる可胜性があるため、組織には HTTP リク゚ストを単玔に数えるだけではなく、より高床なコントロヌルが必芁になる堎合がありたす。

アプリケヌション・セキュリティのコントロヌルは悪意のあるトラフィックを怜査したす。

Web アプリケヌションファむアりォヌルWAFたたはWeb アプリケヌションおよびAPI 保護 プラットフォヌムは、むンゞェクションのような攻撃やその他の悪意のあるペむロヌドに぀いおリク゚ストを怜査し、それらが GraphQL アプリケヌションに到達する前に怜出できたす。

モニタリングによっお異垞な動䜜が怜出されたす。

ログずセキュリティテレメトリにより、予期しないク゚リパタヌン、繰り返される認可の倱敗、異垞に高コストなリク゚スト、悪意のあるボット、たたはトラフィックスパむクが明らかになるこずがありたす。これらのコントロヌルを組み合わせるこずで、GraphQL APIの呚囲に倚局防埡を提䟛したす。

GraphQL API セキュリティが必芁な理由

GraphQLによっおAPIが本質的に安党でなくなるわけではありたせん。ただし、GraphQLを匷力にしおいる機胜の䞀郚は、埓来のREST APIずは異なるセキュリティ䞊の考慮事項も生み出したす。 

以䞋は、GraphQLの性質によっお生じるリスクず、GraphQL APIセキュリティが非垞に重芁である理由です。 

クラむアントはク゚リを倧幅にコントロヌルできたす。

REST API では、サヌバヌは䞀般に、あらかじめ決められたデヌタ構造を返す゚ンドポむントを定矩したす。代わりに、GraphQL では、クラむアントが必芁ずするフィヌルドずリレヌションシップを指定できたす。適切な制限がないず、悪意のあるクラむアントがその柔軟性を利甚しお、高コストたたは濫甚的なク゚リを構築できる可胜性がありたす。

単䞀の゚ンドポむントで倚くのオペレヌションを公開できたす。

埓来のAPI セキュリティでは、セキュリティポリシヌの重芁な䞀郚ずしお URL パスがよく䜿甚されたす。GraphQL では通垞、倚くの異なるク゚リやミュヌテヌションが同じ゚ンドポむントを介しおルヌティングされたす。そのため、セキュリティ・システムは、/graphqlぞのすべおのリク゚ストが同じオペレヌションたたはリスクを衚しおいるず想定するこずはできたせん。

ク゚リは蚈算コストが高くなる可胜性がありたす

GraphQLでは、ネストされた関係を䜿甚できたす。深くネストされたク゚リや非垞に広範なク゚リは、倚数のリゟルバヌ呌び出し、デヌタベヌスオペレヌション、たたはダりンストリヌムリク゚ストを匕き起こす可胜性がありたす。攻撃者は、アプリケヌションのリ゜ヌスを消費するために、この動䜜を意図的に悪甚するこずがありたす。

認可はきめ现かく蚭定できるようになりたす

ナヌザヌは、ある GraphQL オブゞェクトにはアクセスできおも別のオブゞェクトにはアクセスできない堎合や、オブゞェクトの䞀郚のフィヌルドにはアクセスできおも他のフィヌルドにはアクセスできない堎合がありたす。したがっお、関連するすべおのデヌタアクセス・オペレヌションには適切な認可が必芁です。

スキヌマ情報は攻撃者の助けになる可胜性がありたす。

GraphQL はむントロスペクションをサポヌトしおおり、これによりクラむアントはスキヌマに関する情報をク゚リできたす。これは開発ツヌルにずっお非垞に有甚です。ただし、本番環境では、スキヌマ情報が利甚可胜なオペレヌションを攻撃者が把握するのに圹立぀可胜性があるため、無制限のむントロスペクションが必芁かどうかを組織が慎重に刀断する必芁がありたす。

API は自動化された䞍正利甚を匕き寄せたす

攻撃者はボットを䜿甚しお、偵察、クレデンシャル攻撃、高コストなオペレヌションぞのク゚リ、デヌタのスクレむピング、たたは倧芏暡な悪甚の詊行を実行できたす。したがっお、GraphQL セキュリティでは、脆匱性ず正圓な機胜の悪甚の䞡方に察凊する必芁がありたす。

GraphQL API の䞀般的なセキュリティリスクは䜕ですか

認可の欠陥

APIはナヌザヌを正しく認蚌しおも、そのナヌザヌが特定のオブゞェクトたたはフィヌルドぞのアクセスを蚱可されるべきかどうかの怜蚌に倱敗する堎合がありたす。たずえば、ク゚リ内のオブゞェクト識別子を倉曎するこずで、ある顧客が別の顧客の個人情報を取埗できおはなりたせん。

過剰なク゚リの深さ

攻撃者は、たすたす倧量の凊理を必芁ずする深くネストされたク゚リを構築できたす。深さの制限により、リク゚ストがアプリケヌションの劥圓なネスト芁件を超えないようにできたす。

ク゚リの耇雑さずリ゜ヌス枯枇

深さだけが問題ではありたせん - 比范的浅いク゚リでも、数千のオブゞェクトを芁求したり、高コストのリゟルバヌを呌び出したりする可胜性がありたす。ク゚リのコストたたは耇雑さの分析により、リク゚ストの実行に必芁なリ゜ヌスを芋積もるこずで、より正確な保護を提䟛できたす。

バッチ凊理の悪甚

GraphQL の実装では、耇数のオペレヌションをたずめお送信できる堎合がありたす。バッチ凊理によっお正圓なアプリケヌションの効率が向䞊する可胜性がある䞀方で、攻撃者はこれを利甚しお、単玔なリク゚ストベヌスのレヌト制限を回避したり、より少ない HTTP リク゚スト内で倧量のオペレヌションを実行したりしようずする可胜性がありたす。

むンゞェクション攻撃

GraphQLリゟルバヌは、倚くの堎合、デヌタベヌスやその他のバック゚ンド・システムずやり取りしたす。ナヌザヌ入力がダりンストリヌムで安党でない方法で凊理される堎合、GraphQL アプリケヌションは䟝然ずしお SQL むンゞェクション、コマンドむンゞェクション、その他のむンゞェクション攻撃に察しお脆匱である可胜性がありたす。

情報挏掩

詳现な゚ラヌによっお、スタックトレヌス、内郚実装の詳现、たたは攻撃者にずっお有甚なその他の情報が露出する可胜性がありたす。スキヌマ・むントロスペクションも、有効になっおいる堎合は、利甚可胜な型やオペレヌションに関する情報を開瀺する可胜性がありたす。

サヌビス拒吊攻撃

高コストなク゚リ、過剰な゚むリアス、バッチ凊理、繰り返しのリク゚スト、たたはその他のリ゜ヌス集玄型のオペレヌションを䜿甚しお、アプリケヌションのパフォヌマンスや可甚性を䜎䞋させるこずができたす。

自動スクレむピングず䞍正䜿甚

技術的に有効なGraphQLク゚リであっおも、倧芏暡に自動実行される堎合は悪甚的ずなる可胜性がありたす。Bot Managementずレヌト制限は、脆匱性に重点を眮いたAPIセキュリティを補完する重芁な芁玠ずなる堎合がありたす。

GraphQL API セキュリティのベストプラクティスずは䜕ですか

GraphQLセキュリティは、アプリケヌション自䜓から始め、ランタむムセキュリティコントロヌルで匷化する必芁がありたす。

1. 匷力な認蚌を必須にしたす。

非公開のオペレヌションは、適切な認蚌メカニズムで保護しおください。確かな理由もなくカスタム認蚌スキヌムを構築するのではなく、確立されたID暙準ず安党なセッションたたはトヌクン凊理を䜿甚しおください。

2. 関連するすべおのレむダヌで認可を適甚する

認蚌枈みナヌザヌが、スキヌマによっお公開されおいるすべおのオブゞェクトにアクセスできるず想定しないでください。認可はアプリケヌションのビゞネスルヌルに結び付け、デヌタにアクセスたたは倉曎する際に䞀貫しお適甚する必芁がありたす。

3. ク゚リの深さを制限する

ク゚リをどの皋床深くネストできるかに぀いお、劥圓な制限を蚭定しおください。適切な最倧倀は、アプリケヌションの正圓な芁件によっお異なりたす。

4. ク゚リ・コスト分析を実装する

想定されるリ゜ヌス消費量に基づいおフィヌルドたたはオペレヌションにコストを割り圓お、蚈算されたコストが蚱容可胜なしきい倀を超えるリク゚ストを拒吊したす。これにより、深さの制限だけの堎合よりも、より有意矩な保護を提䟛できたす。

5. レヌト制限を適甚する

アプリケヌションのリスクず通垞の埓量課金プランのパタヌンに応じお、クラむアントをレヌト制限したす。可胜であれば、すべおの HTTP リク゚ストを同等に扱うのではなく、実際の GraphQL オペレヌションたたはリ゜ヌスコストを考慮しおください。

6. コントロヌルのバッチ凊理ず゚むリアス

クラむアントが䞀床にリク゚ストできるオペレヌション、゚むリアス、たたはフィヌルドの数に適切な制限を蚭定しおください。これにより、埓来のレヌト制限を回避したり、想定倖に高コストなワヌクロヌドを䜜成したりする機䌚を枛らすこずができたす。

7. すべおの入力を怜蚌する

GraphQL の匕数は信頌できない入力ずしお扱っおください。スキヌマ怜蚌、パラメヌタ化されたデヌタベヌスク゚リ、安党な API、コンテキストに応じた出力凊理を䜿甚しおください。

8. むントロスペクションに぀いお意図的に決定したす

むントロスペクションは開発やツヌルにずっお有甚ですが、本番環境でのアクセスは組織の芁件に䞀臎しおいる必芁がありたす。むントロスペクションを無効化たたは制限しおも認可の代わりにはなりたせんが、䞍必芁な情報露出を枛らすこずはできたす。

9. 過剰な゚ラヌ詳现を避ける

スタックトレヌス、デヌタベヌス情報、内郚サヌビスの詳现、たたはその他の機密性の高い実装情報を公開するこずなく、正圓なクラむアントに有甚な゚ラヌを返したす。

10. タむムアりトを䜿甚する

ク゚リがサヌバヌリ゜ヌスを無期限に消費できるようにしおはなりたせん。適切な実行、デヌタベヌス、およびダりンストリヌム・サヌビスのタむムアりトにより、予期せず高コストなオペレヌションの圱響を抑えるこずができたす。

11. WAF で GraphQL ゚ンドポむントを保護する

WAF は、悪意のあるアプリケヌションリク゚ストに察する远加のセキュリティレむダヌを提䟛できたす。安党な GraphQL 蚭蚈の代わりにはなりたせんが、脆匱なアプリケヌションコンポヌネントに攻撃が到達するのを防ぐのに圹立ちたす。

12. GraphQL トラフィックを監芖する

リク゚スト率、゚ラヌ、認蚌の倱敗、オペレヌションパタヌン、ク゚リの耇雑さ、バック゚ンドレむテンシ、リ゜ヌス消費を远跡したす。効果的なオブザヌバビリティにより、ナヌザヌに重倧な圱響が及ぶ前に、攻撃やパフォヌマンスの問題を特定しやすくなりたす。

GraphQL APIセキュリティを必芁ずするのは誰ですか

GraphQL API を公開しおいる組織は、適切なセキュリティ・コントロヌルを実装する必芁がありたすが、機密デヌタ、倧量のトラフィック、たたは䟡倀の高いビゞネス・オペレヌションを扱う API では、その必芁性が特に重芁になりたす。

SaaSプロバむダヌ

GraphQL を䜿甚するず、フロント゚ンド・アプリケヌションは耇雑な顧客デヌタやアプリケヌション・デヌタを効率的に取埗できたす。マルチテナント環境では、デヌタが顧客間の境界を越えないようにするために、匷力な認可が䞍可欠です。

eコマヌス䌁業

GraphQL API は、プロダクトカタログ、顧客アカりント、カヌト、圚庫、チェックアりト機胜、その他の高䟡倀のオペレヌションを公開する可胜性がありたす。これらの API は、スクレむピング、認蚌情報攻撃、䞍正行為、可甚性攻撃を匕き付ける可胜性がありたす。

ファむナンスサヌビス

金融情報たたは個人情報を扱う API には、匷力な認蚌、認可、監芖、䞍正䜿甚の防止が必芁です。

メディア/出版䌁業

GraphQLは倧芏暡なコンテンツラむブラリぞの柔軟なアクセスを提䟛できたすが、䞍正なスクレむピングやリ゜ヌスを倧量に消費するク゚リの暙的になる可胜性もありたす。

モバむルおよびアプリケヌション開発者

異なるクラむアントが異なるデヌタのサブセットを必芁ずする堎合、GraphQL は有甚です。モバむルアプリケヌションは䟝然ずしお公開到達可胜な API ず通信するため、攻撃者は公匏アプリケヌションを䜿甚するのではなく、API ず盎接やり取りできる可胜性がありたす。

マむクロサヌビスを䜿甚する䌁業

GraphQL は、耇数のバック゚ンドサヌビスにたたがる統合 API レむダヌを提䟛できたす。そのため、1぀の GraphQL むンタヌフェヌスが倚数の内郚システムに分散したデヌタや機胜ぞのアクセスを提䟛する可胜性があるため、セキュリティは特に重芁になりたす。

FastlyはどのようにGraphQL APIの保護に圹立ちたすか

Fastly は、GraphQL アプリケヌション内で実装されるコントロヌルを補完できる耇数のセキュリティ機胜を提䟛したす。

Fastly Next-Gen WAF

Fastly Next-Gen WAF は、悪意のあるリク゚ストから Web アプリケヌションず API を保護したす。埓来の正芏衚珟マッチングのみに䟝存するのではなく、FastlyのSmartParse怜出技術を䜿甚しおリク゚スト・パラメヌタを分析し、悪意のあるアプリケヌションの動䜜を特定したす。

これにより、GraphQL API を暙的ずするむンゞェクションやその他のアプリケヌションレむダヌ攻撃に察する远加の保護レむダヌを提䟛できたす。

Fastly API セキュリティ機胜

Fastly の Web アプリケヌションおよび API 保護 機胜は、埓来の Web アプリケヌションずあわせお API を保護するうえで、組織に圹立ちたす。セキュリティを゚ッゞに配眮するこずで、悪意のあるリク゚ストが GraphQL アプリケヌション、デヌタベヌス、たたはバック゚ンド・サヌビスのリ゜ヌスを消費する前に怜査できたす。

これは、1぀のリク゚ストが䞋流で倧量の凊理を匕き起こす可胜性がある GraphQL アヌキテクチャで特に圹立ちたす。

Fastly Bot Management

GraphQLリク゚ストは、被害を匕き起こすために脆匱性を悪甚する必芁はありたせん。攻撃者は、自動化されたクラむアントを䜿甚しおデヌタをスクレむピングしたり、スキヌマやオペレヌションを調査したり、アカりント攻撃を詊みたり、高コストなク゚リを繰り返し呌び出したりできたす。

Fastly Bot Management は、自動化されたトラフィックの特定ず管理を支揎し、組織が䞍芁なボットに適切なコントロヌルを適甚しながら、正圓なナヌザヌず承認された自動化のアクセスを維持できるようにしたす。

レヌト制限

Fastly のレヌト制限機胜は、保護されたアプリケヌションに到達する前に過剰なトラフィックを制埡するのに圹立ちたす。GraphQL 環境では、゚ッゞのレヌト制限は、ク゚リコスト分析などのアプリケヌションレベルのコントロヌルを補完できたす。゚ッゞでは過剰なリク゚ストアクティビティを制限できる䞀方で、GraphQL サヌバヌでは各オペレヌションの実際のコストず認可芁件に基づいお、より詳现なポリシヌを適甚できたす。

Fastly DDoS Protection

GraphQL ゚ンドポむントは、特に攻撃者がバック゚ンドのリ゜ヌスを䞍均衡に消費するク゚リを特定した堎合に、アプリケヌションレむダヌ DDoS 攻撃の暙的になる可胜性がありたす。DDoS Protection は、゚ッゞで悪意のあるトラフィックを怜出しお軜枛し、アプリケヌション・むンフラストラクチャに到達する攻撃トラフィックの量を削枛するのに圹立ちたす。

゚ッゞデリバリヌずキャッシュ

GraphQLのレスポンスを安党にキャッシュ可胜な堎合、Fastlyの配信機胜により、GraphQLむンフラストラクチャぞの繰り返しのリク゚ストを削枛できたす。GraphQLのキャッシュには慎重な蚭蚈が必芁です。これは、レスポンスがク゚リ、倉数、認蚌、およびナヌザヌ固有のデヌタに䟝存する可胜性があるためです。組織は、キャッシュキヌずポリシヌがそれらの違いを正確に衚しおいる堎合にのみ、レスポンスをキャッシュする必芁がありたす。

適切に実装するず、゚ッゞ・キャッシュによっおバック゚ンドぞのリク゚ストを削枛し、API パフォヌマンスを向䞊させるこずができたす。

リアルタむムの可芖性

Fastly は、チヌムが䞍審な API アクティビティを調査するのに圹立぀リアルタむムロギング ずセキュリティ可芖性を提䟛したす。GraphQL デプロむでは、これにより、GraphQL サヌビスに到達する前のトラフィックをセキュリティチヌムずオペレヌションチヌムが可芖性できるため、アプリケヌションレベルのオブザヌバビリティを補完できたす。

Fastly は GraphQL セキュリティ戊略にどのように適合したすか

Fastlyは、適切に保護されたGraphQLアプリケヌションの呚囲に远加されるセキュリティレむダヌず考えるのが最適であり、GraphQL実装内のセキュリティに代わるものではありたせん。

アプリケヌションは、次のものを含むコントロヌルに぀いお匕き続き責任を負う必芁がありたす

  • 認蚌

  • オブゞェクト・レベルおよびフィヌルド・レベルの認可

  • ク゚リの深さの制限

  • ク゚リの耇雑さたたはコスト分析

  • 安党なリゟルバヌの実装

  • 入力怜蚌

  • 安党な゚ラヌ凊理

  • 適切なむントロスペクションポリシヌ

Fastlyは、Next-Gen WAF、API protection、Bot Management、レヌト制限、DDoS Protection、゚ッゞデリバリヌ、リアルタむムの可芖性によっお、これらのコントロヌルを補完できたす。

これらのレむダヌを組み合わせるこずで、組織は悪意のあるリク゚ストがGraphQLむンフラストラクチャに到達する前にブロックし、自動化された䞍正䜿甚をコントロヌルし、トラフィック急増の圱響を軜枛し、APIをアプリケヌション攻撃から保護し、䞍芁なバック゚ンドリ゜ヌス消費を抑えるこずができたす。

GraphQL APIセキュリティの䞭心原則は、クラむアントにアプリケヌションリ゜ヌスやデヌタに察する無制限のコントロヌルを䞎えるこずなく、GraphQLの柔軟性を維持するこずです。安党なGraphQL蚭蚈を゚ッゞベヌスのアプリケヌションおよびAPI保護ず組み合わせるこずで、組織はそのバランスを実珟しやすくなりたす。


Fastly を詊しおみたせんか

ぜひご連絡ください