アプリ側を変えずに、Cloudflare Access を使ってアプリケーションに認証機能を実装する
はじめに
OCI に作業管理用の Redmine を構築していて、現在は Cloudflare の IP アドレス制限でアクセスの制御を行っています。
Cloudflare がリバース プロキシのように機能していて、そこでセキュリティ ルールを有効化している。
この場合、例えば「Global IPが変わるとアクセス出来なくなる」とか、「自宅内の端末が乗っ取られたらアクセス出来ちゃう」みたいなリスクが発生するかなと思います。
なので今回、IP アドレスによる制限じゃなくて、本人性を認証してアクセスを許可するような Zero Trust の構造に変えようと思いました。
実施したこと
下記の公開情報を参考に、アプリケーションを Cloudflare に作成しました。
コンソール画面から「Zero Trust - Access コントロール - アプリケーション」にアクセスし、新しくアプリケーションを作成しただけです。
アプリケーションの作成方法も単純で、宛先のパブリック ホスト名を指定して、Access ポリシーを追加したのみです。
Access ポリシーは下記のように指定しています。自分だけしかアクセスしませんし。
ログイン方法を Cloudflare にして、AND 条件で自分のメール アドレスを指定。それを許可しています。

あとは、元々指定していた IP アドレスのセキュリティ ルールを無効化。
試す
自分が作成した Redmine にアクセス。
すると、下記のように Cloudflare のログインページが表示された。

自分のアカウントでログイン、無事にアクセス出来ました。

当たり前ですが、自分で用意した Web アプリケーションをパブリックに公開している場合は、そのエンドポイントに対する制限も必要です。
自分は Cloudflare からのアクセスのみを許可にしました。