メインコンテンツまでスキップ

エンドポイント認証

Zero TrustではGitHubのOAuth機能を利用して認証を設けることができます。OAuthのセットアップをした後、Access GroupsにGitHubを利用する設定を追加します。

IncludeはOR条件、RequireはAND条件です。以下の書き方になると「Emailの最後が特定のドメイン名でかつ、GitHubのログイン認証であったとき」という条件になります。

Allow access group

このままではGitHub ActionsやXcode CloudなどのCI/CDサービスから認証することが必要になります。Xcode CloudではCloneするときにオプションを指定できないため認証は通りません。これを回避するためにIP Rangeをもとに認証を回避させます。

Bypass Xcode Cloud

最終的にポリシーは以下のような感じになりました。

Policies

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>