Zabezpečení datových částí webhooku tajným kódem

Dokončeno

Jakmile je vaše funkce nakonfigurovaná tak, aby přijímala datové části, bude naslouchat jakékoli datové části odeslané do nakonfigurovaného koncového bodu. Z bezpečnostních důvodů je vhodné omezit požadavky na ty z GitHubu. Je několik způsobů, jak to udělat. Můžete se například rozhodnout schvalovat požadavky z IP adres GitHubu. Jednodušší způsob je nastavit token tajného kódu a ověřit požadavek pomocí tohoto tokenu.

V ukázkovém scénáři je vedení vašeho IT oddělení spokojené s funkcí Azure aktivovanou webhookem, kterou jste vytvořili v aplikaci Azure Functions. Funkce parsuje všechny informace týkající se aktualizací na wikiwebu společnosti a posílá je do podnikových procesů pokaždé, když se aktivuje událost Gollum. Vedení se zeptalo, jak jsou informace předávané z GitHubu zabezpečené. Požádali vás, abyste našli způsob, jak zabezpečit informace a ověřit, že aktualizace posílá GitHub.

V této lekci se naučíte zabezpečit datovou část webhooku tajným kódem a ověřit datové části z GitHubu.

Tajné kódy webhooku

Nastavení tajného kódu webhooku umožňuje zajistit, aby požadavky POST poslané na adresu URL datové části byly z GitHubu. Když nastavíte tajný kód, obdržíte hlavičku x-hub-signature v požadavku POST webhooku.

V GitHubu můžete pole tajného kódu nastavit tak, že přejdete do úložiště, kde jste nastavili webhook, a pak upravíte webhook. V dalším cvičení vám ukážeme, jak to udělat v našem konkrétním případě.

Ověření datových částí z GitHubu

Když je token tajného kódu nastavený, GitHub ho používá k vytvoření podpisu hodnoty hash pro každou datovou část. Tento podpis hodnoty hash se předává spolu s každým požadavkem v hlavičkách jako x-hub-signature.

Když vaše funkce přijme žádost, musíte vypočítat hodnotu hash pomocí svého tajného kódu a zajistit, aby odpovídal hodnotě hash v hlavičce požadavku. GitHub používá šestnáctkovou hodnotu hash HMAC SHA1 k výpočtu hodnoty hash, takže svoji hodnotu hash musíte vypočítat tímto stejným způsobem pomocí klíče tajného kódu a těla datové části. Podpis hodnoty hash začíná textem sha1=.