Cloudflare Access: サービストークンにタグを付け、タグで認可する(Service Token Tag)
Access のサービストークンに key-value タグ(例 environment: production)を付けられるようになり、Service Auth ポリシーで「このタグを持つ有効なトークン」をまとめて許可できる。
何が楽になる?
CI、バッチ、他社サービスなど機械からのアクセス用にサービストークンを何本も発行していると、ポリシーの include にトークンを 1 本ずつ並べることになり、追加・ローテーションのたびにポリシーを直す必要があった。タグで許可しておけば、新しいトークンに同じタグを付けるだけで通るようになり、ポリシーは触らずに済む。
手順
- ダッシュボードかサービストークン API で、トークンの作成・更新時にタグを付ける。1 本あたり最大 5 個(
environment: production、team: paymentsなど)。 - Service Tokens ページではタグで検索・絞り込みができる。タグは Resource Tagging にも出るので、他のタグ付きリソースと一緒に問い合わせられる。
- アプリのポリシーで Service Token Tag セレクタを使う。key と value の完全一致で、有効なトークンにマッチする。
API で作るポリシーの例(本番タグのトークンだけ受け付ける):
json
{
"name": "Production service tokens",
"decision": "non_identity",
"include": [
{ "service_token_tag": { "key": "environment", "value": "production" } }
]
}decision は人の ID を使わない Service Auth なので non_identity。
注意点
- タグを付けられる人=そのアプリに通るトークンを作れる人になる。トークンの作成・タグ編集の権限はポリシー編集と同じくらい絞る(ここは筆者の補足)。
- 完全一致なので、
productionとprodのような表記揺れは別物。タグの命名を先に決めておく。 - マッチするのは有効なトークンだけ。期限切れや失効したトークンはタグがあっても通らない。