GDPRについて理解したこととうちの会社での対応の必要性

気になってたので調べた。会社としてのガチの対応は法務にお願いすることになると思います。 なんか長いのでスライド形式じゃなくてレポート形式で。

GDPRの概要

参考

コラム: Directive 指令と Regulation 規則はなにが違うのか

  • 指令のときは強制力もないし各国でバラバラに制定していた
  • 規則になったのでEU全域で足並みが揃えられて、罰則が厳しくなった

コラム: Blockchainとの相性の悪さ

個人情報、パーソナルデータってなんだっけ?

Yahooのガイドがわかりやすい Yahoo! JAPANプライバシーガイド

個人情報とは? 特定のどなたであるかを識別することができる情報を指します。たとえば、氏名、住所などが含まれる情報が該当します。氏名などが含まれなくても、性別、電話番号、勤務先などの情報の組み合わせによって、特定の個人を識別することができる場合は、個人情報に該当します

日本の改正個人情報保護法に則った定義

パーソナルデータとは? 個人情報のほか、特定のどなたであるかは識別できないものの、「誰かの情報ではある」という程度の識別性を有しているすべての情報が該当します

識別子からのアクセスを集計することで、ある特定のブラウザーをお使いのお客様がどのウェブページにアクセスしたかを知ることになります。このような場合、Yahoo! JAPANは、ある特定のブラウザーをお使いのお客様が特定のどなたであるかを知ることはできませんが、誰かがこのウェブページにアクセスした、といったことは分かることになります。パーソナルデータには、このような「誰かの情報ではある」ということがYahoo! JAPANにとって分かる情報が、すべて該当します。このような情報には、たとえば、上記の識別子とひもづくウェブページの閲覧履歴、検索履歴、広告クリック履歴などの情報、それらから推定されるお客様の属性情報などが該当します。

GDPRとしての定義はこっちが近い。

GDPRでいうパーソナルデータ(例) 氏名 識別番号 所在地データ メールアドレス オンライン識別子(IPアドレス、クッキー) クレジットカード情報 パスポート情報 身体的、生理学的、遺伝子的、精神的、経済的、文化的、社会的固有性に関する要因

IDがふられてトレースされている履歴情報とか、web広告のCookieとかもこれに含まれる。こういうのがひとつでもあれば、基本的にはパーソナルデータと考えたほうがいい。

  • Cookie上の識別子, IPアドレスもパーソナルデータ

  • 匿名化

    • 完全にどうやっても誰かわからなくすること
    • ポイントカードの購買履歴情報をカードIDを消してから提供するものは匿名化されている
    • GDPRの対象外
  • 仮名化
    • 追加情報がないと個人を特定できないものにすること
    • データのなかの名前を書き換えたとしてもIDが残ってたりしたら元データと紐付ければわかってしまう
    • ポイントカードのIDのみにするとかも仮名化

ニッポンの個人情報のいま (2/5):EnterpriseZine(エンタープライズジン)

GDPRの中身

  • EEAに住んでいるひと向けのサービスなどが対象
    • 人種、国籍、言語は関係ない
  • 日本向けなら対象にならない
  • 英語で表示可能で通貨をユーロで表示可能だったりしたら対象になるはず!
  • パーソナルデータは暗号化したりして安全に取り扱いましょう
  • EEA(欧州経済領域)の域内から域外への個人データの移転は原則として禁止
  • データ主体は閲覧、修正、削除が自分の意志でできる
  • データ主体はどのようにパーソナルデータが扱われるのか知ることができる
  • パーソナルデータを暗黙で収集、利用しない
    • わかりやすい同意をはっきりさせないといけない
  • 情報漏えいが起きたら72時間以内に関係当局に報告する
  • 大規模ならデータ保護責任者をEEA内に代理人をおきましょう
    • 監査もしよう、社員への教育もしよう

EU一般データ保護規則(GDPR)の概要(後編) | NTTデータ先端技術株式会社超訳が雰囲気つかみやすい

よそがどう対応しているか

間違った対応

  • EUIPアドレスからのアクセスをブロック
    • EU在住の人がEU外からアクセスされたら抵触するので無意味
    • そもそもEUへのサービス提供意思は確認されるからブロックしなくていい

今日からGDPR施行だけど実は何もしてなかったぜというWEB担当者のために書いた | フジイユウジ::ドットネット

うちの会社は対応する必要があるのか

  • 基本的に、EUを対象にしたサービスの提供をしてないのでとりあえずの対応は不要
  • 親告罪だし、まずは書面による警告からだし
  • ただパーソナルデータの取り扱いとしては妥当な内容だし、今後もこの流れで行くはずなので対応していくほうがいい
  • 法務にどう対応するかを考えてもらわないといけない

    • アセスメント、計画、対策実施の流れ
    • 本気でやるならPwCとかにコンサルティングと監査をお願いするとかなのか?
  • 事業別にみると

    • あれは英語でのサービス提供もない
    • マーケ事業のほうは注意すべき情報を扱う
      • Google Analyticsとかの追跡ツール上で匿名化をしっかりやったほうがいい
  • GDPRとは? Web担当者やWebアナリストはどう対処すればいい? | Web担当者Forum

GDPRのつぎにくるもの

QA

パーソナルデータという呼び方は正式なもの?

GDPRではPersonal dataと呼んでいて、日本ではメディアによって個人データと呼んだりしている。混乱しやすい。 Yahooは個人情報保護法で規定された「個人情報」と区別するために、パーソナルデータと呼んでいると思う。

GDPRの対象者は?

欧州経済領域(EEA)域内に存在する個人に関する個人データです(GDPR第2条)。国籍や居住地を問わず、EEA域内に短期滞在する出張者や旅行者の情報も対象となります 第4回 GDPRの対象となる個人データとは|GDPRコラム|EY Japan

高額商品の購買情報は匿名ではないような

そのデータ単体を眺めても個人を特定できないから、高額だったとしてもパーソナルデータではない

名刺ってどういう扱い?

名刺はもちろん個人情報。無断で第三者に渡すとかは違法。Sansanのeightに入れるとかは、それすなわち違法とかはならないけど、Sansanはしっかりした管理体制を作っていないといけない。

GPSとかの地理データはパーソナルデータ?

1地点だけのデータなら匿名のものだけど、連続したデータなら特定の個人を浮かび上がらせる。なのでパーソナルデータ

WindowsでApple ProResにエンコードする

CMとして納品するんだとDVCPRO とか、場合によっては、Apple ProResエンコードされていることを求められることがあるらしい。ProResは普通に考えたらMacしかできないけど、Windowsでオートメーションでやる方法を考える。

Miraizonでコーデック買う

http://www.miraizon.com/products/codecsoverview.html 商売終わってた

Miraizon sales have ended.

Cinemartinでコンバーター買う

stand aloneぽいコンバーター 299 € のPRO版でよい。 http://www.cinemartin.com/cinec/buy/

Cinemartinはろくに動かないし、返金にも応じないひどい会社って書いてるので、あんまり買いたくない https://forums.adobe.com/thread/1145596

DaVinci Resolve使う

Blackmagic Design: DaVinci Resolve 14

正規ライセンス商品。コーデックとして入るのか不明。

正規版でも34000円だし、無償版もあるので検証できる。

ffmpeg使う

Windows版のffmpegにはじつはProResのコーデックが非公式ながら入っている。ライセンスをどうやってクリアしてるのか(もしくはしてないのか)は不明。

$ ffmpeg -codecs | grep prores
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enble-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
 DEVIL. prores               Apple ProRes (iCodec Pro) (decoders: prores prores_lgpl ) (encoders: prores prores_aw prores_ks )

なので、Windowsでもグレーゾーン的にProRes作れるけど、画質を上げると、本来のProResと差がでてくるらしい。なので、頑張ってWindowsでやりくりするのはあんまり意味はないのかも。

いずれにせよ、ProResにもいろいろ画質はあるのでどのProResが求められるのかは知りたい。

Refs.

Macに転送する

オフィスにMac mini置いといてProResエンコードするぞうくんとして使う。というか、頻度少ないんだったらエンジニアのMacで変換しちゃえばいいじゃん。それが一番コスト低そう。

AfterCodecsはただのffmpegのラッパー

WindowsでもApple ProResエンコードできるという謳い文句でAEのプラグインとして販売されてるこれ、 AfterCodecs - aescripts + aeplugins - aescripts.com AEスクリプトだけでどうやってエンコードするんだろうとワクワクして詳細みたら、ただのffmpegのラッパーじゃねえか。最初にそれ書いといてよ。 https://aescripts.com/aftercodecs/

instagramに完全に自動で予約投稿する方法

instagramでは投稿される記事のことをmediaと呼んでいるようだ。そして、mediaをPOSTするAPIは存在しない。 https://www.instagram.com/developer/endpoints/media/

これはinstagramはモバイルのためのサービスであるという信念のため。

じゃあどうやるか

hopperというサービスがあって、予約投稿に対応している。

これがどう動いているかというと、Androidエミュレータinstagramアプリをいれて、ユーザーから渡されたIDとパスワードでログインしてmediaを投稿しているようだ。無理矢理感すごいと思ったけど、前に仕事でやったサービスも似たようなものだった。 https://www.hopperhq.com/how-hopper-works/

scheduGramというのも同じやり方で実現している。 Compare Instagram Scheduling Platforms - Schedugram

Glamblrというやつ

instagramの非公開APIを勝手に使って投稿している。なので、そのAPIがいつ閉じられるかわからないし、そのAPIを使ったアカウント自体がイリーガルなアカウントという扱いになって、ユーザーアカウント自体が凍結、削除される可能性はじゅうぶんにある。ネトゲで不正ツール使うようなもの。

そもそもGlamblrはアングラツール出身だし、うらでなにをやっているかわからないので使うにはリスクが大き過ぎる。

日本のユーザーがSkypeクレジットを再有効化する方法

tl;dr

日本のユーザーであっても http://www.skype.com/go/store.reactivate.credit へアクセスすれば、「クレジットの再有効化」リンクがでてくる。

詳細

180日使わないでいるとSkypeクレジットは一時的に無効になる。

f:id:shrkw:20180219205420p:plain

Skypeクレジットを再有効化する方法を教えてください。 | Skype サポート のヘルプページにはこう書いてあるけど、

アカウントにサインインします。 「クレジットの再有効化」をクリックします。

そのあとには

日本にお住まいの場合、手順が少し異なります。 詳細については、利用規約をご覧ください。

とも書いてある。じゃあどうすればいいのかと 利用規約 をみると、日本以外の手順が書いてあって、肝心の日本のユーザーがどうすればいいのかが書いてない。

f:id:shrkw:20180219205400p:plain

書いてないんだけど、 http://www.skype.com/go/store.reactivate.credit へアクセスすると「クレジットの再有効化」リンクがでてきて、それを押したら再有効化できた。わかりにくい。

オリックスカーシェアは予約時間の分だけ課金されるけど、タイムズカープラスなら実際の利用時間だけ課金される

カーシェアリングサービスを使うときは、余裕を持って使いたいので長めに予約することが多い。なので、予定時間より早く返すことが多いんだけど、オリックスカーシェアだと予約時間の分だけ課金される。タイムズカープラスなら実際の利用時間だけの課金になる。

ぼくの使い方ならオリックスカーシェアよりタイムズカープラスのほうがあっている。ステーションもたくさんあるし、積極的にオリックスカーシェアを使う理由はないね。

タイムズカープラス

利用料金は、いつからいつまでの時間が課金されるのですか? ショートで利用の場合、課金は予約時の開始時間(※)から、返却手続きが完了した時点までが対象となります。返却予定時間より前に返却いただいた場合は、その時間までの料金の課金となります。ただし、パックでの利用の場合は、返却予定時間前に返却頂いた場合も料金は変わりません。

※利用開始時間は会員カードをかざした時間ではなく、予約開始時間となります

利用料金は、いつからいつまでの時間が課金されるのですか? | カーシェアリングのタイムズカープラス

オリックスカーシェア

返車時間より早く返却したのですが、料金の払い戻しはできますか。

返車時間より早く返却された場合でも、予約された分の時間料金を課金いたしますので、払い戻しはできません。

【公式】オリックスカーシェア | よくあるご質問

eSATAのポートのあるサーバーに3.5インチのSATA HDDを繋ぎたかった

動機

eSATAのポートのあるサーバーに3.5インチのSATA HDDを繋ぎたかった

仕様を確認

  • 3.5インチのハードディスクには12V電圧の供給が必要
  • USBの供給電圧は5V
    • USB供給は不可能
  • eSATAには電源供給できるタイプもあり、eSATApは5V、eSATAp+は12V供給できる(このへんは独自実装ぽい)

サーバーのポートを確認

普通のeSATAしかなかった。どうするか。

選択肢

結論

ドライブ用AC電源供給アダプタは面白いけど、eSATAを頑張っても使う機会はほぼない。 Linuxカーネルが2.6.31以降ならUSB3をサポートしているみたいだし、PCIeのUSB3カード挿そうと思う。

mdadm raid6のリカバリ、サイズ拡張などを試してみる

system rescue cdでraid6を作ってリカバリなどを試してみる

過去にはこんなこともしていた。mdadm RAID1復旧の試験 - Bouldering & Com.

  1. system rescue cd起動
  2. sshで接続
    1. SystemRescueCd 緊急起動、ファイル救出などに使えるSystemRescueCdを使う。 - 綾小路龍之介の素人思考
  3. 仮想hddマウント
  4. ループバック・デバイス作成
  5. raid6作成
  6. failed deviceが2つでも動くか
  7. failed markしたのを戻せるか
  8. 大きいディスクに交換して大きくできるか

結論としては問題なかった。

下準備

ループバック・デバイス作成 複数作るのでfunctionにしておく

function mk_loop () {
  dd if=/dev/zero of=10x${2}-${1} bs=10MB count=$2
  losetup /dev/loop${1} 10x${2}-${1}
}
for i in `seq 4` ; do mk_loop $i 5 ; done;
for i in `seq 5 8` ; do mk_loop $i 10 ; done;
% mdadm --create /dev/md0 --level=raid6 --raid-devices=4 /dev/loop[1-4]
% mkfs.xfs /dev/md0
% mkdir /mnt/raid
% mount /dev/md0 /mnt/raid
% echo hello raid6 > /mnt/raid/message
% cat  /mnt/raid/message
hello raid6
% mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Sep 23 14:52:48 2017
     Raid Level : raid6
     Array Size : 95232 (93.00 MiB 97.52 MB)
  Used Dev Size : 47616 (46.50 MiB 48.76 MB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Sep 23 14:55:41 2017
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : sysresccd:0  (local to host sysresccd)
           UUID : 88fc17be:fd8579d1:da3fc972:6379f879
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       7        1        0      active sync   /dev/loop1
       1       7        2        1      active sync   /dev/loop2
       2       7        3        2      active sync   /dev/loop3
       3       7        4        3      active sync   /dev/loop4

下準備ができた。

間違えてfailed markしちゃったらリカバリできる?

ふたつfailさせる。

% mdadm --manage /dev/md0 --fail /dev/loop3
% mdadm --manage /dev/md0 --fail /dev/loop4
% mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Sep 23 14:52:48 2017
     Raid Level : raid6
     Array Size : 95232 (93.00 MiB 97.52 MB)
  Used Dev Size : 47616 (46.50 MiB 48.76 MB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Sep 23 14:57:37 2017
          State : clean, degraded
 Active Devices : 2
Working Devices : 2
 Failed Devices : 2
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : sysresccd:0  (local to host sysresccd)
           UUID : 88fc17be:fd8579d1:da3fc972:6379f879
         Events : 21

    Number   Major   Minor   RaidDevice State
       0       7        1        0      active sync   /dev/loop1
       1       7        2        1      active sync   /dev/loop2
       -       0        0        2      removed
       -       0        0        3      removed

       2       7        3        -      faulty   /dev/loop3
       3       7        4        -      faulty   /dev/loop4

戻せる?

% mdadm --manage /dev/md0 --re-add /dev/loop3
mdadm: re-add /dev/loop3 to md0 succeed

re-addで戻る。よかった。 addはダメ。

% mdadm --manage /dev/md0 --add /dev/loop4
mdadm: Cannot open /dev/loop4: Device or resource busy

removeしてからre-addできる?

% mdadm --manage /dev/md0 --remove /dev/loop4
mdadm: hot removed /dev/loop4 from /dev/md0

re-addを試す

% mdadm --manage /dev/md0 --re-add /dev/loop4
mdadm: --re-add for /dev/loop4 to /dev/md0 is not possible

できない。いちど外すとダメなようだ。

% mdadm --manage /dev/md0 --add /dev/loop4
mdadm: added /dev/loop4

いちど外すとaddしないといけなくて再構築が走ってしまう。

disk - How do I unmark a “failed” md device? - Ask Ubuntu

大きいディスクに交換していく

loop[3-4]から2つずつ交換していこう。

% mdadm --manage /dev/md0 --fail /dev/loop3
mdadm: set /dev/loop3 faulty in /dev/md0
% mdadm --manage /dev/md0 --fail /dev/loop4
mdadm: set /dev/loop4 faulty in /dev/md0
% mdadm --manage /dev/md0 --remove /dev/loop3
mdadm: hot removed /dev/loop3 from /dev/md0
% mdadm --manage /dev/md0 --remove /dev/loop4
mdadm: hot removed /dev/loop4 from /dev/md0

100MBのloop[5-6]を追加する

% mdadm --manage /dev/md0 --add /dev/loop5
mdadm: added /dev/loop5
% mdadm --manage /dev/md0 --add /dev/loop6
mdadm: added /dev/loop6

同様にloop[1-2]も外す

% mdadm --manage /dev/md0 --fail /dev/loop1
mdadm: set /dev/loop1 faulty in /dev/md0
% mdadm --manage /dev/md0 --fail /dev/loop2
mdadm: set /dev/loop2 faulty in /dev/md0
% mdadm --manage /dev/md0 --remove /dev/loop1
mdadm: hot removed /dev/loop1 from /dev/md0
% mdadm --manage /dev/md0 --remove /dev/loop2
mdadm: hot removed /dev/loop2 from /dev/md0

loop[7-8]を追加

% mdadm --manage /dev/md0 --add /dev/loop7
mdadm: added /dev/loop7
% mdadm --manage /dev/md0 --add /dev/loop8
mdadm: added /dev/loop8

これで全部100MBのディスクになった。

% mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Sep 23 14:52:48 2017
     Raid Level : raid6
     Array Size : 95232 (93.00 MiB 97.52 MB)
  Used Dev Size : 47616 (46.50 MiB 48.76 MB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Sep 23 15:20:12 2017
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : sysresccd:0  (local to host sysresccd)
           UUID : 88fc17be:fd8579d1:da3fc972:6379f879
         Events : 170

    Number   Major   Minor   RaidDevice State
       6       7        7        0      active sync   /dev/loop7
       7       7        8        1      active sync   /dev/loop8
       4       7        5        2      active sync   /dev/loop5
       5       7        6        3      active sync   /dev/loop6

growで大きくしよう

% mdadm --grow /dev/md0 --size=max
mdadm: component size of /dev/md0 has been set to 96256K
% mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Sep 23 14:52:48 2017
     Raid Level : raid6
     Array Size : 192512 (188.00 MiB 197.13 MB)
  Used Dev Size : 96256 (94.00 MiB 98.57 MB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Sep 23 15:22:17 2017
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : sysresccd:0  (local to host sysresccd)
           UUID : 88fc17be:fd8579d1:da3fc972:6379f879
         Events : 181

    Number   Major   Minor   RaidDevice State
       6       7        7        0      active sync   /dev/loop7
       7       7        8        1      active sync   /dev/loop8
       4       7        5        2      active sync   /dev/loop5
       5       7        6        3      active sync   /dev/loop6

大きくなった。ので、ファイルシステムを拡張する。

% xfs_growfs /dev/md0
meta-data=/dev/md0               isize=512    agcount=4, agsize=6016 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0 rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=23808, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=624, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 23808 to 48128
% df -h /dev/md0
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        186M  5.3M  181M   3% /mnt/raid

上手にできました。

実験は以上で終了。なにかあっても対応できそう。

後始末

ループバック・デバイス削除

losetup -d /dev/loop0
rm loop1.img