Google Project Shieldを試してみた!

GoogleのDDoS対策サービスのProject Shieldを使う機会があったので紹介!

登録はかなり前にしていたんですが、人力による承認制になっているためなかなか使えるようになりません。

細かい説明はGoogle先生に聞いてください。
Newsサイトなどじゃないとそもそも登録申請が通りません・・・

設定に必要なもの

以下の2つだけ

  • 導入したいDNSのレコード変更権限
  • エンドポイントのIPをひとつ

あとは公開しているサイトがあれば大丈夫!

Add a new site

左のメニューにある「Add a new site」でサイトの追加ができます。

Project Shield Add a new site

ページ下部の「OKAY, LET’S GET STARTED」をクリック!

What’s your domain name?

ドメイン名を入れてください。

Project Shield What's your domain name?

Proxy bare domainはオリジンのAレコードからのリダイレクト設定になります。

ex) http://grasys.io/ -> http://www.grasys.io/

SSL設定も可能です。

grasys.ioの購入中ですぐ利用できなかった・・・

Verify ownership

Project Shield Verify ownership

Documentはこちら

結論からいうとGoogle Search ConsoleでDomainの所有を証明しておけば完了します。

Where is your content?

Project Shield Where is your content?

Load BalancerやInstanceのExternal IPなどを入れましょう。

Sending traffic to Project Shield

出て来る画面の情報どおりにDNSを設定する!

Project Shield Sending traffic to Project Shield

Congratulations!

設定完了!

Project Shield Congratulations!

あとは何回かアクセスしてみるだけ!

DNSとIP設定が正しければ疎通できるようになります。

一応digとかで確認もしてみる

Project Shield dig

Project Shieldの画面

Project Shieldはこんな画面

Project Shield

設定はこんな感じになっています。

Project Shield Settings

Graphもいくつか用意されています。

QPS / Cache Status

Project Shield QPS / Cache Status

Error Code QPS / Error Percentage

Project Shield Errot Code QPS / Error Percentage

Ingress Bandwidth / Egress Bandwidth

Project Shield Ingress Bandwidth / Egress Bandwidth

Project ShieldのCacheについて

Caching on Project Shield

ここに詳細はありますが基本は単純で
Cache-Controlで設定するだけみたいです。


Appendix

今回Project Shieldを導入するために構成を変更しました。

もともとは以下の構成

  • Cloud Storage Site Hosting
  • CNAMEのFQDN付きBucket
  • Edge Cache

今回将来的にSSL化もする予定(購入中)なので以下のように構成変更しました。

  • HTTP(S) Load Balancer
  • Backent Service Bucket
  • Cloud Storage Bucket
grasys Site Architecture

HTTP(S) Load BalancerのExternal IPをProject ShieldのEndpointに設定してます。


追記 2017-05-16

Cloud Storage Cache-Control変更

ちょっと今までCloud StorageのEdgeCacheに任せていて
そこにHTTP(S) Load BalancerのCloud CDNをかぶせてしまったw

Cache長すぎてちょっとあれなんでちょっとUploadいじりました。

gsutil -m -h "Cache-Control: public,max-age=300" cp -R -z js,css,html ${src_dir}/* ${bucket}

Response Headerがなんかかっこいいw

$ curl -s -I http://www.grasys.io
HTTP/1.1 200 OK
Server: shield
Date: Tue, 16 May 2017 10:17:37 GMT
Content-Type: text/html
Content-Length: 8422
X-GUploader-UploadID: AEnB2UojNyCOgEOLTWXraDiqF7ZT2VUr91QWRAooeaR18BK1Isr4bYh09Q9cjzj8I4L2yx7B1CAyLXr1b80l3YklgB-BSvIFKw
Expires: Tue, 16 May 2017 10:07:30 GMT
Last-Modified: Mon, 15 May 2017 04:52:28 GMT
ETag: "deeb5b907001c4f0561460e561fb025f"
x-goog-generation: 1494823948892790
x-goog-metageneration: 1
x-goog-stored-content-encoding: gzip
x-goog-stored-content-length: 8422
Content-Encoding: gzip
x-goog-hash: crc32c=s/ixAw==
x-goog-hash: md5=3utbkHABxPBWFGDlYfsCXw==
x-goog-storage-class: STANDARD
Cache-Control: public,max-age=300,no-transform
Age: 0
Accept-Ranges: bytes
Via: 1.1 google

SSL追加

SSLを有効化しました。
そしたら当たり前だけど今までCNAMEだったのがA Recordへの変更が必要になりました。

Project Shield SSL Enabled