Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

• ユーザー認証方式の追加 (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

Slide 9

Slide 9 text

• パスワードの有効期限を設定可能に • 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

Slide 10

Slide 10 text

• ユーザー認証方式の追加 (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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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