はじめに
2024年6月9日、株式会社KADOKAWAが、複数のWebサイトで利用できない事象が発生し、外部からの不正なアクセスの可能性が高いと公表しました。6月14日の公式発表では、ランサムウェアを含む大規模なサイバー攻撃であることが確認されました。この攻撃により、サービスが一時停止し、データセンターのサーバの物理的なシャットダウンが必要となるほどの被害が発生しました。
このようなサイバー攻撃は、デジタルトランスフォーメーション(DX)、リモートワーク、クラウドシフトの進行に伴い増加しています。ここでは、データエンジニアとして実践すべき具体的なセキュリティ対策について解説します。
サイバー攻撃の種類と対策
ランサムウェア
ランサムウェアは、コンピュータをロックしたり、ファイルを暗号化したりして使用不能にし、元に戻すための身代金を要求するマルウェアです。例えば、角川のケースでは、ランサムウェアがデータセンター内のサーバに感染し、サービスの大規模な停止を引き起こしました。
対策
- 定期的なデータバックアップ: 定期的にデータをバックアップし、オフラインで保管することで、攻撃を受けても迅速に復旧できます。
- セキュリティパッチの適用: ソフトウェアやシステムの脆弱性を修正するパッチを迅速に適用することで、感染リスクを減らします。
- 従業員の教育: フィッシングメールなどの社会工学的手法に対する警戒心を高めるためのトレーニングを行います。
DDoS攻撃
DDoS (Distributed Denial of Service) 攻撃は、Webサーバに大量の通信を発生させ、サービスの提供を妨害する攻撃です。これにより、サービスが一時的に利用不能になります。
対策
- Webアプリケーションファイアウォール(WAF)の導入: WAFを使用して、不正なトラフィックをブロックします。
- セキュリティグループの設定: クラウド環境では、セキュリティグループを適切に設定し、不要なポートを閉じることで攻撃を防ぎます。
- トラフィックモニタリング: 異常なトラフィックを検知するためのモニタリングツールを導入し、早期に対策を講じます。
情報漏洩の防止策
サービスアカウントやCLI情報が漏洩すると、攻撃者に悪用されるリスクが高まります。以下の対策を講じることで、情報漏洩を防ぐことができます。
環境変数を使用する
環境変数を使用して、APIキーや認証情報を管理することが重要です。これにより、ソースコードに直接認証情報を記載するリスクを避けられます。
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/credentials.json"
シークレットマネージャーの活用
Google CloudのSecret ManagerやAWSのSecrets Managerを活用し、機密情報を安全に管理します。
IAMポリシーの最小権限原則の適用
IAMポリシーを設定する際は、最小権限の原則に従い、必要最低限の権限のみを付与します。これにより、不必要な権限が付与されるリスクを減らします。
データセット単位でのアクセス制限
データセットのアクセス制限を適切に設定することも重要です。特に、機密性の高いデータについては、アクセス制御リスト(ACL)やIAMロールを利用してアクセスを制限します。
IAMロールとポリシーの設定:
特定のデータセットに対してアクセスできるユーザーやサービスアカウントを明確に定義します。
アクセスログの監視:
誰がいつどのデータにアクセスしたかを記録し、異常なアクセスパターンを検知します。
データの暗号化:
重要なデータは保存時および転送時に暗号化し、アクセス権を持つユーザーのみが復号できるようにします。
データ損失防止(DLP)の導入
DLP(Data Loss Prevention)ツールを導入することで、機密データの不正な転送やコピーを防ぎます。DLPツールは、データの分類と監視を行い、不正な動きを検知して自動的にアラートを発します。
データクリーンルームの活用
データクリーンルームは、異なる組織が共有するデータを安全に分析するための環境を提供します。これにより、個々のデータが外部に漏れるリスクを最小限に抑えつつ、共同でのデータ分析が可能となります。
GitHub Actionsを使用する際の注意点
GitHub ActionsはCI/CDパイプラインを自動化する強力なツールですが、適切に設定しないとセキュリティリスクが生じます。
シークレットをGitHubリポジトリの設定で管理する
GitHubのリポジトリ設定でシークレットを管理し、ワークフローで環境変数として使用することで、機密情報の漏洩を防ぎます。
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up environment
run: echo "MY_SECRET=${{ secrets.MY_SECRET }}" >> $GITHUB_ENV
サードパーティのアクションの使用に注意する
サードパーティのアクションを使用する際は、そのソースコードを確認し、信頼できるものかを判断することが重要です。
ワークフローのトリガーに注意する
ワークフローが予期しないイベントでトリガーされないように、トリガー条件を慎重に設定します。例えば、pull_requestイベントで機密情報が漏洩する可能性があるため、注意が必要です。
on:
push:
branches:
- main
pull_request:
branches:
- main
まとめ
サイバー攻撃の脅威は日々進化しており、データエンジニアとしてもセキュリティ対策を徹底することが重要です。ランサムウェアやDDoS攻撃への対策、情報漏洩防止のためのベストプラクティス、データセット単位でのアクセス制限、DLPの導入、データクリーンルームの活用など、具体的な対策を実践することで、安全なシステム運用を実現しましょう。