Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MySQLセキュリティ強化の歴史 / mysql-security-enhancements

MySQLセキュリティ強化の歴史 / mysql-security-enhancements

2021年4月22日に開催された「Club MySQL #5 ~SQLデータベースのセキュリティ」でのLT資料です。MySQL 5.6~8.0でのセキュリティ強化の歴史について概要を紹介しています。
https://mysql.connpass.com/event/208575/

YoshiakiYamasaki

April 22, 2021
Tweet

More Decks by YoshiakiYamasaki

Other Decks in Technology

Transcript

  1. MySQLの歴史 Copyright © 2021, Oracle and/or its affiliates. 4 4.0

    /GIS (MyISAM) UPDATE/DELETE Oracle MySQL Sun 3.23 MyISAM InnoDB 5.1 5.6 memcached API UNDO Global Transaction ID (DB) ALTER TABLE 5.5 InnoDB PERFORMANCE_SCHEMA 1.0-3.22 (ISAM, HEAP) Windows /64bit (SJIS/UJIS) 5.0 / / XA INFORMATION_SCHEMA 4.1 Unicode CSV, ARCHIVE ndbcluster 1995 2000 2005 2010 2015 5.7 CJK /GIS (InnoDB) ( ) NoSQL (JSON) 8.0 utf8mb4 ROLE Window CHECK Clone
  2. • 以下の設定をまとめて実行可能なスクリプト • rootアカウントへのパスワード設定 • localhost以外からのrootアカウントでのアクセスを無効化 (rootでのリモートアクセス不可) • アノニマスユーザアカウントを削除 •

    testデータベースを削除 (デフォルトでアノニマスユーザがアクセス可能なデータベース) mysql_secure_installation Copyright © 2021, Oracle and/or its affiliates. 6
  3. • デフォルトでセキュアな状態 • 必要に応じて、制限を緩和可能 • 主要な変更点 • rootアカウントへのパスワード設定を強制 (初期DB構築時にランダムなパスワードを設定し、変更するまで何も操作できない) •

    rootでのリモートアクセス不可 • アノニマスユーザアカウントは存在しない • testデータベースは存在しない MySQL 5.7でのセキュリティ Copyright © 2021, Oracle and/or its affiliates. 7
  4. • ユーザー認証方式の追加 (sha256_password) • パスワード検証プラグイン登場 • パスワードポリシーを設定可能 • パスワードを無効化可能 (ALTER

    USER XXX PASSWORD EXPIRE) • mysql_config_editor登場 • パスワードを含む接続定義を暗号化(厳密には難読化)して保存可能 • START SLAVE実行時にパスワードを指定可能に • master.infoファイルにパスワードが保存されることを回避 MySQL 5.6でのセキュリティ強化点の例 Copyright © 2021, Oracle and/or its affiliates. 8
  5. • パスワードの有効期限を設定可能に • yoku0825さんからのフィードバックをきっかけにして、GAリリース後に デフォルト値が360から0に変更された • secure_file_priv にNULLが設定可能になった • MySQLサーバーを介してのファイルの入出力を禁止

    • コネクションコントロールプラグイン追加 (MySQL 5.6にもバックポート) • ブルートフォースアタック対策 • MySQL Enterprise Securityへの機能追加 • 透過的データ暗号化(TDE)、MySQL Enterprise Firewall MySQL 5.7でのセキュリティ強化点の例 Copyright © 2021, Oracle and/or its affiliates. 9
  6. • ユーザー認証方式の追加 (caching_sha2_password) • デフォルト認証方式もこの方式に変わったため、クライアントがこの認証方式に 対応していないとMySQL 8.0へ接続できないという罠に • ロールが使用可能 (権限管理の簡素化)

    • 動的権限、権限の細分化 • SUPER権限は非推奨に • TDEによる暗号化対象の拡張 • redo log、undo log、バイナリログ、など • MySQL Enterprise Securityへの機能追加 • MySQL Enterprise Masking (MySQL 5.7にもバックポート) MySQL 8.0でのセキュリティ強化点の例 Copyright © 2021, Oracle and/or its affiliates. 10