コンテンツにスキップ

APIを介してトークンを作成する

APIを介して新しいAPIトークンを動的に生成します。これを行う前に、Cloudflareダッシュボードで後続のトークンを作成できるAPIトークンを作成する必要があります。

初期トークンの生成

APIを介してトークンを作成する前に、Cloudflareダッシュボードを介して初期トークンを生成する必要があります。

推奨事項

Cloudflareは、このテンプレートを使用する際にトークンに他の権限を付与しないことを強く推奨します。新しいトークンを保護してください。なぜなら、それはユーザーのリソースにアクセスできるトークンを作成できるからです。

Cloudflareは、トークンが侵害された場合の悪用の可能性を減らすために、クライアントIPアドレスフィルタリングやTTLを介してトークンの使用を制限することも推奨しています。詳細については、トークンの使用を制限するを参照してください。

APIを使用してAPIトークンを作成する

他のトークンを作成できるAPIトークンを作成したら、APIでそれを使用できます。詳細については、APIスキーマドキュメントを参照してください。

トークンを作成するには:

  1. ポリシーを定義します。
  2. 制限を定義します。
  3. トークンを作成します。

1. アクセスポリシーを定義する

アクセスポリシーは、トークンがどのリソースに対して操作できるか、またそのリソースに対してどのような権限を持つかを定義します。このプロセスは、Cloudflareダッシュボードでトークンを作成する方法に似ています。

各トークンには複数のポリシーを含めることができます。

[
{
"id": "f267e341f3dd4697bd3b9f71dd96247f",
"effect": "allow",
"resources": {
"com.cloudflare.api.account.zone.eb78d65290b24279ba6f44721b3ea3c4": "*",
"com.cloudflare.api.account.zone.22b1de5f1c0e4b3ea97bb1e963b06a43": "*"
},
"permission_groups": [
{
"id": "c8fed203ed3043cba015a93ad1616f1f",
"name": "Zone Read"
},
{
"id": "82e64a83756745bbbb1c9c2701bf816b",
"name": "DNS Read"
}
]
}
]
フィールド説明
id作成後に生成されるポリシーの一意の読み取り専用識別子。
effectこのポリシーがアクセスを許可するか拒否するかを定義します。ポリシーを1つだけ作成する場合は、allowを使用します。ポリシーの評価順序は次のとおりです:1. 明示的なDENYポリシー; 2. 明示的なALLOWポリシー; 3. 暗黙のDENY ALL
resources設定が許可されているリソースを定義します。
permission_groupsポリシーが含まれるリソースに付与する権限を定義します。

リソース

APIトークンポリシーは、3つのリソースタイプをサポートしています:UserAccount、およびZone

アカウント

トークンポリシーに単一のアカウントまたはすべてのアカウントを含めます。

  • 単一のアカウントは、次のように示されます:"com.cloudflare.api.account.<ACCOUNT_ID>": "*"
  • すべてのアカウントは、次のように示されます:"com.cloudflare.api.account.*": "*"
ゾーン

トークンポリシーに単一のゾーンアカウント内のすべてのゾーン、またはすべてのアカウント内のすべてのゾーンを含めます。

  • 単一のゾーンは、次のように示されます:"com.cloudflare.api.account.zone.<ZONE_ID>": "*"
  • アカウント内のすべてのゾーンは、次のように示されます:"com.cloudflare.api.account.<ACCOUNT_ID>": {"com.cloudflare.api.account.zone.*": "*"}
  • すべてのアカウント内のすべてのゾーンは、次のように示されます:"com.cloudflare.api.account.zone.*": "*"
ユーザー

ユーザーリソースについては、自分自身のみを参照できます。これは次のように示されます:"com.cloudflare.api.user.<USER_TAG>": "*"

権限グループ

適用すべき権限グループを決定します。権限グループの完全なリストは、ドキュメントで確認するか、APIを介して権限グループを取得してください。ポリシーには、権限グループのidを渡すだけで済みます。権限グループは特定のリソースにスコープされているため、ポリシー内の権限グループは、そのスコープに応じたリソースタイプにのみ適用されます。

2. 制限を定義する

トークンの使用方法に関する制限を設定します。APIトークンは、クライアントIPアドレスフィルタリングやTTLの制限を許可します。詳細については、トークンの使用を制限するを参照してください。

TTLを定義する際には、トークンがアクティブになる時間をnot_beforeで、トークンが期限切れになる時間をexpires_onで設定できます。これらのフィールドは、次の形式のUTCタイムスタンプを取ります:"2018-07-01T05:20:00Z"

クライアントIPアドレスフィルタでトークンの使用を制限するには、次のオブジェクトを使用します:

{
"request.ip": {
"in": [
"199.27.128.0/21",
"2400:cb00::/32"
],
"not_in": [
"199.27.128.0/21",
"2400:cb00::/32"
]
}
}

inおよびnot_inオブジェクト内の各パラメータは、CIDR表記でなければなりません。たとえば、単一のIPアドレスを指定するには、192.168.0.1/32を使用します。

3. トークンを作成する

前述の情報を組み合わせて、次の例のようにトークンを作成します:

Terminal window
curl "https://api.cloudflare.com/client/v4/user/tokens" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "readonly token",
"policies": [
{
"effect": "allow",
"resources": {
"com.cloudflare.api.account.zone.eb78d65290b24279ba6f44721b3ea3c4": "*",
"com.cloudflare.api.account.zone.22b1de5f1c0e4b3ea97bb1e963b06a43": "*"
},
"permission_groups": [
{
"id": "c8fed203ed3043cba015a93ad1616f1f",
"name": "Zone Read"
},
{
"id": "82e64a83756745bbbb1c9c2701bf816b",
"name": "DNS Read"
}
]
}
],
"not_before": "2020-04-01T05:20:00Z",
"expires_on": "2020-04-10T00:00:00Z",
"condition": {
"request.ip": {
"in": [
"199.27.128.0/21",
"2400:cb00::/32"
],
"not_in": [
"199.27.128.1/32"
]
}
}
}'