Zabezpečení API klíče

Zabezpečení API klíče snižuje riziko jeho zneužití . Omezuje, odkud a za jakým účelem smí být tento API klíč volán.

Pokud je klient veřejně dostupný, například běží ve webovém prohlížeči, potenciální útočník může snadno odpozorovat komunikaci a získaný API klíč použít jinde. Žádné zabezpečení sice není stoprocentně neprůstřelné, ale správná konfigurace výrazně ztěžuje jeho zneužití a minimalizuje riziko neoprávněného přístupu.

Nabízíme následující možnosti zabezpečení:

  • Omezení podle HTTP refererů – povolení pouze pro určité domény nebo subdomény
  • Omezení podle IP adres – přístup pouze z definovaných IP adres nebo rozsahů
  • Omezení podle User-Agent – volání pouze s konkrétní identifikací klienta
  • Omezení podle vybraných služeb – povolení pouze pro konkrétní API služby

Produkční API klíče doporučujeme vždy zabezpečit, aby bylo minimalizováno riziko jejich zneužití.

Zabezpečení můžete nastavit v portále Můj účet a to v nastavení jednotlivých API klíčů.

Zabezpečení pomocí vybrání služeb

Omezte využití API klíče pouze na konkrétní služby, které skutečně používáte.

Výchozí nastavení:

  • API klíč má přístup ke všem běžným službám (REST API endpointy).

Jak nastavit omezení?

  1. Přejděte do sekce Přístup na služby.
  2. Zvolte možnost „Jen vybrané služby“.
  3. Vyberte služby, které API klíč smí používat.
  4. Uložte nastavení.

Toto omezení můžete kombinovat s dalšími pravidly, například povolením jen pro určité HTTP referery nebo IP adresy.

Pozor, změna zabezpečení se neprojeví hned, ale postupně během cca 15 minut.

Zabezpečení pomocí http refererů

Specifikujte seznam http refererů (domén/subdomén) platných pro volání s tímto API klíčem.

  • Validuje se pouze host a port část z referera. Ignoruje se protokol. cesta, get parametry.
  • Podmínka tedy nemůže obsahovat /.
  • podmínka může obsahovat znak * ,který znamená libovolný alfanumerický znak + pomlčku (v podstatě to co může obsahovat doménové jméno) např.. *.mapy.cz. Hvězdička se aplikuje jen na jednu část hostname (mezi tečkami) takže pro *.mapy.cz projde frame.mapy.cz ale neprojde mapy.cz ani cs.frame.mapy.cz
  • Podmínka může být:
    • host name test.example.com
    • host name s portem test.example.com:8080
    • ipv4 adresa 192.168.10.10
    • ipv4 adresa s portem 192.168.10.10:8080
    • ipv6 adresa [2001:db8::1]
    • ipv6 adresa s portem [2001:db8::1]:8080

Příklady obvyklého nastavení:

domena.cz
www.domena.cz
subdomena.domena.cz
*.domena.cz
localhost:*

Zabezpečení pomocí IP adres

Specifikujte seznam IP adres nebo jejich rozsahů platných pro volání s tímto API klíčem.

  • IP adresy se zadávají dle CIDR notace

Příklady obvyklého nastavení:

Jedna adresa:
172.30.2.3/32
172.30.2.3

Síť/Podsíť
172.30.2.0/24

Zabezpečení pomocí user-agent

Specifikujte seznam User-Agentů platných pro volání s tímto API klíčem.

  • Validuje se celá hodnota hlavičky User-Agent. Porovnání je case-sensitive.
  • Podmínka může obsahovat znak *, který znamená libovolnou posloupnost znaků. Například MapyClient/*, MapyClient/2.*, Mozilla/5.0* nebo *Bot*.
  • Pokud je potřeba použít znak * doslovně, lze jej escapovat pomocí \, například MyClient\*.
  • Požadavek je povolen, pokud User-Agent odpovídá alespoň jedné podmínce.
  • Podmínka může být:
    • přesná hodnota User-Agentu MapyClient/2.1.0
    • hodnota obsahující wildcard MapyClient/*
    • hodnota obsahující více wildcardů *Bot*
    • hodnota obsahující escapovaný znak * MyClient\*

Příklady obvyklého nastavení:

MapyClient/* 
MapyClient/2.* 
Mozilla/5.0* 
*Bot* 
LibreOffice

Notifikace o nezabezpečeném klíči

Pomocí emailových notifikací upozorňujeme jednou za čas na klíče, které nejsou zabezpečené a přitom mají vyšší spotřebu. Pokud nechcete takové notifikace dostávat a zároveň nemáte možnost klíč zabezpečit, použijte přepínač „Záměrně nezabezpečený API klíč“ v nastavení API klíče.