質問
スプレッドシートの「リンクを知っている全員が閲覧可能」の設定は、実際どの範囲のユーザーまで閲覧が可能ですか? 本当にリンクを知っている人ならだれでもアクセスでき、データを編集できるのですか? もしそうであるなら、それを防ぐための方法をいくつか挙げてください。 |
解答
とても良い質問です。 Google スプレッドシートの共有設定には注意が必要です。 以下で詳しく説明します。 ✅ 「リンクを知っている全員が閲覧可能」とは? * 誰でもそのリンクを持っていれば、Google アカウントにログインしていなくてもアクセス可能です。 * デフォルトでは「閲覧のみ」権限です。 つまり、データを見ることはできるが、編集はできません。 ⚠️ ただし注意点: * リンクが第三者に漏れれば、誰でもデータを見られます。 * SNSやコードに貼ったまま公開すると、Google にインデックスされて検索に引っかかることもあります(まれに)。 * 編集権限にしていた場合は、そのリンクを知っていれば誰でも編集できてしまいます。 🔐 それを防ぐ方法(安全性を高める方法) 1. 🔒 スプレッドシートの共有設定を「自分のみ」に戻す * デフォルトで最も安全。 * ただし、GAS を介して外部からアクセスする場合は Google 認証が必要になります。 2. 🔑 GAS を OAuth 認証付きにして、ログインユーザーだけがデータにアクセスできるようにする * Firebase Authentication + GAS の連携 * この方法なら、スプレッドシートは非公開のままで OK 3. 🚫 API の URL を公開しない * フロントエンドに直に API URL(GAS Web アプリの URL)を埋め込むと、それが漏れる危険性があります。 * 対策: *`CORS` のホワイトリストを使ってアクセス元を制限 * Cloudflare Workers や独自のサーバーでリバースプロキシを作って、GAS を隠す 4. 🧱 データをスプレッドシートからではなく、データベースに移行する * Firebase Firestore や Supabase などにすれば、認証や細かいアクセス制御ができます。 5. 🔎 スプレッドシートの「閲覧」権限だけにする * 間違って「編集者」権限でリンクを共有しないこと。 * 設定はこう確認します: 1. スプレッドシート右上の「共有」をクリック 2. 「リンクを知っている全員にアクセスを許可」→「閲覧者」に設定 3. 「閲覧者・コメント可・編集者」の違いを確認すること ✅ 最も簡単な安全策(おすすめ) 初心者向けに もっとも簡単で安全な運用は以下の通り: 1. スプレッドシートは「リンクを知っている全員が閲覧者」の設定にする(編集不可にする)。 2. GAS の Web アプリを「全員(匿名ユーザー)に実行可」でデプロイする。 3. React サイトでは `fetch(GAS_URL)` で読み込むのみ(書き込みなし)。 👉 これで、「誰でも見られるが、編集は絶対にできない」サイトが完成します。 ✋ 補足:書き込みもしたい場合は? * GAS 側に「編集用」の別の関数を用意し、認証(APIキー or Firebase Auth)付きにしてアクセス制御を加える必要があります。 不特定多数にデータを公開したくない場合は、少なくとも「リンクを知っている全員が閲覧可能」は使わず、ログイン+認証の仕組みを加える必要があります。 |
本当かどうかはわからないので、もし気になる方はGoogleの資料を確認してください。
|
|
この記事へのコメント