10. Security And Privacy
データエンジニアがセキュリティに関して考慮すべきこと、特に、人、プロセス、テクノロジについて。
10.1 People
セキュリティが人間のレベルで侵害されることが多いので、常に自分自身が標的となっていると思って行動すべき。
10.1.1 The Power of Negative Thinking
データ活用のシナリオを考え、実際に必要な場合のみ機密データを収集すべき。そもそも機密データを取り込まないことが、センシティブなデータを保護する最善の方法。
利用するデータパイプラインやストレージシステムについて、攻撃や漏洩のシナリオを考える。
10.1.1 Always Be Paranoid
認証情報を求められたら常に最新の注意を払う。
10.2 Processes
セキュリティチェックを習慣化しよう、最小権限の原則を守ろう、クラウドにおける責任共有モデルを理解しよう。
10.2.1 Security Theater Versus Security Habit
誰も読まない膨大なセキュリティポリシーや、年に1回のチェックボックスだけのセキュリティチェックはやめよう。
例えば、月に1回のセキュリティトレーニング、セキュリティポリシーの見直しを実施し、セキュリティのDNAを根付かせよう。
セキュリティはすべての人にとって最優先事項。
10.2.2 Active Security
アクティブセキュリティは、動的に変化するセキュリティの脅威について考え、成功した攻撃を研究し、組織のセキュリティ脆弱性を熟考することで、能動的なセキュリティ体制を取る。
10.2.3 The Principle of Least Privilege
最小権限の原則を守る。クラウドでは不要なIAMロールが与えられがち。
機密データに対しても列単位、行単位、セル単位のアクセス制御を行う。
10.2.4 Shared Responsibility in the Cloud
クラウドにおけるセキュリティは、クラウドベンダーとユーザの共同責任であり、クラウドベンダーはデータセンターとハードウェアのセキュリティを確保し、利用者はクラウド上に構築されるアプリケーションやシステムのセキュリティを担う。
10.2.5 Always Back Up Your Data
ハードウェア故障やミスオペレーション、悪意のある者の攻撃に備えて、データを定期的にバックアップする。
また、バックアップしたデータの復元テストを定期的に行う。
10.2.6 An Example Security Policy
セキュリティポリシーは、シンプルに、すぐ実践できる実用的なリストにするべき。
10.3 Technology
人とプロセスによるセキュリティ対策が完了したら、次はテクノロジーを活用してシステムとデータ資産のセキュリティを確保する方法を検討しよう。
10.3.1 Patch and Update Systems
OSやソフトウェアには常にパッチを当て、新しいアップデートが利用可能になったらすぐにアップデートしよう。
10.3.2 Encryption
暗号化は、ネットワークトラフィックの傍受などの基本的な攻撃から守ってくれる。
データがストレージデバイス上にあるときは必ず暗号化する。
鍵の扱いには最新の注意を払う。
古いプロトコルのセキュリティの限界を知っておく。FTPは中間者攻撃に脆弱なので避けたほうが無難。
10.3.3 Logging, Monitoring, and Alerting
監視、ロギング、アラートを自動化し、システムで以上が発生したときに気付けるようにしておく。可能であれば自動異常検知を設定する。
監視すべき領域は、アクセス、リソース使用量、課金、余分なアクセス権限。
10.3.4 Network Access
ネットワークセキュリティは社内のセキュリティスペシャリストに任せるべきだが、データエンジニアは少なくともネットワークアクセスに関する適切なプラクティスに従っているかを確認する方法を知っておかなければならない。
10.3.5 Security for Low-Level Data Engineering
特定の技術の専門家は、その技術のセキュリティホールを特定するのに適した立場にある。
データエンジニア全員に、セキュリティに積極的に関与するよう奨励しよう。システムの潜在的なセキュリティリスクを特定したら、緩和策を検討し、その緩和策の実践に積極的な役割を果たすべきだ。