Rcat999公式サイト作成しました ~ Googleログインで簡単認証! データ配布などを移行しました~
こんにちはRcatです。
この度、メンバー向けとしていたAPIサーバーを全体公開向けのWEBサーバーとしましたので、紹介と使い方の解説を行います。
特に、配布サーバーの移行は多くの方に影響がありますので、ご確認ください。
はじめに
利用規約
情報や作品の活用時は事前に利用規約をご確認ください。
コメントについて
利用規約のガイドラインを確認の上コメントしてください。
則っていないコメントは削除します。
概要
Rcatサイトとは
Rcat999公式サイトは、データの配布や限定サービスの提供を目的とした個人サイトです。
Googleアカウントでログインすることでコンテンツを提供します。
また、noteのメンバーシップと連携することで、メンバー限定の機能やページが閲覧できるようになります。

Rcatサイトの安全性について
まずは一番気になるとこです!
下記の対策で安全性を確保しています。
一応基本情報は持っているかつ応用もというところなので、それなりの知識はあるつもりです。
最低限の情報取得(個人情報不要)
Rcatサイトは、最低限Googleのメールアドレスだけで利用可能です。名前すら要りません。
つまりは個人情報と位置付けられる名前や生年月日、住所などを一切持っていません。
なお、連携機能にはnote IDなどほかの情報が必要になりますが、同意いただいた場合のみご自身で入力いただく仕組みです。

Googleアカウントでログイン
Googleでログインを活用しパスワードレスを実現しました。アカウント情報漏洩や不正使用の危険性が非常に低いです。
※仮に漏洩した場合は、ログイン許可されたアドレスのリスト、それに対応するnote idなどです。アンケートに書いた以上のことは流出しません。

プロフェッショナルな運用
基本情報技術者試験や応用情報技術者試験で出てくる知識をもとに、本サイトは多重防衛を行っています。特殊なVPNリバースプロキシによるサーバーの隠蔽
VPNの先のHTTPSからしか入れません。本体のIPアドレスも公開していないので、不正アクセスすること自体が困難です。WAFの導入によるWEBアプリ専用保護
Web Application FirewallというWEB専用のセキュリティ対策を入れています。FWによる標準的な外部アクセスブロック
VPNを使っている都合上、どこもポートを開けずに済んでいます。ポートスキャン?引っかかりませんな。サーバー専用機と仮想化
物理的にサーバー機器はほかのものと別れています。そのためライブラリなどのミドルウェアを介した攻撃のリスクが少ないです。
また、仮想環境で実行しているため、仮に壊れても再構築するだけで復活します。広告なし
マルウェアレベルの広告、もううんざりですよね。
個人サイトなので広告はありません。ご安心ください。
Rcatサイトの仕組み
わからない人はスルーでOK。
知ってる人は見ていただければ、それなりに安全性を確保するためにいろいろやってんだなぁと思ってもらえると思います。

クライアントがサイトにアクセスする
インターネットを通じてRcatサイトのURLにアクセス
HTTPS通信ですので暗号化されていますtailscaleネットワークに到達する
ここでVPN接続しているRcat宅のサーバーへ通信が転送される。
見てわかると思いますが、公開URLはここの入り口です。なのでDNS逆引きしてもRcat宅のIPアドレスはわかりません。
中身はHTTPですが、VPNで暗号化された通信です。Rcat宅に到達する
ルーター
家庭用のルーターですね。開いてないポートからは入れません。
そもそもルーターにアクセスするためのIPアドレスを隠ぺいしています。第一防壁FW
サーバー機器内の一般的なファイアウォールです。
VPNのおかげでどこも開いてません。第二防壁WAF
Web Application Firewallの略。SQLインジェクションなんかを検知してブロックする。
DBの改ざんや漏洩防止に貢献する。
サーバーへ到達する
すべてクリアした正規の通信だけが、サーバーのアプリケーション本体にたどり着くことができます。
Rcatサイトが提供するもの
ここでは、Rcatサイトの存在意義について解説します。
データ配布サービス

これまで、GASを使って行っていた配布サイトをこちらのサイトに移行します。
これにより、今までは権限レベルパスワードを得て、Lv2は追加の操作が…といろいろありましたが下記仕様で簡単になっています。
詳しくは利用方法及びデータ配布センターをご確認ください。

ゲスト以上のものは申請してnoteをフォローしてMax30分(深夜を除く)待つだけでパスワードレスでダウンロードが可能になります。
30分待ちがちょっとあれなのでそのうち改善したいですね(アンケート回答でメールが来るのでうまくトリガーできたらいいな)
APIサービス
メンバーシップ向けのサービスです
現在は公開していません
その他情報
アクセス権限に応じて情報にアクセスできるようになります。
旧権限パスワードなどが該当します。

利用方法
ログイン方法
トップページか、配布リンクを踏んだ時に飛ばされるログインページからログインできます。
ログイン申請をしないでログインするとゲスト扱いとなります。
ログイン申請は利用規約同意アンケートがそのまま連動しています。詳しくは利用規約をご確認いただき、そこから回答します。
なお、アンケートの同期は30分おきのため、最大30分の遅延が生じます。
ゲストと正規会員の差は配布センターで解説します。

ログインすると、トップページに該当する権限のメニューが出ます。
ゲストは最小限、メンバーシップの方はメンバー限定メニューだったり、フォロワーの方はフォロワー限定メニューが出るハズ。

一般会員向け(旧Lv1)
ログイン申請済みの方は全員見られる画面です。
旧権限レベル1に相当する情報です。
古いパスワードが必要な場面が残っていることがありますので、そういった情報が開示されています。
ゲストは配布センターのみ表示されます。
フォロワー向け(旧Lv2)
noteのフォロワーかつ、利用規約同意アンケートでnote IDを回答した方がみられる部分です。
旧権限レベル2に相当します。
こちらも古いパスワードが必要な場合に覗いてください。
メンバー向け
noteメンバーシップに参加しており、リストが同期済みの場合に表示されます。フォロワーと同じくnote IDの回答が必須です。
APIなどのメンバー特典のうち、サービスとして提供しているものをここから発信します。

データ配布センター
こちらがメインコンテンツですね。
今までGASで行っていたデータの配布をこちらのサイトに移行します。
移行により、面倒なパスワード取得と入力を解消しました。
キーワードは記事を購入した履歴などを自動で紐づけられないため、まだ現役です…。

作品を選択
今回から、作品の一覧から選ぶことができるようになりました。
一応今まで通りURLに"?name=作品名"がついていると、それが選択される仕組みではありますが、関係ない作品でも一覧から選んでDL可能です。

権限と組み合わせ
作品を選ぶと必要な権限が表示されます。
権限と組み合わせは次のようなものがあります
ゲスト
Googleアカウントでログインした方
有料作品DL専用の措置で、必ずキーワードが必要申請済み
ログイン申請を出したうえでGoogleアカウントでログインした方
キーワードがない作品もDL可能になるフォロワー
ログイン申請でnote連携項目を入力してあるフォロワーの方
一部の無料作品で要求される権限
ゲスト以上
これが最低ランクで、ログイン申請をしていない場合でもDL可能な作品となります。
キーワードの入力が必須となっており、主に有料作品を購入してくれた方は、面倒な申請無しでもDL可能にする措置がゲストです。

金出したなら、利用規約を完全に読み込んでいなくとも、不用意に公開しないだろうという思いがあります。
ログイン申請済み
旧Lv1のことで、申請を出したうえでログインしている方。
無料の情報でもきちんと扱っていただくために、真面目に色々見たうえで申請までしてくれた方が対象です。

フォロワー限定
旧Lv2に相当し、フォローかつ連携が済んでいないとDLエラーになります。
※フォロー検知はMAX30分の遅延があります。早めのフォローをお勧めします。

あまりないですが、キーワード+フォローというのもごくまれにありますので、連携を済ませておくことをお勧めします。
エラーとBAN
GAS時代の過去ログを見ると、なにも理解せずに配布エラーになっても連打するような人もいるようなので、念のため設けた機能です。
まぁ今回からログインしないとそもそも表示されないので、そんな人が現れるとは思ってませんが。
配布エラーを5回出すと警告、10回出すと1週間締め出されます。
よくあるのが…
権限が足りない => 画面よく見て? 連携済んだ?
キーワードが間違っている => 記事買った?
(ごくまれにRcatがミスってるときあります(1回あります…))
システムエラー=> Rcat999が悪いです。緊急連絡フォーム使ってOK
警告はこんな感じ。
連続回数ではなく、ある一定時間にエラーを起こした回数です。
最初のエラー。これが出た時は権限やキーワードを見直しましょう。

何度も繰り返すと警告になります。
出る前に何かおかしいと気付いてほしいです…

もう後がありません!

おしまいです。

BANされると強制ログアウトさせられ、もう一度ログインしようとすると認証エラーになります。
なお、明らかに楽しんでやってるようなものが見られた場合、BAN解除を無期限に設定させてもらいます。

なお、管理者ダッシュボードでRcat999は状況をいつでも確認できます。
アクセス履歴を見てすぐ判断できるので正しく使うことを推奨します。
※プライバシーを考慮しアカウントとIPアドレスが紐づくようなログはとっていません。ログはLeft Joinできないテーブルに格納されています。

誰がBANされているか、一目でわかります

ログインエラーページについて
Googleアカウントでのログインで認証に失敗するとエラーになることがあります。
Googleとの連携エラー
ゲストを許可しているので基本的にはログインできるはずですが、回線の問題などでGoogle認証システムとの連携がうまくいかずエラーになることがごくまれにあります。
少し時間をおいてもう一度試してみてください。
BANされている
配布の時にすでに解説済みですが、BANという要素があります。
配布の自動BANは1週間ですが、私が手動でBANする場合、自由に期間設定(無期限含む)ができます。
まぁこのサイトにログインするまでしてくれる人には、BANされるレベルのことをするような人はいないと思っていますが。
なにせ、企業のと違って規約を読まずにチェックを入れて進むができない仕組みですし。
その他エラー
それ以外に関しては、原因のところに表示されるエラーメッセージで確認してください。
どうしても分からない時は公式サーバーからお問い合わせください。
禁止事項
サイバー攻撃
当たり前ですが禁止です。
やった場合IPアドレスを公開します。
一般的なSQLインジェクションやXSS以外で、下記のような行為もサイバー攻撃とみなします配布センターでエラーを繰り返し起こす行為
入力できないようになっているフォームに無理やり入力して送信する行為
URLパラメータに任意の値を付与して実行する行為
POSTも含みます公式で開示していないAPIやURLに直接アクセスする行為
JSがバックで使っているAPIを解析して再利用する行為が該当します。
明示的に使ってよいと書いてあるAPIだけがコールできます。
API以外に、許可されていない場合はURL直打ちも禁止です。
スクレイピング
スクレイピングするような価値ある情報は乗っけてませんが、負荷の都合で禁止とします。
まぁSPAなので簡単にはスクレイピングできないですが。非表示ページを無理やり表示する行為
基本的に骨組みだけですが、出ないようにしてるのを無理やり出すのは禁止です。
FAQ
よくありそうな質問を勝手に推測して書いておきます。
このサイトに関係あることでしたらコメントで聞けるものとします。
※その際FAQの方に転載することがあります。同意の上コメントください。
アクセスできません/遮断されます
IPアドレス制限で日本以外からのアクセスが遮断されることがあります。
海外のクラウドサービスやGoogleのVPNなどを使っている場合は止めてください。
Chromeだとなぜか勝手にGoogleのVPNでつながってることがあるみたいです。
よくわからない場合は下記サイトをみて、ドメインが自分の契約している回線の事業者かどうか確認しましょう。

アクセスできません - その2
DNSBLというブラックリストにより携帯回線がブロックされていることを確認しました。
セキュリティ上オフにする理由がないので、携帯回線ではなく固定回線を使って下さい。
下記は正規のアクセスですが、DNSBLでブラックリストに載っており蹴られたようです。

サイトのリンクがわかりません
公式サイトトップへのリンクは貼っておりません。
アクセスが必要な時に必要なリンクが出てきます。
ログインできません
正規Googleアカウントですか?ネットワークの状況を確認して再度試してみてください。
なお、正規会員でログインするには事前に利用規約同意アンケートに回答し、ログイン許可申請を行う必要があります。アンケートへのリンクは、利用規約を確実に読んでもらえるように規約内からアクセスできます。
申請したのにゲストになります
申請はリアルタイム同期ではありません。30分おきに同期しているほか、深夜は停止しています。その区間では申請を出しても認識されず、ゲストになります。
12時間以上たっても無理なら異常なのでご連絡ください。
フォローしたのにフォロワー認定されません
上記申請と同じく、タイムラグがあります。時間を空けて試してください。
メンバーシップに加入しているのに認識されていません
メンバーシップはRcatが手動でnote公式機能のCSV出力を行い同期しています。
そのため、毎月初旬の更新日か声をかけていただかないと更新されません。
声かけはメンバー掲示板などがよいでしょう。
セキュリティ事故時の想定被害を教えてください
いうより見てもらった方が早いですかね。
E-R図出しちゃいますね。セキュリティ的に物理名や型は出せませんが。
侵入されてDBが盗まれた場合下記情報が漏洩する可能性があります。

ポイント
個人情報なし
Googleログイン関連はメアドだけです。
利用規約同意アンケートによる関連付けも、連携項目の箇所だけ。他のアンケート内容はそもそも持ってきていないので、漏洩機会がありません。主に公開情報で構成
note関連も、noteの名前がわかればその人のプロフからidわかるわけですし、そういう意味では漏洩したところでという感じ。LeftJoinできないログ
アクセスログにはリレーションがありません。
ユーザー名とIPアドレスの紐づけは不可となっています。唯一メアドとの関連だけちょっと懸念ありっちゃーあり
アカウント整備に必要なので仕方ないですが、回答いただいている方はメアドとnote IDが紐づいています。このセットが漏洩するととてもまずい方はRcatのセキュリティ対策を信用するか遠慮していただくかのどちらか。パスワードは未使用
このWEBサーバーのテンプレートではGoogleでログインを使っていなかった名残で、ユーザー名とパスワードという欄がありますが、現在は使ってません。
不具合報告
アクセスに関する不具合
下記フォームからアクセスに関する不具合報告を受け付けています。
WAFが強力なので正規のアクセスも蹴ってしまうことがあるようなので、そういう場合はご連絡ください。
まとめ
今回はデータ配布などを行う専用サイトの解説(開設)と紹介を行いました。
今どきこういうのはクラウドなんでしょうけど、アクセス数がわからないのと、DB使うのって結構コスト的なリスクあるんですよね。
なら余ってる機器をVPNした方がいいという結論でこの構成です。
本気で機器のメンテがだるくなってきたらクラウドに移行するかもしれませんがw
ひとまずオンプレで様子を見ようかと思います。
それではまたお会いしましょう。
リンク集
感想投稿フォーム
コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け
Pythonのインストール方法
LoggingBOTの導入方法
ミニPCにLinuxをインストール
MySQLのインストール&初期設定(Windows)
いいなと思ったら応援しよう!
情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。