API を使用して ACL を作成・変更する

アクセス制御リスト (ACL) を使用して、Varnishお客様のサービス内の URL へのアクセスを許可または制限するために使用するアクセス権限リストを保存することができます。Fastly API を使用して、ACL をプログラムで追加、削除、更新することができます。

API を使用して ACL コンテナを作成・変更する

Fastly API を使用して、ACL エントリーが配置される ACL コンテナを作成、表示、または削除することができます。

ACL コンテナの属性

エッジで使用される ACL のコンテナには以下の属性があります。

  • Service ID ACL が関連付けられている Fastly サービスの ID。
  • Service Version Number ACL が関連付けられているサービスのバージョン番号。なお、ACL はその後にクローンされるサービスバージョンにも引き続き関連付けられます。
  • ACL Name ACL の名前。
  • ACL ID ACL の一意の識別子。

ACL コンテナの作成

ACL の使用を開始するには、ロックされておらず、まだ有効化されていないバージョンのサービス内に、空のコンテナを作成する必要があります。ターミナルアプリケーションで以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" -X POST https://api.fastly.com/service/<service_id>/version/<service_version_number>/acl -d name=my_acl

レスポンスは以下のようになります。

1
2
3
4
5
6
7
8
{
    "id": "<service_version_number>",
    "name": "my_acl",
    "service_id": "<service_id>",
    "version": "1",
    "created_at": "2016-04-14 21:23:21",
    "updated_at": "2016-04-14 21:23:21"
}

空の ACL コンテナに関連付けた新バージョンのサービスを必ず有効にしてください。

ACL コンテナの表示

あるサービスの特定のバージョンに関連付けられた単一の ACL (この例では my_acl) に関する情報を確認するには、ターミナルアプリケーションで以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" https://api.fastly.com/service/<service_id>/version/<service_version_number>/acl/my_acl

レスポンスは以下のようになります。

1
2
3
4
5
6
7
8
{
    "id": "<acl_id>",
    "name": "my_acl",
    "service_id": "<service_id>",
    "version": "<service_version_number>",
    "created_at": "2016-04-14 21:23:21",
    "updated_at": "2016-04-14 21:23:21"
}

特定のバージョンのサービスに接続されたすべての ACL コンテナのリストを表示するには、ターミナルアプリケーションで以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" https://api.fastly.com/service/<service_id>/version/<service_version_number>/acl

レスポンスは以下のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[
    {
        "id": "<acl_1_id>",
        "name": "my_new_acl",
        "service_id": "<service_id>",
        "version": "<service_version_number>",
        "created_at": "2016-04-14 21:23:21",
        "updated_at": "2016-04-15 17:23:09"
},
    {
        "id": "<acl_2_id>",
        "name": "my_other_acl",
        "service_id": "<service_id>",
        "version": "<service_version_number>",
        "created_at": "2016-04-14 21:23:21",
        "updated_at": "2016-04-15 17:23:09"
    }
]

ACL コンテナの削除

ACL を削除すると、その ACL とそれに関連するすべてのエントリーが削除されます。ACL (この例では my_new_acl) を削除するには、ターミナルアプリケーションで以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" -X DELETE https://api.fastly.com/service/<service_id>/version/<service_version_number>/acl/my_new_acl

レスポンスは以下のようになります。

1
2
3
{
  "status":"ok"
}

API を使用して ACL エントリーを作成・変更する

ACL エントリーのパラメーター

ACL エントリーには以下のパラメーターがあります。

  • service_id:ACL が関連付けられている Fastly サービスの ID。
  • acl_id:ACL の ID。
  • id:ACL エントリーの ID。
  • ip:ACL エントリーに含まれる IP アドレス。
  • subnet:任意。1つの ACL エントリーに含まれる IP アドレスの範囲。
  • negated:true に設定されている場合、このエントリーは、リストの否定されていないエントリーの例外として処理されます。論理否定は順序にかかわらず否定されていないエントリーを上書きします。有効な値は truefalse です。デフォルトでは false に設定されています。
  • comment:任意。ACL エントリーを作成した理由を示す説明的なコメント。

ACL エントリーの作成

既存の ACL にエントリーを追加するには、ターミナルアプリケーションで以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" -X POST https://api.fastly.com/service/<service_id>/acl/<acl_id>/entry -d 'ip=127.0.0.1&subnet=16&negated=0&comment=test'

レスポンスは以下のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
{
    "acl_id": "<acl_id>",
    "comment": "test",
    "created_at": "2016-04-22T19:14:02+00:00",
    "deleted_at": null,
    "id": "<acl_entry_id>",
    "ip": "127.0.0.1",
    "negated": "0",
    "service_id": "<service_id>",
    "subnet": 16,
    "updated_at": "2016-04-22T19:14:02+00:00"
}

ACL エントリーの表示

単一の ACL エントリーに関連する情報を表示するには、ターミナルアプリケーションで以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" -H 'Content-Type: application/vnd.api+json' https://api.fastly.com/service/<service_id>/acl/<acl_id>/entry/<acl_entry_id>

レスポンスは以下のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
{
    "acl_id": "<acl_id>",
    "comment": "",
    "created_at": "2016-04-22T19:18:42+00:00",
    "deleted_at": null,
    "id": "<acl_entry_id>",
    "ip": "127.0.0.5",
    "negated": "0",
    "service_id": "<service_id>",
    "subnet": 16,
    "updated_at": "2016-04-22T19:18:42+00:00"
}

特定の ACL に追加されているすべての ACL エントリーを一覧表示するには、ターミナルアプリケーションで以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" https://api.fastly.com/service/<service_id>/acl/<acl_id>/entries

レスポンスは以下のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[
    {
        "acl_id": "<acl_id>",
        "comment": "",
        "created_at": "2016-04-22T19:13:03+00:00",
        "deleted_at": null,
        "id": "<acl_entry_1_id>",
        "ip": "127.0.0.1",
        "negated": "0",
        "service_id": "<service_id>",
        "subnet": 16,
        "updated_at": "2016-04-22T19:13:03+00:00"
    },
    {
        "acl_id": "<acl_id>",
        "comment": "",
        "created_at": "2016-04-22T19:14:02+00:00",
        "deleted_at": null,
        "id": "<acl_entry_2_id>",
        "ip": "127.0.0.2",
        "negated": "0",
        "service_id": "<service_id>",
        "subnet": 16,
        "updated_at": "2016-04-22T19:14:02+00:00"
    }
]

ACL エントリーの更新

ACL エントリーの更新には、単一の ACL エントリーを更新する方法と、複数の ACL エントリーを同時に更新する方法の2つがあります。

単一の ACL エントリーの更新

既存の単一の ACL エントリーを更新するには、ターミナルアプリケーションで以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" -X PATCH https://api.fastly.com/service/<service_id>/acl/<acl_id>/entry/<acl_entry_id> -d 'ip=127.0.0.2&subnet=32&negated=0&comment=allow'

レスポンスは以下のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
{
    "acl_id": "<acl_id>",
    "comment": "allow",
    "created_at": "2016-04-22T19:18:42+00:00",
    "deleted_at": null,
    "id": "<acl_entry_id>",
    "ip": "127.0.0.2",
    "negated": "0",
    "service_id": "<service_id>",
    "subnet": 32,
    "updated_at": "2016-04-22T19:18:42+00:00"
}

複数の ACL エントリーの更新

複数の ACL エントリーを同時に更新することも可能です。API コールに変更点の entries 配列を含め、各変更ごとに操作 (op) パラメーターを渡します。op設定可能な の値は createupdatedelete です。

複数の ACL エントリーを同時に更新するには、ターミナルアプリケーションで以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" -H "Content-type: application/json" -X PATCH https://api.fastly.com/service/<service_id>/acl/<acl_id>/entries -d '{"entries":[{"op": "create", "ip": "192.168.0.1","subnet": "8"},{"op": "update", "id": "<acl_entry_id>", "ip": "192.168.0.2", "subnet": "16"},{"op": "delete", "id": "<acl_entry_id>"}]}'

レスポンスは以下のようになります。

1
2
3
{
  "status":"ok"
}

ACL エントリーの削除

ACL エントリーを永久に削除するには、ターミナルアプリケーションで以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" -X DELETE https://api.fastly.com/service/<service_id>/acl/<acl_id>/entry/<acl_entry_id>

レスポンスは以下のようになります。

1
2
3
{
  "status":"ok"
}
Back to Top