サービスレベルのセキュリティ
Hasuraでは、サービスレベルでアクセス権限を付与することができます。複数レイヤーに対するセキュアなデータアクセスを確立するため、様々な設定が可能です。ここでは、それぞれの設定について紹介します。
APIシークレットの設定
GraphQL APIの初期セキュリティを確保するために、すでに admin secret
を設定しているかもしれません。この設定と併せて、データアクセスのためのロールベースのパーミッションシステムも導入されます。それでも、 Actions
、 Remote Schemas
、 Events
を介したカスタムコードを使用した場合、それらを呼び出せるのはHasuraからのみとして、他からは呼び出せないような制限を加える必要があります。
これを行うにはHasuraサーバーとカスタムコードサーバー間での信頼性が必要です。この信頼性は、APIシークレットを共有することで確立できます。
アクションスキーマ/イベントおよびリモートスキーマ/イベントの作成時、以下のカスタムヘッダーを追加できます。
CORSポリシーの設定
デフォルトでは、HasuraはすべてのCORS要求を許可します。本番環境では、選択した一部のドメインからのクエリを制限したい場合があります。
例えば、アプリケーションが https://example.com というドメインでホストされている場合、HASURA_GRAPHQL_CORS_DOMAIN="http://*.example.com" という設定を有効にすれば、このドメインとそのサブドメインのいずれからも、あらゆる要求を許可することができます。
もちろん、この制限はクライアント側(ブラウザ)に対してのみ有効です。APIは常に公開されていることから、これらのポリシーは、ブラウザからの要求を制限する場合にのみ有効です。サーバー側やモバイルアプリなどからの要求はまだ制限できないため、そのような要求に対する制限としては使用できません。
SSLとHTTPS
Hasuraクラウドのプロジェクトでは、カスタムドメインを含むすべてのアプリに無料のSSLが組み込まれています。このため、APIには https
による通常のクエリと、リアルタイムのサブスクリプションクエリ向けの wss
によってアクセスが可能です。
なお、 wss
はすべての要求に使用できます。(サブスクリプションだけでなく、クエリやミューテーションも機能します)。
チームメンバーとそのアクセスレベルの管理
Hasuraクラウドでは、アクセスを制限したチームメンバー間でコンソールのアクセスを共有できます。共有を有効にするには、以下に示すプロジェクトの設定画面から共同作業者を追加します。
Hasuraクラウドのプロジェクトへのアクセスには2つのレベルがあります。
admin
は、APIの呼び出し、メトリクスの表示、ルールの設定を制限なく行うことができます。user
は、GraphQLの実行やメトリクスの表示などへの権限の有無に応じて、アクセスが制限されます。
- Build apps and APIs 10x faster
- Built-in authorization and caching
- 8x more performant than hand-rolled APIs