APIを介してトークンを作成する
APIを介して新しいAPIトークンを動的に生成します。これを行う前に、Cloudflareダッシュボードで後続のトークンを作成できるAPIトークンを作成する必要があります。
APIを介してトークンを作成する前に、Cloudflareダッシュボードを介して初期トークンを生成する必要があります。
Cloudflareは、このテンプレートを使用する際にトークンに他の権限を付与しないことを強く推奨します。新しいトークンを保護してください。なぜなら、それはユーザーのリソースにアクセスできるトークンを作成できるからです。
Cloudflareは、トークンが侵害された場合の悪用の可能性を減らすために、クライアントIPアドレスフィルタリングやTTLを介してトークンの使用を制限することも推奨しています。詳細については、トークンの使用を制限するを参照してください。
他のトークンを作成できるAPIトークンを作成したら、APIでそれを使用できます。詳細については、APIスキーマドキュメントを参照してください。
トークンを作成するには:
- ポリシーを定義します。
- 制限を定義します。
- トークンを作成します。
アクセスポリシーは、トークンがどのリソースに対して操作できるか、またそのリソースに対してどのような権限を持つかを定義します。このプロセスは、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つのリソースタイプをサポートしています:User、Account、および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を渡すだけで済みます。権限グループは特定のリソースにスコープされているため、ポリシー内の権限グループは、そのスコープに応じたリソースタイプにのみ適用されます。
トークンの使用方法に関する制限を設定します。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を使用します。
前述の情報を組み合わせて、次の例のようにトークンを作成します:
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" ] } }}'