Auth0のACL機能で特定IPのアクセスをブロックしてみた

Auth0のACL機能で特定IPのアクセスをブロックしてみた

2025.09.20

はじめに

最近Auth0に新しいACL(access-control-list)機能ができました。
以前、ほとんどのアクセス制限はアプリ側の設定やログインフローのActionsで行われましたが、Auth0 ACL機能では、より範囲広く、簡単に細かく設定できるようになっています。

ただ、現時点(202509)はダッシュボード上、ACLの一覧(ルール名、ID)とON/OFF切替機能だけになっているため、ACLの作成や編集などはManagement APIで行う必要があります。

(202509)注意:Auth0のACL機能の有効範囲は Management APIそれ以外のAuthentication関連の部分ですAuth0テナントのダッシュボードへのアクセス周りは関係ありません。(Auth0テナントへの認証はAuth0公式側が管理メカニズムです)

手順

全体の流れ

  • M2Mアプリ作成
  • 「ACL作成スクリプト」作成
  • 設定ファイル作成
  • 環境変数設定
  • 「ACL作成スクリプト」を実行
  • 動作確認
  • (任意)ACLルールを無効にする

M2Mの作成とAccess Tokenの取得

  1. Application画面のCreate Applicationでアプリの作成画面い入り、アプリ名を入力する
  2. 全ての権限を付与し、Authorizeボタンを押すと、アプリが作成される
  3. Quick Start 画面に入る
  4. Get Access TokenボタンでM2MのAccess Tokenを取得し、メモして置く

Screenshot 2025-09-19 at 9.14.10 PM

Screenshot 2025-09-19 at 9.14.17 PM

Screenshot 2025-09-19 at 9.14.47 PM

Screenshot 2025-09-19 at 9.15.19 PM

ACL作成スクリプト:create-acl.sh

以下のコードで create-acl.sh というスクリプトを作成します。
(参考:https://auth0.com/docs/api/management/v2/network-acls/post-network-acls)

			
			# Set default JSON file if not provided
JSON_FILE=${1:-"tenant-acl.json"}

# Check if JSON file exists
if [ ! -f "$JSON_FILE" ]; then
    echo "Error: JSON file '$JSON_FILE' not found"
    echo "Usage: ./create-acl.sh [json-file]"
    echo "Example: ./create-acl.sh tenant-acl.json"
    exit 1
fi

curl -L -g -X POST "https://$AUTH0_TENANT/api/v2/network-acls" \
    -H "Authorization: Bearer $AUTH0_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d @"$JSON_FILE"

		

ACLルール設定ファイル:tenant-acl.json

以下の内容で tenant-acl.json という設定ファイルを作成します。
{YOUR-IP-ADDRESS}の部分は端末のIPで書き換えてください。

			
			{
  "description": "inital-tenant-acl",
  "active": true,
  "priority": 1,
  "rule": {
    "action": {
      "block": true
    },
    "not_match": {
      "ipv4_cidrs": [
        "{YOUR-IP-ADDRESS}"
      ]
    },
    "scope": "tenant"
  }
}

		

このルールを簡単に説明すると:

  • ルールの名前(description):inital-tenant-acl
  • ルールの有効状態(active):true(有効)
  • ルールの優先順位(priority):1(1、2、3...順でチェックされます)
  • パターンと一致しない場合(not_match ipv4_cidrs)はブロック(block:true)します。
  • 有効範囲(scope):tenant(management + authentication)

スクリプトの実行前の環境変数設定

ターミナルに export コマンドで

  • AUTH0_TENANT:Auth0テナントのドメイン
  • AUTH0_ACCESS_TOKEN:先程メモした M2MのAccess Token
    を設定します。
			
			export AUTH0_TENANT=your-tenant.auth0.com
export AUTH0_ACCESS_TOKEN=your_access_token

		

スクリプト実行

以下のコマンドでスクリプトを実行します。

			
			./create-acl.sh tenant-acl.json

		

成功したら、こういうレスポンスが返ってきます。

			
			{"description":"inital-tenant-acl","active":true,"priority":1,"rule":{"scope":"tenant","action":{"block":true},"not_match":{"ipv4_cidrs":["13.231.60.144"]}},"created_at":"2025-09-19T14:29:42.904Z","updated_at":"2025-09-19T14:29:42.904Z","id":"acl_wnh21sgAmhMcADDmaTroNp"}%                       

		

動作確認

サンプリアプリを起動します。(参考:https://auth0.com/docs/quickstart/spa/react/interactive)

そして、ログインしようとすると、Universal Login画面にも遷移できず、Access Denied画面が表示されます。

Screenshot 2025-09-20 at 12.38.28 AM

(任意)ACLルールを無効にする

Management APIでACLルールを変更することができますが、Auth0ダッシュボードのSecurity -> Access Control画面でも、ACLルールのON/OFF切替ができます。

先程作成したACLルールをDisableにし、反映されるまで少し待てば、ログイン画面には再度入れるようになります。

Screenshot 2025-09-19 at 8.59.48 PM

Screenshot 2025-09-19 at 11.56.01 PM

Screenshot 2025-09-20 at 12.40.21 AM

以上

この記事をシェアする

FacebookHatena blogX

関連記事