セキュリティ

【Bubbler必読】Bubbleセキュリティ – 外部アクセス・API編

Bubble セキュリティー 外部アクセス API編

おばとりっぷ
おばとりっぷ
外部アクセスやAPI設定、よくわからずに使っている方が意外と多い印象です。その部分のセキュリティについて、専門のゆきくんに色々と教えてもらいました。
ゆきくん
ゆきくん
ここだけはおさえてほしい、ポイントを伝えます!

今回はBubbleのセキュリティの中でも「外部アクセス・API」に絞って説明を行います。

大きく3項目の解説をします。

  • Settings > API タグ > Public API endpoints 注意点
  • API workflow の項目について
  • Plugins で気をつけること
画像)APIタグ、Public API endpoints設定
画像)API workflowのチェック項目3箇所

Public API endpoints は、理解をした上で使用しましょう!

外部アクセスやAPIといえば一番はじめに 思い浮かぶのがこの
Settings > API > Public API endpoints の項目です。

アプリ初期設定では3つのうち、どれにもチェックが入っていません。

画像)Public API endpoints

上の2つは、使わない場合はチェックを入れないこと!

注意すべきは上の2項目
・Enable Workflow API and backend workflows
・Enable Data API
です。

以前アプリを引き継いだ際に、Workflow API (Backend workflow) も Data APIも使っていないのにこれらの項目にチェックが入っていたことがありました。

試した痕跡だったのか?それとも間違えてチェックを入れてしまったのか?
今となってはわかりませんが「使用しないものにチェック入れない」ことがまず大前提です。

Data APIの扱いは注意しましょう!

特に Enable Data API は、チェックを入れると以下の「注意」が出現します。
文中にvisible by default と書かれており、チェックが入るとデフォルトで「誰もがそのData を見れることになります。

Privacyルールの設定なしでこのチェクを入れると、Data APIを通じて 全ての人 データが見える状態になります。

Data APIの利用可のチェクを入れると、セキュリティ的にリスクが上がります。
Privacyルールを設定せず、その Data APIにチェックが入っているとデータが抜かれ放題です。

ゆきくん
ゆきくん
それゆえ「Data APIがよくわからない、Privacyルールの設定もわからない」
この2つの理解が乏しいうちは、残念ながら触ることをおすすめできません。
しっかり理解してから使用するようにしましょう。

Workflow API も Data APIも、API Tokenを発行して使うと安心!

API Tokenを使っていますか?

結論、
Workflow APIも、Data APIも、使用する際に API Tokenを設定して使うようにしましょう!

API TokenはAPIを守る仕組みで、「API Tokenがなければアクセスできない状態」を作ることができます。セキュリティ的に安心です。

API Token作成のボタン「Create a new API token」でトークン keyの作成を行います。
「Enable Workflow API and backend workflows」 か「Enable Data API」どちらかのチェックが入 ることでこの作成ボタンが出現します。
初期設定でチェックが入っていない状態だと表示されませんのでご注意ください。

<API Tokenとは?>

あらかじめクライアント側(外部でデータを使う側)に「トークン」を持たせておき、データを渡す際にBubble側でトークンを検証し「権限があるかどうか?」を確認します。
権限がある場合だけ、データを渡します。

画像)Private keyをクライアント側に持たせておきます

例えばこんな場合でも、API トークンを設定しておけば、決まったクライアント側からのみAPIをたたくので安心です。

例)
・Enable Workflow API and backend workflows にチェクが入っている
・Backend workflows、API workflowで「Expose as a public API workflow」にチェックが入っている

→ この状態でPrivacy ルールの設定を間違ってる or していない、ログインなどの認証もいらない場合…
誰でも、そのAPI workflowを実行できてしまいます。

✅API Tokenを設定していれば、そのトークンを持っているクライアント側だけが実行できます。誰でも…ではなくなるので安心です。

ドキっとするような怖い例を出しましたが、APIトークンを発行することの利点をご理解いただけたと思います。

ゆきくん
ゆきくん
MakeやZapierなど、ツール毎にトークンを発行し分けておくと便利です。
何か問題が起こったり?おかしい?ときに、そのトークンだけ再生成することで過去のアクセス経路を防ぐことが可能です。

アクセスログからは「使用されたトークン」が確認できるのも利点です✅

Swagger API ドキュメントへのアクセス

3つ目のSwaggerの項目はデフォルトでチェックが外れています。

この機能はBubbleドキュメントの通り

The Swagger Specification is a standard way to describe an API. It can be used to generate a documentation, or to let other tools integrate with the API. Bubble provides a Swagger Specification out-of-the-box when you activate the API for your application.

Swaggerは、API を記述する標準的な方法です。ドキュメントを生成したり、他のツールを API と統合したりするために使用できます。アプリケーションの API を使用すると、Bubble はすぐに Swaggerの使用を提供します。

Bubble Swagger

Swagger APIへのアクセスができると、アプリの構造がJSON形式でわかりやすく出力されます。
仕様書等を作成する際などに便利です。

Swagger APIのドキュメントを非表示にし、他の開発者やサービスがこの機能を使えないようにするには、「チェックを入れます」。

ただ、Bubble公式でも述べている通り

✅非表示にすると、Bubble App Connector の一部の機能が壊れる可能性があります。

画像)Bubble App Connectorプラグイン

特別な理由が無い限りこの項目は「空欄」つまり、Swagger API documentaiotn へのアクセスを可能なままにしておくことをおすすめします。

Privacy rule プライバシールール

Enable Data API を有効にし、Data typeにチェックを入れたら そのData の Privacyルールは必ず設定しましょう!

画像)Student データをData API使用

Enable Data APIでData typeにチェックを入れると、そのPrivacy ルールに以下3項目が追加され詳細を設定できるようになります。

  • Modify via API (API 経由で 変更
  • Delete via API(API 経由で 削除
  • Create via API(API 経由で 作成
画像)Data API経由でできるアクションを制限できます。

必要な項目だけにチェックを入れるようにします。

ゆきくん
ゆきくん
via APIの設定はそのData typeの全Fieldsに対して行うことが可能になります。
一部のFields「だけ」にという指定はここではできません。注意が必要です。

上級者向けになりますが、外部から操作する専用のData typeを作り(切り離しリレーションさせる)、その Data だけ書き込みなどを可能にする方法を取るのがおすすめです。

API workflow(Backend workflowsでの注意)

次にBackend workflowsを使う時の注意点を3項目に分けて解説します。

気をつけるべきは下図の赤で囲った部分です。

  • Expose as a public API workflow
  • This workflow can be run without authentication
  • Ignore privacy rules when running the workflow

無駄にExpose as a public API workflowにチェックを入れないこと!

必要ない場合にも「チェックをオンにしている」人はいませんか?

なぜならこの項目、デフォルトで「チェックが入ってしまっている」から。
そのままにしているケースを多く見ます。

Expose as a public API はBubble公式ページでも説明しているように、チェックを入れると「外部からのリクエストが許可」されます。

Expose as a public API workflow

Check this box to allow requests from outside the Bubble Editor via the Workflow API, either by a client that you built or another service, such as Stripe or Zapier.

このボックスをオンにすると、作成したクライアントまたは Stripe や Zapier などの別のサービスによって、Workflow API を介して Bubble Editor の外部からのリクエストが許可されます。

Bubble Expose as a public API workflow

チェックを入れると、外部クライアント側からデータのアクセスが可能で、セキュリティー的に危険な状態です

ログイン認証やtokenの設定もなしで使用してる場合、自由にデータの改ざんをしてください。と言っていることになります。

もちろん理解をして使っている場合は良いですが、「デフォルトでチェックが入っている」のがミソです。

Bubbleの内部だけで使用する「繰り返し処理」や「スケジュールで処理を行う」ものは、このチェックは必要ありません!

もう一度言います
以下のような設定には、チェックは入れないでください!

アプリ内部で使用する

繰り返し処理(recurring event)
スケジュール処理(Schedule workflow)

ログインなどの認証なしで使用する特殊ケース以外はチェクを入れないこと!

2つ目の、This workflow can be run without authenticationは、認証なしで実行させるかどうか?
のチェック項目です。

This workflow can be run without authentication

Check this box if this workflow can be run without authentication. Use this to enable users to sign up or login to the app.

このワークフローを認証なしで実行させる場合は、このボックスをオンにします。ユーザーがアプリにサインアップまたはログインした状態にさせます。

Bubble This workflow can be run without authentication

ここにチェックを入れると、ログインや認証なしで外部から誰でも実行できます という状態になります。

一番危険なのが

・1つ目の「Expose as a public API workflow」にチェックを入れ
・2つ目の「This workflow can be run without authentication」

にもチェックが入っている状態です。

外部からAPIを実行できる状態、かつ、認証関係なく誰でも実行可能。な状態です。

認証不要で実行させる、という特殊なケース以外はチェックを入れるのをやめましょう!!

ゆきくん
ゆきくん
テスト段階で認証せずに実行させることはあります。本番の際には必ずトークンの設定やログインユーザーだけが実行できるように変更します。

Privacy ルールを適用せずに実行する場合、以外はチェックを入れないこと!

Privacy ルールは API実行の際にも適用されます。

ただしまれに、Privacyルールを適用しない状態で実行させたい場合があります。
その時にチェックを入れます。

Ignore privacy rules when running the workflow

All privacy rules will apply. Sometimes, you may want the workflow to bypass these rules, even if run without authentication, and run as an admin user who has all rights to the data. Check this box to ignore the privacy rules.

すべてのプライバシー規則が適用されます。認証なしで実行し、データに対するすべての権限を持つ管理者ユーザーとして実行する場合でも、ワークフローがこれらのルールをバイパスすることが必要な場合があります。プライバシー ルールを無視するには、このボックスをオンにします。

Bubble Ignore privacy rules when running the workflow

ただし注意事項でも記載されている通り、プライバシールールは守られず実行が可能になるため慎重に扱う必要があります!

初心者はチェックを入れない方が良い項目です!

理解した上で特殊なケースのみ使用する項目です。

ゆきくん
ゆきくん
繰り返し処理をかけるときや必要なデータを全て取得し処理させたい場合など、一時的に使用する場合があります。
初心者にはほぼ必要ない項目なのでチェックを入れないようにしてください。

PluginsでAPI connectorを使用する際は SSLかどうかを確認!

最後にPluginsで BubbleのAPI Connectorを使う際に気をつけることを解説します。

API Connectorは、外部APIに接続するためのBubble公式が出しているプラグインです。
API Connectorの説明を引用 ↓

The API Connector allows you to connect to almost any external API from Bubble. It expects a correctly formatted JSON body as a response. You can supply headers, parameters, and a call body.

API Connectorを使用すると、Bubble からほぼすべての外部 API に接続できます。レスポンスに、正しくフォーマットされた JSON が必要です。ヘッダー、パラメーター、body内へ呼び出しを指定ができます。

Bubble公式 API Connector

外部に接続ができ、データを取り込んだり扱うことが可能になります。

そこで注意をしたいのが、接続先がSSLになっているか?です。

SSLはHTTPSとも言われ、
Bubble パフォーマンンス&セキュリティ「完全版」でも解説した通り、やりとりを暗号化することができます。

<SSL(HTTPS)とは?>

サイト間のやりとりを暗号化します。
http で s が入っていない場合、やりとりの内容が暗号化されていません。よって盗聴や改ざんが可能になります。

SSL(https)にすることで、個人情報やプライバシーを守ることができます。

接続先のURLが https~で始まっているか?を必ず確認するようにしましょう。
sがついていないものは、使用を避けましょう。

まとめ:心配な方は専門家を頼ることも必要です

Bubbleは、初心者でも「アプリを簡単に作成できる」ツールに最適化されています。
現にDeploy(本番リリース)もボタン一つで完結します。

簡単に作成&公開できてしまう分、セキュリティのことなどは開発者自身に おまかせ されています。「自分で対策」しなくてはなりません。

セキュリティ完全版の出だしでも書いた文章です。

外部アクセス・APIの内容は正直、上級者向けの内容です。
しかしアプリケーション作成者、開発者にとって「知らなかった」で済まされないのがセキュリティー問題です。

アプリを作成するということは、ユーザーの個人情報を保持するということです。

誰に、どこに、どの情報までにアクセスさせるのか?
を適正に設定ができるエンジニアである必要があります。

今回の記事で、みなさんのお役に立てたら幸いです。

<Special Thanks>

ビジネスパートナーであり、セキュリティーに詳しい「ゆきくん」に監修していただきました。
ありがとうございました!

Bubbleのセキュリティーに不安、設定でつまずいている方に向けサービスも開設しています。困った際はぜひ私たちを頼ってください。 ココナラサービス

Bubbleの設定でお困りの方へ

ご相談や開発も承っております。
お気軽にご連絡ください。

お問い合わせはこちら

ABOUT ME
おばとりっぷ
専業Bubbleエンジニア▷元webデザイナー/ディレクター▷CSSをBubbleに実装するのが得意▷日本国内のトップBubbleエンジニアとしてwebアプリ開発に携わる▷Bubble講師▷フルスクラッチ開発のアプリで起業した経験あり▷スタートアップ・起業家のBubbleアプリ開発の支援を積極的に行う。