サービスレベルのセキュリティ

Hasuraでは、サービスレベルでアクセス権限を付与することができます。複数レイヤーに対するセキュアなデータアクセスを確立するため、様々な設定が可能です。ここでは、それぞれの設定について紹介します。

APIシークレットの設定

GraphQL APIの初期セキュリティを確保するために、すでに admin secret を設定しているかもしれません。この設定と併せて、データアクセスのためのロールベースのパーミッションシステムも導入されます。それでも、 ActionsRemote SchemasEvents を介したカスタムコードを使用した場合、それらを呼び出せるのはHasuraからのみとして、他からは呼び出せないような制限を加える必要があります。

これを行うにはHasuraサーバーとカスタムコードサーバー間での信頼性が必要です。この信頼性は、APIシークレットを共有することで確立できます。

アクションスキーマ/イベントおよびリモートスキーマ/イベントの作成時、以下のカスタムヘッダーを追加できます。

 ヘッダーを介した共有シークレット

CORSポリシーの設定

デフォルトでは、HasuraはすべてのCORS要求を許可します。本番環境では、選択した一部のドメインからのクエリを制限したい場合があります。

例えば、アプリケーションが https://example.com というドメインでホストされている場合、HASURA_GRAPHQL_CORS_DOMAIN="http://*.example.com" という設定を有効にすれば、このドメインとそのサブドメインのいずれからも、あらゆる要求を許可することができます。

 CORSドメイン

もちろん、この制限はクライアント側(ブラウザ)に対してのみ有効です。APIは常に公開されていることから、これらのポリシーは、ブラウザからの要求を制限する場合にのみ有効です。サーバー側やモバイルアプリなどからの要求はまだ制限できないため、そのような要求に対する制限としては使用できません。

SSLとHTTPS

Hasuraクラウドのプロジェクトでは、カスタムドメインを含むすべてのアプリに無料のSSLが組み込まれています。このため、APIには https による通常のクエリと、リアルタイムのサブスクリプションクエリ向けの wss によってアクセスが可能です。

なお、 wss はすべての要求に使用できます。(サブスクリプションだけでなく、クエリやミューテーションも機能します)。

チームメンバーとそのアクセスレベルの管理

Hasuraクラウドでは、アクセスを制限したチームメンバー間でコンソールのアクセスを共有できます。共有を有効にするには、以下に示すプロジェクトの設定画面から共同作業者を追加します。

 チームコンソール

Hasuraクラウドのプロジェクトへのアクセスには2つのレベルがあります。

  • admin は、APIの呼び出し、メトリクスの表示、ルールの設定を制限なく行うことができます。
  • user は、GraphQLの実行やメトリクスの表示などへの権限の有無に応じて、アクセスが制限されます。
Did you find this page helpful?
Start with GraphQL on Hasura for Free
  • ArrowBuild apps and APIs 10x faster
  • ArrowBuilt-in authorization and caching
  • Arrow8x more performant than hand-rolled APIs
Promo
footer illustration
Brand logo
© 2024 Hasura Inc. All rights reserved
Github
Titter
Discord
Facebook
Instagram
Youtube
Linkedin