CloudflareとmdBookとIdPでMarkdownドキュメントをサクッと限定公開する
こんにちは、@key60228です。
ビジネスメンバーを含めた社内の一部の人向けにMarkdownでサクッとドキュメントを公開したいな〜〜なんか良い方法ないかな〜〜と考えながらCloudflareコンソールポチポチしてたら実現出来ちゃったので記事に残します。
やりたいこと
- ドキュメントをgit管理下におきたい (≒ Markdownで書きたい)
- ドキュメントをどこかにホスティングしたい
- ホスティングしたドキュメントを閲覧できる人を制限したい (閲覧する人の属性はDeveloper、ML/DS、その他ビジネスメンバーと幅広い)
How to
ドキュメントの準備
-
User Guideを参照に、mdBookをインストールします。
-
mdbook init ${project name}でmdBookプロジェクトを作成します。 -
Markdownでドキュメントを書きます。 (これも詳細はUser Guideを参照してください)
-
mdbook buildでmdBookプロジェクトをビルドします。 -
終わり。簡単ですね。
Cloudflare Pagesの作成
- コンソールから
Use direct uploadなPages Projectを作成します。

- 一旦適当なアセットをアップロードしてデプロイします。

- 終わり。簡単ですね。

Cloudflare Zero Trustの設定
- コンソールからZero Trust DashboardのAccessを開き、IdPを追加します。

- ここは連携したいIdPに合わせて設定すればOKですが、今回はサイバーエージェントの社内認証/認可基盤であるPERMANとOIDCで連携させたいため、OpenID Connectにします。

- IdPの設定を行います。この辺りは各IdPや認証プロトコルによって異なるため割愛します。

- Zero Trust Dashboardに戻り、AccessのPolicyを作成します。

-
Login MethodsSelectorのruleを追加し、先ほど設定したIdPをValueに指定します。

- 再度Dashboardに戻り、Applicationを作成します。今回は
Self-hostedにします。

- 作成したCloudflare PagesのDomainをPublic hostnameに指定し、先ほど作成したPolicyを選択します。Login methodsはPERMANのみ許可します。


- 先ほど作成したCloudflare Pagesのドメインにアクセスしてみると、サインインが求められるようになっているのが分かります。

- 最後にCloudflare Pagesに本来ホスティングしたいmdBookプロジェクトをアップロードして完了です。ほんのちょっとだけ手間でしたね。

考えたけど要件を満たさなかったこと
GitHub PagesのPrivate Pages
最初に考えましたが、今回閲覧させたい人の中にはGitHubアカウントを持っていない人たちも含まれているため不採用としました。
各クラウドベンダーのStorageなど
S3&CloudFront&Lambda@Edgeなどでも実現可能かとは考えましたが、やりたいことに対してやや大袈裟感が否めず見送り。
One-time PIN
Cloudflare Zero TrustのOne-time PINだけでも限定公開は可能ですが、閲覧可能ユーザーの管理をCloudflareではなくIdP側に集約したかったためカスタムAccess設定を行うことにしました。
その他
VercelやNetlifyなども一瞬考えましたが、既にプロダクトでもCloudflareを使用していることから、今回はCloudflareにしました。
終わりに
今回はジャスト検証だったのでPages&コンソールポチポチ&手動アップロードな記事になってしまいましたが、Workersでの再立ち上げ、CI/CDの整備、IaC化まで出来たらまた記事書こうと思います (2回目)。
宣伝
AI Shiftではエンジニアの採用に力を入れています!
少しでも興味を持っていただけましたら、カジュアル面談でお話しませんか?
(オンライン・19時以降の面談も可能です!)
【面談フォームはこちら】
Discussion