15강 / 20강
API 토큰 — 열쇠는 작게 깎아 쓴다
Global API Key 를 쓰지 않는 이유
레코드를 사람 손으로만 고치는 건 금세 한계가 옵니다. 배포할 때마다 A 레코드를 바꾸거나, 인증서를 자동으로 받아 오려면 API 가 필요해요.
클라우드플레어에는 두 가지 열쇠가 있습니다. 그리고 하나는 쓰면 안 됩니다.
Global API Key
계정 전체를 다 할 수 있는 마스터키.
도메인 삭제도, 결제 정보도 포함입니다.
범위를 좁힐 수 없고, 새어 나가면 비밀번호를 바꾸는 수밖에 없습니다.
API Token
어느 영역에 무엇을 할지 골라서 만듭니다.
만료일도 정할 수 있고, 하나만 따로 지울 수 있습니다.
언제나 이쪽을 씁니다.
이 서버가 실제로 쓰는 권한 조합
| 권한 | 무엇에 쓰나 |
|---|---|
Zone : DNS : Edit | A·CNAME 레코드를 만들고 고친다 |
Zone : Zone : Read | 영역 목록을 읽는다 (거의 항상 함께 필요) |
Zone : SSL and Certificates : Edit | 오리진 인증서를 발급한다 |
Account : Cloudflare Tunnel : Edit | 터널을 만들고 지운다 |
Zone Resources 에서 그 도메인 하나만 고르세요. '모든 영역' 으로 두면 굳이 넓힐 이유가 없는 문을 열어 두는 셈입니다.
쓰는 모양
# 토큰을 파일에서 읽어 환경변수로만 넘긴다
$ export CF_TOKEN="$(grep '^CF_API_TOKEN=' ~/.secrets | cut -d= -f2-)"
$ curl -s -H "Authorization: Bearer $CF_TOKEN" https://api.cloudflare.com/client/v4/user/tokens/verify
{"result":{"status":"active"},"success":true}
토큰이 살아 있는지 확인하는 가장 빠른 방법이 /tokens/verify 입니다.
값을 화면에 찍지 않고도 확인할 수 있어요.
권한을 좁게 주면 <b>내 실수</b>까지 막아 줍니다.
Python
브라우저에서 실행
🤔 확인 문제
배포 스크립트가 A 레코드만 갱신하면 됩니다. 어떤 열쇠를 만들까요?
해설 필요한 만큼만 줍니다. 새어 나가도 피해가 그 영역의 DNS 로 한정되고, 그 토큰 하나만 지우면 끝납니다.