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/

7fb060398b26ed622d34921bd64e4f5d?s=128

YoshiakiYamasaki

April 22, 2021
Tweet

Transcript

  1. MySQLセキュリティ強化の歴史 Club MySQL #5 ~SQLデータベースのセキュリティ 2021年4月22日 MySQL Global Business Unit

    山﨑 由章 / Yoshiaki Yamasaki
  2. Safe harbor statement 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。 また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。 以下の事項は、マテリアルやコード、機能を提供することをコミットメントするものではない為、 購買決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリースおよび時期については、 弊社の裁量により決定されます。 Copyright

    © 2021, Oracle and/or its affiliates. 2
  3. Copyright © 2021, Oracle and/or its affiliates. 3 MySQLはセキュリティ強化を続けています

  4. 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
  5. • デフォルトはセキュアでない状態 • 開発者の利便性を優先 • 後からセキュアな状態にするためのスクリプトを提供 (mysql_secure_installation) MySQL 5.6でのセキュリティ Copyright

    © 2021, Oracle and/or its affiliates. 5
  6. • 以下の設定をまとめて実行可能なスクリプト • rootアカウントへのパスワード設定 • localhost以外からのrootアカウントでのアクセスを無効化 (rootでのリモートアクセス不可) • アノニマスユーザアカウントを削除 •

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

    rootでのリモートアクセス不可 • アノニマスユーザアカウントは存在しない • testデータベースは存在しない MySQL 5.7でのセキュリティ Copyright © 2021, Oracle and/or its affiliates. 7
  8. • ユーザー認証方式の追加 (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
  9. • パスワードの有効期限を設定可能に • 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
  10. • ユーザー認証方式の追加 (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
  11. Copyright © 2021, Oracle and/or its affiliates. 11 MySQLはセキュリティ強化を続けています

  12. 12 Copyright © 2021, Oracle and/or its affiliates.