2021年4月22日に開催された「Club MySQL #5 ~SQLデータベースのセキュリティ」でのLT資料です。MySQL 5.6~8.0でのセキュリティ強化の歴史について概要を紹介しています。 https://mysql.connpass.com/event/208575/
MySQLセキュリティ強化の歴史Club MySQL #5 ~SQLデータベースのセキュリティ2021年4月22日MySQL Global Business Unit山﨑 由章 / Yoshiaki Yamasaki
View Slide
Safe harbor statement以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメントするものではない為、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。Copyright © 2021, Oracle and/or its affiliates.2
Copyright © 2021, Oracle and/or its affiliates.3MySQLはセキュリティ強化を続けています
MySQLの歴史Copyright © 2021, Oracle and/or its affiliates.44.0/GIS (MyISAM)UPDATE/DELETEOracleMySQL Sun3.23MyISAMInnoDB5.1 5.6memcached APIUNDOGlobal Transaction ID(DB)ALTER TABLE5.5InnoDBPERFORMANCE_SCHEMA1.0-3.22(ISAM, HEAP)Windows /64bit(SJIS/UJIS)5.0/ /XAINFORMATION_SCHEMA4.1UnicodeCSV, ARCHIVEndbcluster1995 2000 2005 2010 20155.7CJK /GIS (InnoDB)( )NoSQL (JSON)8.0utf8mb4ROLEWindowCHECKClone
• デフォルトはセキュアでない状態• 開発者の利便性を優先• 後からセキュアな状態にするためのスクリプトを提供 (mysql_secure_installation)MySQL 5.6でのセキュリティCopyright © 2021, Oracle and/or its affiliates.5
• 以下の設定をまとめて実行可能なスクリプト• rootアカウントへのパスワード設定• localhost以外からのrootアカウントでのアクセスを無効化 (rootでのリモートアクセス不可)• アノニマスユーザアカウントを削除• testデータベースを削除 (デフォルトでアノニマスユーザがアクセス可能なデータベース)mysql_secure_installationCopyright © 2021, Oracle and/or its affiliates.6
• デフォルトでセキュアな状態• 必要に応じて、制限を緩和可能• 主要な変更点• rootアカウントへのパスワード設定を強制(初期DB構築時にランダムなパスワードを設定し、変更するまで何も操作できない)• rootでのリモートアクセス不可• アノニマスユーザアカウントは存在しない• testデータベースは存在しないMySQL 5.7でのセキュリティCopyright © 2021, Oracle and/or its affiliates.7
• ユーザー認証方式の追加 (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
• パスワードの有効期限を設定可能に• yoku0825さんからのフィードバックをきっかけにして、GAリリース後にデフォルト値が360から0に変更された• secure_file_priv にNULLが設定可能になった• MySQLサーバーを介してのファイルの入出力を禁止• コネクションコントロールプラグイン追加 (MySQL 5.6にもバックポート)• ブルートフォースアタック対策• MySQL Enterprise Securityへの機能追加• 透過的データ暗号化(TDE)、MySQL Enterprise FirewallMySQL 5.7でのセキュリティ強化点の例Copyright © 2021, Oracle and/or its affiliates.9
• ユーザー認証方式の追加 (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
Copyright © 2021, Oracle and/or its affiliates.11MySQLはセキュリティ強化を続けています
12 Copyright © 2021, Oracle and/or its affiliates.