Google Project Shieldを試してみた!

Google Project Shieldを試してみた!

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

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

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

設定に必要なもの

以下の2つだけ

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

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

Add a new site

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

Add a new siteの画面

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

What’s your domain name?

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

What’s your domain name?の画面

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

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

SSL設定も可能です。

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

Verify ownership

Verify ownershipの画面

Documentはこちら

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

Where is your content?

Where is your content?の画面

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

Sending traffic to Project Shield

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

Project Shieldへトラフィックを送るためのDNS設定案内

Congratulations!

設定完了!

Congratulationsの画面(1)

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

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

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

Congratulationsの画面(2)

Project Shieldの画面

Project Shieldはこんな画面

Project Shieldの画面(1)

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

Project Shieldの画面(2)

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

QPS / Cache Status

Project Shieldの画面(3)

Error Code QPS / Error Percentage

Project Shieldの画面(4)

Ingress Bandwidth / Egress Bandwidth

Project Shieldの画面(5)

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

Appendixを示す構成図

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いじりました。

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

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

Plain text
$ 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への変更が必要になりました。

SSL追加の画面