エンドポイント認証
Zero TrustではGitHubのOAuth機能を利用して認証を設けることができます。OAuthのセットアップをした後、Access GroupsにGitHubを利用する設定を追加します。
IncludeはOR条件、RequireはAND条件です。以下の書き方になると「Emailの最後が特定のドメイン名でかつ、GitHubのログイン認証であったとき」という条件になります。
このままではGitHub ActionsやXcode CloudなどのCI/CDサービスから認証することが必要になります。Xcode CloudではCloneするときにオプションを指定できないため認証は通りません。これを回避するためにIP Rangeをもとに認証を回避させます。
最終的にポリシーは以下のような感じになりました。
CLI操作
リポジトリのルートに.lfsconfig
ファイルを追加。usernameとrepositorynameは適当でも良い。一意になるように設定する。
[lfs]
url = https://my-lfs-server.example.com/<user_name>/<repository_name>
セットアップ
$ brew install cloudflare/cloudflare/cloudflared
$ brew install git-lfs
$ git lfs install
トークンの内部更新
$ cloudflared access login my-lfs-server.example.com
pre-pushのhooksに設定
url="$(git lfs env | grep Endpoint | sed s/Endpoint=//g | sed s/' (auth=none)'//g)"
TOKEN=$(cloudflared access token -app=my-lfs-server.example.com)
git config --unset-all http.$url.extraheader
git config --add "http.$url.extraHeader" "cf-access-token: $TOKEN"
新しくCloneするとき
git clone --config "http.extraHeader"="cf-access-token: $(cloudflared access token -app=my-lfs-server.example.com)" <repo-url>