GraphQL Admin APIでの取得項目の制限について

AI-generated summary

親会社向けにGraphQL Admin APIを分けて運用し、取得範囲を制限できるかが論点。結論として、アプリを別作成してアクセストークンを分ける運用は可能で、親会社用アプリをread系スコープのみにすれば「参照専用」にできます。

一方で、制限はオブジェクト単位のアクセススコープまでで、Order内の「商品・数量は取得可、配送先など個人情報は不可」といった項目単位の制御は不可。read_ordersを許可したまま住所だけ隠す、read_customersを許可したままメールアドレスだけ隠す、といった設定はできないとの回答です。

対応案としては、カスタムアプリ側でAdmin APIを呼ぶ独自APIを用意し、返却前に不要な個人情報を除外する方式が提案されています。加えて、その独自APIに専用アクセストークンやIP制限を設けることで、親会社向けの安全な連携手段にするのが現実的という整理で、議論は実質的に解決しています。

基本的な設定に関する質問で申し訳ございません。
店舗の販売情報を親会社に共有する必要があり、
共有方法としてGraphQL Admin APIを親会社の人に実行してもらう運用を想定しております。
ただ顧客の個人情報などは連携したくないので、下記が可能かをご教授いただけると助かります。

①既に社内で使用している「GraphQL Admin API」とは別に、親会社が叩く用の「GraphQL Admin API」用のアプリを作成すれば、アクセストークンによって別のAPIとして分けることができるか。

②親会社用の「GraphQL Admin API」用のアプリでアクセススコープをreadだけに設定すれば、
社内用の「GraphQL Admin API」では更新ができるが、親会社用の「GraphQL Admin API」では取得しかできないといった運用は可能か

③親会社用の「GraphQL Admin API」で個人情報を取得させないため、特定の項目のみにアクセススコープを許可することは可能か

@store_K 様

①既に社内で使用している「GraphQL Admin API」とは別に、親会社が叩く用の「GraphQL Admin API」用のアプリを作成すれば、アクセストークンによって別のAPIとして分けることができるか。

②親会社用の「GraphQL Admin API」用のアプリでアクセススコープをreadだけに設定すれば、
社内用の「GraphQL Admin API」では更新ができるが、親会社用の「GraphQL Admin API」では取得しかできないといった運用は可能か

③親会社用の「GraphQL Admin API」で個人情報を取得させないため、特定の項目のみにアクセススコープを許可することは可能か

はい、3点とも可能です。

ご参考まで。
(キュー田辺)

@Qcoltd
@qcoltd-tanabe 様

有難うございます。
追加でお伺いさせていただきたいのですが、

③親会社用の「GraphQL Admin API」で個人情報を取得させないため、特定の項目のみにアクセススコープを許可することは可能か

も可能とのことですが、例えば注文情報(Order)の内、
商品や数量だけ取得できるようにして、配送先などの個人情報は取得できないようにするアクセススコープの設定は可能でしょうか。
開発ストアで「アプリと販売チャンネル→アプリ開発」を確認したところ注文のオブジェクト単位でしか指定できなそうでしたが、どこで設定ができますでしょうか。


※「GraphQL Admin API」では取得項目の指定ができることは認識してますが、
クエリを変更すれば個人情報を取得できる状況があまり望ましくないとのことで、
そもそも特定の項目しか取得できないAPIが出来ればと思い質問させていただいております。

@store_K 様

商品や数量だけ取得できるようにして、配送先などの個人情報は取得できないようにするアクセススコープの設定は可能でしょうか。

例えば、
read_ordersは許可するが、配送先住所は取れない
read_customersは許可するが、メールアドレスは取れない
などの指定ができるか、ということですね。

それはできませんね。

そこまで実現されたい場合は、
カスタムアプリ側で、Admin APIをコールする処理を内包したAPIを用意し、親会社様はそのAPIをコールするようにした方が良いですね。
親会社様用のAPIではAdmin APIからのレスポンス値を削って返却する、ような処理を仕込むと良いかと思います。
親会社様用APIをコールするには専用のアクセストークンを持っていないとコールできないや、APIコール自体にIP制限を設けるなどすれば、セキュリティ的にも問題ないかと思います。

ご参考まで。
(キュー田辺)