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セキュリティ強化の歴史
    Club MySQL #5 ~SQLデータベースのセキュリティ
    2021年4月22日
    MySQL Global Business Unit
    山﨑 由章 / Yoshiaki Yamasaki

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  5. • デフォルトはセキュアでない状態
    • 開発者の利便性を優先
    • 後からセキュアな状態にするためのスクリプトを提供 (mysql_secure_installation)
    MySQL 5.6でのセキュリティ
    Copyright © 2021, Oracle and/or its affiliates.
    5

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide