← Cloudflare Fundamentals / fundamentals / api / how-to
Vytváření tokenů přes API
Nové API tokeny můžete generovat za běhu přímo přes API. Než to půjde, musíte v Cloudflare dashboardu vytvořit API token, který umí vytvářet další tokeny.
Generování počátečního tokenu
Než začnete používat API, musíte vygenerovat počáteční token prostřednictvím dashboardu Cloudflare. Potřebné oprávnění závisí na dané operaci API. Chcete-li uživatelům udělit přístup k účtu jako členům, vytvořte token s Účet > Nastavení účtu > Úprava. Chcete-li vytvořit API tokeny vlastněné účtem, vytvořte token s Účet > API tokeny účtu > Úprava. Chcete-li vytvořit API tokeny vlastněné uživatelem, použijte Vytvoření dalších tokenů šablona.
Doporučení
Při použití Vytvoření dalších tokenů šablony Cloudflare důrazně doporučuje, abyste tokenu neudělovali žádná další oprávnění. Nový token pečlivě chraňte, protože jím lze vytvářet tokeny s přístupem ke kterýmkoli prostředkům uživatele.
Cloudflare také doporučuje omezit použití tokenu filtrováním podle IP adresy klienta nebo pomocí TTL, aby se snížilo riziko zneužití v případě prozrazení tokenu. Přečtěte si Omezení použití tokenu s dalšími informacemi.
Vytváření API tokenů pomocí API
Pro použití s API si můžete vytvořit token vlastněný uživatelem nebo token vlastněný účtem. Viz token vlastněný uživatelem nebo token ve vlastnictví účtu Další informace najdete v dokumentaci schématu API.
Chcete-li vytvořit token:
- Definujte zásadu.
- Definujte omezení.
- Vytvořte token.
1. Definujte zásadu Access
Zásada Access definuje, na které prostředky může token působit a jaká oprávnění k nim má. Tento postup je podobný tomu, jak vytvořit tokeny v Cloudflare dashboardu.
Každý token může obsahovat více politik.
[
{
"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"
}
]
}
]| Pole | Popis |
|---|---|
id |
Jedinečný identifikátor zásady pouze pro čtení, který se vygeneruje po jejím vytvoření. |
effect |
Určuje, zda tato zásada přístup povoluje, nebo zamítá. Pokud vytváříte pouze jednu zásadu, použijte allow. Pořadí vyhodnocování zásad je následující: 1. Explicitní DENY Zásady; 2. Explicitní ALLOW Zásady; 3. Implicitní DENY ALL. |
resources |
Definuje, které prostředky lze konfigurovat. |
permission_groups |
Definuje, jaká oprávnění zásada uděluje zahrnutým prostředkům. |
Zdroje
Zásady API tokenů podporují tři typy prostředků: User, Account, a Zone.
Účet
Do zásady tokenu zahrňte jeden účet, nebo všechny účty.
- jeden účet se označuje jako:
"com.cloudflare.api.account.<ACCOUNT_ID>": "*". - Všechny účty se označuje jako:
"com.cloudflare.api.account.*": "*"
Zóna
Zahrňte jedna zóna, všechny zóny v účtu, nebo všechny zóny ve všech účtech v zásadě tokenu.
- jedna zóna se označuje jako:
"com.cloudflare.api.account.zone.<ZONE_ID>": "*" - Všechny zóny v účtu se označují takto:
"com.cloudflare.api.account.<ACCOUNT_ID>": {"com.cloudflare.api.account.zone.*": "*"} - Všechny zóny ve všech účtech se označuje jako:
"com.cloudflare.api.account.zone.*": "*"
Uživatel
U uživatelských prostředků můžete odkazovat pouze sami na sebe, což se označuje takto:"com.cloudflare.api.user.<USER_TAG>": "*"
Skupiny oprávnění
Přidejte do tokenu API skupiny oprávnění zadáním jejich id hodnot. Doporučujeme použít id jako klíč pro interakci s API Cloudflare; oprávnění name je pouze kosmetické a může se změnit. Skupiny oprávnění jsou vázané na konkrétní prostředky (uživatel, účet nebo zóna), takže skupina oprávnění v zásadě se uplatní jen na typ prostředku, ke kterému je vázaná.
Chcete-li načíst všechny dostupné skupiny oprávnění a jejich ID, použijte Seznam skupin oprávnění koncový bod:
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:API Tokens WriteAPI Tokens Read
curl "https://api.cloudflare.com/client/v4/user/tokens/permission_groups" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{
"result": [
{
"id": "19637fbb73d242c0a92845d8db0b95b1",
"name": "AI Crawl Control Read",
"description": "Grants access to reading AI Crawl Control",
"scopes": [
"com.cloudflare.api.account.zone"
]
},
{
"id": "1ba6ab4cacdb454b913bbb93e1b8cb8c",
"name": "AI Crawl Control Write",
"description": "Grants access to reading and editing AI Crawl Control",
"scopes": [
"com.cloudflare.api.account.zone"
]
},
// (...)
]
}2. Definujte omezení
Nastavte případná omezení použití tokenu. Tokeny API umožňují omezit přístup podle IP adresy klienta a nastavit TTL. Více informací najdete v Omezení použití tokenu s dalšími informacemi.
Při definování TTL můžete nastavit čas, kdy se token stane aktivním, pomocí not_before a čas jeho vypršení s expires_on. Obě tato pole přijímají časová razítka UTC v následujícím formátu: "2018-07-01T05:20:00Z".
Omezte používání tokenu pomocí filtrů IP adres klienta v následujícím objektu:
{
"request.ip": {
"in": ["199.27.128.0/21", "2400:cb00::/32"],
"not_in": ["199.27.128.0/21", "2400:cb00::/32"]
}
}Každý parametr v in a not_in objekty musí být ve formátu CIDR. Použijte například 192.168.0.1/32 pro zadání jedné IP adresy.
3. Vytvořte token
Zkombinujte předchozí informace a vytvořte token podle následujícího příkladu:
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/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"
]
}
}
}'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"
]
}
}
}'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"
]
}
}
}'