Cloudflare の cloudflared コマンドラインツールを使うと、Cloudflare Access で保護されたエンドポイントとやり取りできます。保護されたアプリケーションの API にも cloudflared でアクセスできます。
これらの手順は、サービスを API に対して常時実行するための設定ではありません。この例のトークンはユーザー ID に紐づき、エンドユーザーがコマンドラインツールから API とやり取りする場合だけを想定しています。
この手順で扱う内容:
- CLI から Cloudflare Access で保護されたリソースへ接続する
所要時間:
30 分
cloudflared をインストール したあと、Cloudflare Access の アプリケーション トークン を取得できます。この手順では、保護された API の代わりにドメイン example.com を使います。
-
トークンを生成するには、次のコマンドを実行します。
cloudflared access login https://example.comこのコマンドで、
cloudflaredは Web アプリケーションへアクセスするときと同じ Access ログインページをブラウザーで開きます。 -
ID プロバイダーを選び、ログインします。
ブラウザーが開かない場合は、コマンドラインに自動表示される一意の URL を使えます。
- 認証に成功すると、ブラウザーは暗号化した転送でトークンを
cloudflaredに返し、保存します。
トークンの有効期間は、Access 管理者が設定した セッション期間 です。
トークンを取得したあと、保護された API にアクセスできます。cloudflared コマンドラインツールには、curl 経由でデータを転送するラッパーが含まれます。URL 構文を使います(詳細は curl ↗ の GitHub プロジェクトを参照)。ラッパーは、curl リクエストに token というクエリ引数としてトークンを挿入します。次のように呼び出します。
cloudflared access curl http://example.com任意の Unix ツールのリクエストにトークンを含めるには、cloudflared の put コマンドも使えます。
ほかの利用可能なコマンドは、この先を参照してください。
login コマンドは、Access 配下のアプリケーション向けログインフローを開始します。
cloudflared access login http://example.comcurl コマンドはクライアントラッパーを呼び出し、リクエストにトークンを自動で含めます。
cloudflared access curl http://example.comtoken コマンドは、そのアプリケーションにスコープされたトークンを取得し、ほかのコマンドラインツールで使えるようにします。
cloudflared access token -app=http://example.com保護されたアプリケーションにアクセスするスクリプトでは、トークンを環境変数に保存すると簡潔に書けます。
トークンを環境変数にする手順は次のとおりです。
-
次のコマンドを実行し、トークンをシェル環境へエクスポートします。
export TOKEN=$(cloudflared access token -app=http://example.com) -
次のコマンドで、トークンが保存されたことを確認します。
echo $TOKEN
環境へエクスポートしたあと、スクリプト内で Cloudflare Access のリクエストヘッダーに変数を付け、保護されたエンドポイントへアクセスします。次の例を参照してください。
curl -H "cf-access-token: $TOKEN" https://example.com/rest/api/2/item/foo-123