orangeitems’s diary

クラウドではたらくエンジニアの日々の感想です。

GDPRのためのジオブロッキング実装方法案を考えてみる

f:id:orangeitems:20180529141633j:plain

 

どうやってジオブロッキングを実装するか

GDPRに巻き込まれないためにヨーロッパからのアクセスを遮断しよう、とWEBサイト管理者が考えたとき、どのようにインフラを実装すればよいと思いますか?

GDPRの究極の対策はジオブロッキングであるという事実 - orangeitems’s diary

 

 

いくつかの方法とレビュー

いくつか方法があると思います。

 

■方法案

方法1.ファイアウォールでソースIPアドレスをブロックする。

方法2.WEBサーバーの設定で、ソースIPアドレスを見てヨーロッパ向けのアクセスについてソーリーページを見せる

方法3.DNSでヨーロッパ向けのユーザーにはヨーロッパ内のIPアドレスを返すようにし、ヨーロッパにサーバーを立てそこにアクセスさせるようにする。

方法4.CDNを使い、CDN側でジオブロッキング設定する。

 

方法1 ファイアウォール案

ヨーロッパ向けのアクセスはつながらなくなります。Connection Time Outです。かなり不親切ですね。ソーリーページすら表示しません。また、ヨーロッパのIPアドレスを入手してファイアウォールのポリシーに埋め込むのも超大変そうです。かなりの量なのでシェルを使って自動化取得しないときりがないです。

IP アドレスから国を判別する : あかぎメモ

例えば、上記のシェルを使ってフランス(FR)を調べてみたら、5642のネットワークがありました。イギリス(GB)は10989です。ファイアウォールにオブジェクト入れたら管理は追い付かないでしょうねえ。

ということで、この案はあきらめたほうがいいと思います。

 

方法2 WEBサーバー案

apacheであればhttpd.confで、IPアドレスを見てドキュメントルートを変えたりはできなくもないです。ただ、上記の通りネットワークが多すぎてNGでしょう。対応しきれないと思います。

中国のブロックとかやったことがあるんですけど、その時も大変だった思い出があり、その文脈だとGDPRは複数の国にまたがるのでほぼこれも無理なんじゃないかと思います。

また、結局ヨーロッパから本番システムに受信してしまうので、絵的にはサーバーは別にアクセスさせた方がいいんじゃないかなというのは思います。物理的な分離ですね。

WEBサーバーをスケールアウトさせたときには全部のサーバーに同じ設定を入れなきゃいけない。CDNを使った場合はオリジンになるのでCDN側で設定しないといけなくなるということになります。

この案も採用はお勧めしません。

 

方法3 DNS案

こちらはお勧め。AWSのRoute53を借りるのです。

位置情報レコードの値 - Amazon Route 53

おお、素敵。

欧州 (EU)
AD、AL、AT、AX、BA、BE、BG、BY、CH、CY、CZ、DE、DK、EE、ES、FI、FO、FR、GB、GG、GI、GR、HR、HU、IE、IM、IS、IT、JE、LI、LT、LU、LV、MC、MD、ME、MK、MT、NL、NO、PL、PT、RO、RS、RU、SE、SI、SJ、SK、SM、UA、VA、XK

これらの国に、ソーリサーバー用のIPアドレスを返すのです。

理想的にはクラウドでヨーロッパ内にWEBサーバーを借り、クッキーを使わない形でソーリーページを書けば、絶対にアクセスが来なくなります。

また、もしGDPR遵守でサービスを行うなら、ヨーロッパ内にWEB+DBシステムを作って処理を完結させると素敵です。ただその場合はGDPRはシステムだけではなくガバナンス(統治体制)を求めます。人や役割といった非ITな話を整備しなければいけません。覚悟しておいてください。だいたい、日本からヨーロッパにためたデータをのぞいたりしてもGDPR対象になりますし、転送しようものなら危険極まりないです。はい、違反、みたいな。

 

ちなみに、Route53を使わず、BindのGeoDNS機能を使うというやり方もあり。

Bind 9.10のGeoIP機能を使って、リクエスト元に近いサーバのIPを返す

やり方見ると、自分でもできそうかなと思いました。

 

方法4 CDN案

CDNは、アクセスしてきた人の住所から判断し、直近のキャッシュサーバーからコンテンツを返します。

国に応じて Azure CDN コンテンツへのアクセスを制限 | Microsoft Docs

CDN側で、コンテンツアクセスにブロックできます。とはいえ、ブロックなので味気ないエラー画面が返ります。私としては方法3がお勧めです。

 

まとめ

世界のゾーンごとに決まりが設定されるのであれば、グローバルにアクセスされるインターネットなんてありえなくなると思います。今は、厳しい規約に合わせていればいいという風潮がありますが、ゾーン間で整合性が取れなくなる可能性があります。また、どんなに順守していたと思っていても、解釈で違法性を問われるのですから事業者も溜まったものではありません。きっと、GDPR保険なるものが登場しますよ。間違いない。

そう考えると、ゾーンごとにサーバーを置き、ゾーンの中で体制を作り、ゾーンの中でデータ処理を完結させる。このゾーニングをDNSを使って振り分けするのは賢いのではないかと思います。

Googleは世界のどこからでもインターネットにアクセスできる時代を実現すべく、気球を飛ばしていたりします。

Googleの親会社Alphabetの 「気球インターネット計画」が大きく前進 | BUSINESS INSIDER JAPAN

もはや、そんな理想は脆くも崩れ、中国しかり、ヨーロッパしかり、世界は一つ的なインターネット思想は過去の物となりつつあると思います。グローバル志向のネット起業と各国のナショナリズムの対決が現実となってきた感があります。

実装を考えれば考えるほど、地球・世界・国、といった大きな単位で物事を考えさせられる件でした。

 

 

欧州GDPR全解明 (日経BPムック) ムック – 2018/5/9