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

[HeatWavejpMeetup#12] HeatWave で MySQL Enterpri...

[HeatWavejpMeetup#12] HeatWave で MySQL Enterprise 機能が使えるのは本当か? [神田 智大 氏(スマートスタイル)]

HeatWavejp Meetup #12 「MySQL ユーザーが考える HeatWave MySQL の MySQL としての良さ」(2025/2/26 開催)の講演資料です。

【講演内容】
MySQLでは、ビジネス・クリティカルなMySQLアプリケーションの開発、管理におけるリスクとコストを低減するために様々な機能が提供されています。
その中でも、MySQL Enterprise Editionでのみ提供されている高度な機能が幾つかあり、なんとHeatWaveでも標準で搭載されている機能があります。
本セッションでは、MySQL Enterprise Editionで提供される12機能のうちHeatWaveでも使える機能をご紹介します。

MySQL Enterprise機能について
1. MySQL Enterprise機能とは
2. HeatWaveで使えるMySQL Enterprise機能
3. HeatWaveで使えないMySQL Enterprise機能

HeatWaveで使える機能紹介
1. プログラミング機能
2. セキュリティ機能
3. スレッドプール機能

【発表者】
株式会社スマートスタイル
データベース&クラウド事業部 技術本部 DB部
神田 智大 氏

【イベント情報】
HeatWavejp Meetup #12
https://heatwavejp.connpass.com/event/344574/

More Decks by HeatWavejp(MySQL HeatWave Japan User Group)

Other Decks in Technology

Transcript

  1. 自己紹介 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd . All Rights

    Reserved. 2 ◼名前:神田 智大(かんだ ともひろ) ◼出身:新潟県新潟市 ◼所属:株式会社スマートスタイル データベース部 ◼最近驚いたこと: スタバで「ハチミツのトッピングが無料」だったこと
  2. 2025/2/26 3 Copyright © 2025. SmartStyle Co.,Ltd . All Rights

    Reserved. MySQL Enterprise機能 について 1. MySQL Enterprise機能とは 2. HeatWaveで使えるMySQL Enterprise機能 3. HeatWaveで使えないMySQL Enterprise機能 01
  3. ◼MySQL Enterprise Editionでのみ提供される高度な機能やツールのこと ◼オンプレ版MySQL Enterprise機能は全12機能 ◼各機能はプラグインもしくはコンポーネントをインストールする必要がある MySQL Enterprise機能とは 2025/2/26 Copyright

    © 2025. SmartStyle Co.,Ltd . All Rights Reserved. 4 インストール コンポーネント プラグイン HeatWaveでは インストール作業不要 MySQL Enterprise機能 が使用可能になる
  4. HeatWaveで使えるMySQL Enterprise機能 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd . All

    Rights Reserved. 5 ◼以下の機能は標準で使用可能 – MySQL Enterprise Firewall機能はHeatWave on AWSでのみ利用可能 No. 機能名 概要 1 MySQL Enterprise Stored Programs JavaScriptを使用してストアドプロシージャーを定義 2 MySQL Enterprise Masking データをマスキングするための関数を提供 3 MySQL Enterprise Authentication ユーザーの認証方式に外部認証モジュールを追加 4 MySQL Enterprise Audit MySQLに対するアクセスの監査ログを取得 5 MySQL Enterprise Firewall 怪しいSQLをブロックするファイアウォール機能 6 MySQL Enterprise Encryption データを暗号化するための関数を提供 7 MySQL Enterprise Scalability 同時処理数が多い環境でも性能低下を防ぐ
  5. OCIでマネージドサービスとして提供されている MySQL Enterprise機能 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd .

    All Rights Reserved. 6 ◼以下の機能については、MySQL Enterprise機能としてではなくOCIマネージドサー ビスとして機能が提供されています ※注:MySQL Enterprise High-Availability機能について、プラグインはインストールされておりグループレプリケーション機 能自体は有効だが、ユーザ側からはほとんどのシステム変数が変更できず、インスタンス追加などの操作、シングルプライマ リからマルチプライマリへのモード切り替えも不可。 No. 機能名 OCI上での代替機能 1 MySQL Enterprise Backup OCIの仕組みを使ったバックアップ機能 2 MySQL Enterprise High-Availability※注 グループレプリケーションとOCIの仕組みを 使った高可用性機能 3 MySQL Enterprise TDE OCIのブロックボリュームの暗号化機能 4 Oracle Enterprise Manager for MySQL OCIのDatabase ManagementとOps Insightsに よる監視機能
  6. HeatWaveで使えないMySQL Enterprise機能 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd . All

    Rights Reserved. 7 ◼MySQL Enterprise Telemetry機能は使えません No. 機能名 OCI上での代替機能 1 MySQL Enterprise Telemetry なし
  7. 2025/2/26 8 Copyright © 2025. SmartStyle Co.,Ltd . All Rights

    Reserved. 使える機能紹介 1 プログラミング機能 2 セキュリティ機能 3 スレッドプール機能 02
  8. ◼JavaScriptでストアドプログラム(プロシージャ / ファンクション)を記述できる ◼MySQL Enterprise Edition 9.0より使用可能 CREATE PROCEDURE proc1(p1

    INT) LANGUAGE JAVASCRIPT AS $$ do { p1 += Math.random(); } while(p1 < 10); $$ ; 1. MySQL Enterprise Stored Programs(オンプレ版) 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd . All Rights Reserved. 10 LANGUAGE JAVASCRIPT で明示的に宣言 ドル引用符で囲まれた領域に JavaScriptの構文で記述できる Javascriptの組み込みオブジェクト が使用可能 デリミタの変更が不要 参照:https://dev.mysql.com/doc/refman/9.0/en/stored-routines-js.html
  9. セキュリティ機能 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd . All Rights

    Reserved. 12 2. MySQL Enterprise Masking 3. MySQL Enterprise Audit 4. MySQL Enterprise Authentication 5. MySQL Enterprise Encryption 6. MySQL Enterprise Firewall
  10. ◼機密データをマスキングもしくは匿名化できる ◼ランダムデータを生成できる 2. MySQL Enterprise Masking (オンプレ版) 2025/2/26 Copyright ©

    2025. SmartStyle Co.,Ltd . All Rights Reserved. 13 MySQL ユーザ id address 1 東京都xxxxx id address 1 東京都港区北青山 user表 SELECT gen_rnd_email(); [email protected] [email protected] SELECT gen_dictionary(‘e-mail’); SELECT id, mask_inner(address,3,0) FROM user; 辞書データ ファイル プラグイン関数 MySQL ユーザ MySQL ユーザ ①データのマスキング ②ランダムデータの生成 関数による データのマスキング 辞書データから 値をランダムに返却する 関数による ランダムデータの生成 参照:https://dev.mysql.com/doc/refman/9.2/en/data-masking-plugin-functions.html
  11. ◼一部プラグイン関数がサポートされていない – 辞書データに関する関数がサポートされていないため、辞書データファイルを 使ったランダムデータの生成はできない 2. HeatWave MySQL との差分① 2025/2/26 Copyright

    © 2025. SmartStyle Co.,Ltd . All Rights Reserved. 14 MySQL ユーザ id address 1 東京都xxxxx id address 1 東京都港区北青山 user表 SELECT gen_rnd_email(); [email protected] [email protected] SELECT gen_dictionary(‘e-mail’); SELECT id, mask_inner(address,3,0) FROM user; 辞書データ ファイル プラグイン関数 MySQL ユーザ MySQL ユーザ ①データのマスキング ②ランダムデータの生成 辞書データに関する関数が 使用できない
  12. 3. MySQL Enterprise Audit (オンプレ版) 2025/2/26 Copyright © 2025. SmartStyle

    Co.,Ltd . All Rights Reserved. 16 ◼「ユーザによるどのイベントを監査ログに出力するか」を定義するフィルタを作成 し、ユーザに適用することでフィルタに該当する操作を監査ログとして保存する MySQL ユーザ 監査ログ ファイルフォーマット ・新しい形式のXML ・古い形式のXML ・JSON MySQL ユーザ フィルタ SELECT audit_log_read(audit_log_read_bookmark();) ①クエリ実行 ②フィルタでチェック ④JSON形式のみ SELECT文で抽出できる ③該当したら出力 参照:https://dev.mysql.com/doc/refman/9.2/en/audit-log.html
  13. 3. HeatWave MySQL との差分 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd

    . All Rights Reserved. 17 ◼監査ログにはJSON形式のみ – ファイル形式を指定する変数(audit_log_format)が変更できない ◼監査ログに直接アクセスできない(OSにアクセスできないため) MySQL ユーザ 監査ログ XML形式は 使用できない (JSON形式のみ) MySQL ユーザ フィルタ SELECT audit_log_read(audit_log_read_bookmark();) 監査ログへのアクセスは SELECT文のみに限定 ファイルフォーマット ・新しい形式のXML ・古い形式のXML ・JSON(デフォルト)
  14. 4. MySQL Enterprise Authentication(オンプレ版) 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd

    . All Rights Reserved. 18 ◼外部認証によるMySQLユーザーの認証を行うことで、シングルサインオンを導入し、 資格証明を一元管理できる – 外部認証プラグインは5つある(PAM/Windows/LDAP/Kerberos/WebAuthn) MySQLユーザ クライアントユーザ マッピング MySQL 外部認証 プラグイン 外部の資格情報 サーバに接続 (ユーザ名、パスワードなど認証情報) ユーザ認証 送信されたクライアントユーザの 認証情報を使ってユーザ認証 クライアントユーザとマッピングした MySQLユーザとして接続できる 参照:https://dev.mysql.com/doc/refman/9.2/en/authentication-plugins.html
  15. 4. HeatWave MySQL との差分 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd

    . All Rights Reserved. 19 ◼外部認証はauthentication_ociプラグインのみ使用できる – オンプレ版にはない認証方式 – OCIのIAM認証を利用した認証方式(APIキー・ペア認証/IAMセキュリティトークン認証) MySQLユーザ IAMユーザ IAM セキュリティ トークン 構成情報 接続元ユーザ コンピュートインスタンス またはローカルPC マッピング 秘密鍵 IAMユーザとMySQLユーザを マッピングする IAMユーザに紐づけたAPIキーや IAMセキュリティトークンで認証 MDS サーバ接続 秘密鍵 公開鍵 参照:https://docs.oracle.com/ja-jp/iaas/mysql-database/doc/authenticating-using-authentication_oci-plugin.html
  16. 5. MySQL Enterprise Encryption(オンプレ版) 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd

    . All Rights Reserved. 20 ◼SQLレベルでOpenSSLライブラリに基づく一連の暗号化機能を使用できる MySQL ユーザ create_asymmetric_priv_key(‘RSA’, 2048 ); create_asymmetric_pub_key(‘RSA’, @priv); 秘密鍵 公開鍵 MySQL ユーザ ①秘密鍵 / 公開鍵の生成 ②データの暗号化 / 復号 MySQL ユーザ asymmetric_encrypt(‘RSA’, ‘text’, @pub); 平文 暗号文 MySQL ユーザ asymmetric_decrypt(@alg, @chiphertext, @priv); 平文 暗号文 参照:https://dev.mysql.com/doc/refman/9.2/en/enterprise-encryption-functions.html
  17. 5. MySQL Enterprise Encryption(オンプレ版) 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd

    . All Rights Reserved. 21 ◼SQLレベルでOpenSSLライブラリに基づく一連の暗号化機能を使用できる MySQL ユーザ ③ハッシュ関数によるダイジェスト生成 ④電子署名の生成 / 検証 MySQL ユーザ asymmetric_sign(‘RSA’, @dig, @priv, 'SHA512’); MySQL ユーザ asymmetric_verify(‘RSA', @dig, @sig, @pub, 'SHA512'); 電子署名 create_digest( 'SHA512', 'text’ ); 平文 ダイジェスト ダイジェスト ダイジェスト 電子署名 検証結果 参照:https://dev.mysql.com/doc/refman/9.2/en/enterprise-encryption-functions.html
  18. ◼ユーザに紐づくプロファイルを作成し、SQLステートメントパターンの許可リストに 基づいてクエリの実行を許可または拒否する 6. MySQL Enterprise Firewall (オンプレ版) 2025/2/26 Copyright ©

    2025. SmartStyle Co.,Ltd . All Rights Reserved. 23 プロファイル MySQL ユーザ SELECT * FROM tb1 WHERE id = ? : 許可リスト エラーログ ◎ 許可したステートメント数:10 拒否したステートメント数:5 ? 疑わしいステートメント数:1 ✐ 記録したステートメント数:30 ステータス変数 クエリ実行 ①クエリ実行 ②許可リストで判断 ④ステータス変数で管理 ③判断ごとに処理 ログなどから SQLインジェクションの 兆候を検知できる 参照:https://dev.mysql.com/doc/refman/9.2/en/firewall.html
  19. ◼HeatWave on AWSでのみ利用可能(2025/2月現在) ◼エラーログへの出力ができない – エラーログ出力を有効化する変数(mysql_firewall_trace)が変更できない – error_logテーブルへの出力もできない 6. HeatWave

    on AWS との差分 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd . All Rights Reserved. 24 プロファイル MySQL ユーザ SELECT * FROM tb1 WHERE id = ? : 許可リスト エラーログ ◎ 許可したステートメント数:10 拒否したステートメント数:5 ? 疑わしいステートメント数:1 ✐ 記録したステートメント数:30 ステータス変数 クエリ実行 拒否したクエリを エラーログ出力できない
  20. 7. MySQL Enterprise Scalability(オンプレ版) 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd

    . All Rights Reserved. 26 ◼スレッド処理モデルをスレッドプールモデルに変更し、ユーザ接続数の増加に伴う トランザクション同時実行のパフォーマンス低下を防ぐ。 クライアント スレッドプール スレッドグループ クエリーワーカースレッド THDs 接続リクエスト … レシーバースレッド クエリーワーカースレッド THDs 接続ごとにOSスレッドが 生成されない 同時実行されるスレッド数 を制限できる 参照:https://dev.mysql.com/doc/refman/9.2/en/thread-pool.html
  21. ◼チューニングできるシステム変数が12個から5個に限定される 7. HeatWave MySQL との差分 2025/2/26 Copyright © 2025. SmartStyle

    Co.,Ltd . All Rights Reserved. 27 チューニングできる変数 thread_pool_transaction_delay thread_pool_query_threads_per_group thread_pool_max_transactions_limit thread_pool_dedicated_listeners thread_pool_size 参照:https://dev.mysql.com/doc/refman/9.2/en/server-system-variables.html チューニングできない変数 thread_pool_algorithm thread_pool_high_priority_connection thread_pool_longrun_trx_limit thread_pool_max_active_query_threads thread_pool_max_unused_threads thread_pool_prio_kickup_timer thread_pool_stall_limit thread_pool_connection_report_interval (HeatWave固有のシステム変数) 8つの変数はデフォルト 値から変更できない
  22. ◼チューニングできるシステム変数が12個から4個に限定される 7. HeatWave on AWS との差分 2025/2/26 Copyright © 2025.

    SmartStyle Co.,Ltd . All Rights Reserved. 28 チューニングできない変数 ★thread_pool_size ★thread_pool_transaction_delay thread_pool_algorithm thread_pool_high_priority_connection thread_pool_max_active_query_threads thread_pool_max_unused_threads thread_pool_prio_kickup_timer thread_pool_stall_limit thread_pool_connection_report_interval (HeatWave固有のシステム変数) チューニングできる変数 ★thread_pool_longrun_trx_limit thread_pool_query_threads_per_group thread_pool_max_transactions_limit thread_pool_dedicated_listeners ★はHeatWave MySQL との差分がある変数 9つの変数はデフォルト値 から変更できない 参照:https://dev.mysql.com/doc/refman/9.2/en/server-system-variables.html
  23. 7. HeatWave MySQL とHeatWave on AWS 間の差分 2025/2/26 Copyright ©

    2025. SmartStyle Co.,Ltd . All Rights Reserved. 29 ◼チューニングできない変数のうち初期値が異なる変数がある – thread_pool_algorithm変数 • HeatWave MySQL は同時実行性の低いアルゴリズム • HeatWave on AWS は同時実行性の高いアルゴリズム チューニングできない変数 オンプレ版 (すべて変更可能) HeatWave MySQL HeatWave on AWS thread_pool_algorithm 0 0 1 thread_pool_max_unused_threads 0 0 2 thread_pool_size 24 シェイプ により変動 (変更可) シェイプ により変動 (変更不可)
  24. ちなみにAlways Freeでは動くの? 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd . All

    Rights Reserved. 31 ◼MySQL Enterprise Firewall機能を除き、紹介した機能は全て使えます! – Firewall機能はHeatWave on AWSのみの実装のため – 注意すべき点も変わらず
  25. HeatWaveでMySQL Enterprise機能が使えるのは本当か? 2025/2/26 Copyright © 2025. SmartStyle Co.,Ltd . All

    Rights Reserved. 32 ◼結論:本当!!! ただし、一部機能で制限があるので注意が必要です。 さらなるHeatWaveの進化に期待ですね!!!