비밀을 사용하여 웹후크 페이로드 보호

완료됨

페이로드를 수신하도록 함수를 구성하고 나면 구성한 엔드포인트에 전송된 모든 페이로드를 수신 대기합니다. 보안상의 이유로 요청을 GitHub에서 오는 요청으로 제한하고자 할 수 있습니다. 이를 위한 방법에는 몇 가지가 있습니다. 예를 들어 GitHub의 IP 주소의 요청을 승인하도록 선택할 수 있습니다. 더 쉬운 방법은 비밀 토큰을 설정하고 이 토큰을 사용하여 요청의 유효성을 검사하는 것입니다.

예제 시나리오에서 IT 부서의 경영진은 여러분이 Azure Functions 앱에서 만든 웹후크 트리거 함수에 대해 만족합니다. 회사 wiki에 대한 업데이트 관련 정보는 모두 Gollum 이벤트가 트리거될 때마다 함수에 의해 구문 분석되고 회사에 전송됩니다. 경영진은 GitHub에서 전달된 정보가 얼마나 안전한지 알고 싶어 합니다. 그들을 여러분에게 정보를 보호하는 방법을 찾고, 업데이트를 보내는 게 GitHub인지 확인할 것을 요청합니다.

이 단원에서는 비밀을 사용하여 웹후크 페이로드를 보호하고 GitHub의 페이로드에 대한 유효성을 검사하는 방법을 알아봅니다.

웹후크 비밀

웹후크 비밀을 설정하면 페이로드 URL로 전송된 POST 요청이 GitHub에서 전송되었는지 확인할 수 있습니다. 비밀을 설정한 경우 웹후크 POST 요청의 x-hub-signature 헤더를 받을 수 있습니다.

GitHub에서 웹후크를 설정한 리포지토리로 이동한 다음 웹후크를 편집하면 비밀 필드를 설정할 수 있습니다. 다음 연습에서는 예제에서 이 작업을 수행하는 방법을 알아봅니다.

GitHub의 페이로드 유효성 검사

비밀 토큰을 설정하면 GitHub에서 각 페이로드에 대한 해시 서명을 만드는 데 사용합니다. 이 해시 서명은 x-hub-signature로 헤더의 각 요청과 함께 전달됩니다.

함수가 요청을 수신하면 사용자의 비밀을 사용하여 해시를 컴퓨팅하고, 요청 헤더에 있는 해시와 일치하는지 확인해야 합니다. GitHub는 HMAC SHA1 16진수 다이제스트를 사용하여 해시를 컴퓨팅하므로, 비밀의 키 및 페이로드 본문을 사용하여 동일한 방법으로 해시를 계산해야 합니다. 해시 서명은 텍스트 sha1=으로 시작합니다.