SlideShare a Scribd company logo
1 of 36
Download to read offline
What's New inWhat's New in
MySQL 5.7 SecurityMySQL 5.7 Security
奥野 幹也
Twitter: @nippondanji
mikiya (dot) okuno (at) gmail (dot) com
@MySQL 5.7 新機能徹底攻略講座
免責事項
本プレゼンテーションにおいて示されている見解は、私
自身の見解であって、オラクル・コーポレーションの見
解を必ずしも反映したものではありません。ご了承くだ
さい。
セキュリティ関係の新機能
● パスワード期限の設定
●
ユーザーのロック、アンロック
● SET PASSWORD コマンドの仕様変更
● CREATE USER … IF NOT EXISTS
●
ログイン不可能なユーザーアカウント
●
SSL のセットアップが容易に
– キーファイルの自動生成
– mysql_ssl_rsa_setup
●
透過的テーブルスペース暗号化
●
デフォルトの状態がセキュアに
– test データベースの廃止
– 匿名ユーザーの廃止
– localhost 以外の root の廃止
ALTER USER の
改良
ALTER USER コマンドの改良
● MySQL 5.6 で追加されたコマンド
– MySQL 5.6 でできたのは、パスワードを期限切れ( EXPIRED )
にすることだけ
● MySQL 5.7 では以下の機能が加わった
– パスワード期限の設定
– パスワードの変更
– 認証プラグインの変更
– SSL 関係の設定
– アカウントのロック・アンロック
– リソース制限の設定や変更
– プロキシーユーザーのマッピング
パスワード期限の
設定
自動的にパスワードを
期限切れにする
● ユーザーにパスワードを定期的に変更させたい
●
期限を設定して自動的に EXPIRE
● ALTER USER myuser@localhost PASSWORD EXPIRE
INTERVAL 200 DAY;
– 200 日で期限切れになる
● 期限切れになったら
– mysql コマンドでログインはできる
– 実行可能なコマンドは SET PASSWORD のみ
– パスワードを変更するまで何をしてもエラー 1820 になる
SET PASSWORD
の仕様変更
SET PASSWORD の
書式が変更に
● 〜 MySQL 5.6
– SET PASSWORD = PASSWORD('new-password');
●
MySQL 5.7
– SET PASSWORD = 'new-password';
新しい書式に慣れると
古いバージョンのサーバーを使うとき
混乱してしまうかも。
5.7 では ALTER USER を
使う手も有り。
ユーザーアカウントの
ロック・アンロック
ユーザーアカウントのロック
● 一時的にユーザーアカウントを使用不能にしたい。
●
しかしユーザーアカウントを削除したくない。
● そんな場合にロックしてしまいましょう。
– ALTER USER myuser@localhost ACCOUNT LOCK;
– ALTER USER myuser@localhost ACCOUNT UNLOCK;
CREATE USER
IF NOT EXISTS
CREATE USER
IF NOT EXISTS
● ユーザーアカウントがない場合だけ作成する
– 既にある場合には何もしない
– CREATE USER IF NOT EXISTS myuser@localhost
IDENTIFIED BY 'my-password';
●
バッチ処理などでエラーを出したくない場合に便利
●
削除バージョンも有り
– DROP USER IF EXISTS myuser@localhost;
ログイン不可な
ユーザーアカウント
ログインができない
ユーザーアカウントの使い道
● ストアドプロシージャの実行ユーザー
●
ビューの実行ユーザー
● イベントスケジューラーの実行ユーザー
● プロキシー対象ユーザー
作成方法
● プラグインのインストール
– INSTALL PLUGIN mysql_no_login SONAME
'mysql_no_login.so';
●
ユーザーアカウントの作成
– CREATE USER nologinuser@localhost IDENTIFIED
WITH 'mysql_no_login';
プロキシーユーザーの
利用範囲拡大
プロキシーユーザーとは
● 他のユーザーの権限を代理で拝借するユーザーのこと
●
ログイン後に別のユーザー(プロキシー対象ユーザー)の権
限が付与される
● MySQL 5.6 では外部認証と組み合わせて利用される
ユーザー作成例
mysql> install plugin authentication_pam soname
'authentication_pam.so';
Query OK, 0 rows affected (0.02 sec)
mysql> CREATE USER developer@localhost IDENTIFIED BY
'somepassword';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON appdev.* to developer@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER ''@'' IDENTIFIED WITH authentication_pam
-> AS 'mysql, appdev=developer';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT PROXY ON 'developer'@'localhost' TO ''@'';
Query OK, 0 rows affected (0.00 sec)
認証実行例
shell> cat /etc/pam.d/mysql
#%PAM-1.0
auth include system-login
account include system-login
shell> mysql -u myuser -p --enable-cleartext-plugin
Enter password:
mysql> SELECT USER(), @@proxy_user, CURRENT_USER();
+------------------+--------------+---------------------+
| USER() | @@proxy_user | CURRENT_USER() |
+------------------+--------------+---------------------+
| myuser@localhost | ''@'' | developer@localhost |
+------------------+--------------+---------------------+
1 row in set (0.00 sec)
プロキシーユーザーを
外部認証無しでも利用可能に
● 外部認証でないユーザーでもプロキシーユーザーによる認
証が可能に
– ネイティブ認証
– SHA256 認証
● ロールのような使用方法が可能
mysql> CREATE USER proxytest@localhost IDENTIFIED BY
'somepassword';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT PROXY ON developer@localhost TO
proxytest@localhost;
Query OK, 0 rows affected (0.00 sec)
ネイティブ認証
プロキシー
権限付与
SSL の設定が
簡易化
MySQL サーバー起動時に
自動的に鍵を読み込み
● データディレクトリに鍵ファイルが存在する場合、 mysqld は
自動的にオプションを設定
– ssl_ca = ca.pem
– ssl_cert = server-cert.pem
– ssl_key = server-key.pem
MySQL サーバー起動時に
鍵を自動生成
● データディレクトリに鍵ファイルが無ければ起動時に以下の
ファイルを自動生成
– ca-key.pem
– ca.pem
– client-cert.pem
– client-key.pem
– private_key.pem
– public_key.pem
– server-cert.pem
– server-key.pem
●
OpenSSL とリンクしたもののみ
– コミュニティ版のバイナリは YaSSL
mysql_ssl_rsa_setup
● 鍵ファイルを生成するコマンド
– サーバー起動時に自動生成されるものと同じ
– コマンド一発で作成
– 鍵ファイルは MySQL 5.6 以前でも使用可能
TLSv1.2 の
サポート
TLSv1.2 のサポート
● MySQL 5.0 〜 MySQL 5.6
– TLSv1
● MySQL 5.7
– w/OpenSSL … TLSv1, TLSv1.1, TLSv1.2
– w/YaSSL … TLSv1, TLSv1.1
クライアントの挙動が
セキュアに
--ssl オプションの変更
● --ssl オプションの意味が変更された
– MySQL 5.6 まで
● SSL を利用可能であれば使うという意味
● 利用可能でない場合エラーにならず非 SSL 通信
– えっ!?
– MySQL 5.7
● SSL の利用を強制
●
SSL が利用できない場合はエラー終了
SSL がデフォルトで有効化
● SSL が利用可能な場合は SSL を利用するように
●
MYSQL_OPT_SSL_VERIFY_SERVER_CERT を無効化
– クライアント証明書を検証するフラグ
– MySQL 5.6 までは SSL 利用時に自動的に ON
●
付属のクライアントプログラムのみ
●
libmysqlclient では自動的に ON にはならない
– MySQL 5.7 では自動的に ON にならないようになった
●
クライアント証明書がなくても SSL 利用可能
デフォルトの状態が
セキュアに
不要なユーザーアカウント等の廃止
● MySQL 5.7 で廃止された初期設定
– 匿名ユーザー
– test データベース
– root@localhost 以外の管理者アカウント
セキュリティ上のリスクに
なりそうなものは
最初から作らない。
mysql_secure_installation
● MySQL 5.6 では Perl のスクリプトだった
– ドライバによる接続ではなく、 mysql コマンドを呼び出す実
装(よくないね!!)
– 役割は設定を安全にする
● root@localhost のパスワード設定
●
test データベースの削除
●
匿名ユーザーの削除
● localhost 以外の root ユーザーの削除
– MySQL 5.7 では下の 3 つは不要に・・・
●
MySQL 5.7 では C/C++ に書き換えられた
– libmysqlclient を使用
– パスワードバリデーションプラグインの設定が追加された
まとめ
MySQL 5.7 のセキュリティは
超絶進化!!
● 安全性向上
– TLSv1.1/1.2 のサポート
– サーバーはデフォルトの状態で安全に
– クライアントの挙動も安全に
● 管理性向上
– ネイティブパスワード認証におけるプロキシーユーザー
– ログイン不可なアカウントによるアクセス制限
– SSL セットアップの手順簡略化
– アカウントのロック・アンロック
– パスワード期限の設定
– SET PASSWORD の
仕様変更
– ALTER USER コマンドの改良
もうこれは
使うしかない!!
Q&Aご静聴ありがとうございました。

More Related Content

What's hot

MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
Makoto Haruyama
 

What's hot (19)

MySQL 5.7の次のMySQL 8.0はどんなものになるだろう
MySQL 5.7の次のMySQL 8.0はどんなものになるだろうMySQL 5.7の次のMySQL 8.0はどんなものになるだろう
MySQL 5.7の次のMySQL 8.0はどんなものになるだろう
 
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
 
MySQLの冗長化 2013-01-24
MySQLの冗長化 2013-01-24MySQLの冗長化 2013-01-24
MySQLの冗長化 2013-01-24
 
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
 
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
 
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
 
逝くぞ最新版、罠の貯蔵は十分か
逝くぞ最新版、罠の貯蔵は十分か逝くぞ最新版、罠の貯蔵は十分か
逝くぞ最新版、罠の貯蔵は十分か
 
ゆるふわMySQLフェイルオーバー
ゆるふわMySQLフェイルオーバーゆるふわMySQLフェイルオーバー
ゆるふわMySQLフェイルオーバー
 
ぐだぐだInnoDB
ぐだぐだInnoDBぐだぐだInnoDB
ぐだぐだInnoDB
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなし
 
MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良
 
dimSTATから見るベンチマーク
dimSTATから見るベンチマークdimSTATから見るベンチマーク
dimSTATから見るベンチマーク
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
 
MySQL5.7とMariaDB10.1の性能比較(簡易)
MySQL5.7とMariaDB10.1の性能比較(簡易)MySQL5.7とMariaDB10.1の性能比較(簡易)
MySQL5.7とMariaDB10.1の性能比較(簡易)
 
MHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQLMHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQL
 
MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間
 

Similar to What's New in MySQL 5.7 Security

SugarCRM meets Azure
SugarCRM meets AzureSugarCRM meets Azure
SugarCRM meets Azure
Toshiya TSURU
 
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
Hideki Saito
 
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Etsuji Nakai
 

Similar to What's New in MySQL 5.7 Security (20)

MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理
 
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
 
MySQL clients
MySQL clientsMySQL clients
MySQL clients
 
SugarCRM meets Azure
SugarCRM meets AzureSugarCRM meets Azure
SugarCRM meets Azure
 
Snowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceSnowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a Service
 
OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書
 
Infrastructure as code for azure
Infrastructure as code for azureInfrastructure as code for azure
Infrastructure as code for azure
 
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
 
201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf
 
SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01
 
SQL Server 2019 とともに知る Microsoft Data Platform
SQL Server 2019 とともに知る Microsoft Data PlatformSQL Server 2019 とともに知る Microsoft Data Platform
SQL Server 2019 とともに知る Microsoft Data Platform
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
 
Sql server 2014 新機能の紹介 改訂版
Sql server 2014 新機能の紹介 改訂版Sql server 2014 新機能の紹介 改訂版
Sql server 2014 新機能の紹介 改訂版
 
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
 
Cloudstack networking の内側
Cloudstack networking の内側Cloudstack networking の内側
Cloudstack networking の内側
 
Dat004 開発者に捧ぐ「sql server_2016_
Dat004 開発者に捧ぐ「sql server_2016_Dat004 開発者に捧ぐ「sql server_2016_
Dat004 開発者に捧ぐ「sql server_2016_
 

More from Mikiya Okuno

Rdbms qpstudy-okuno
Rdbms qpstudy-okunoRdbms qpstudy-okuno
Rdbms qpstudy-okuno
Mikiya Okuno
 

More from Mikiya Okuno (20)

MySQL Cluster 新機能解説 7.5 and beyond
MySQL Cluster 新機能解説 7.5 and beyondMySQL Cluster 新機能解説 7.5 and beyond
MySQL Cluster 新機能解説 7.5 and beyond
 
MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編
 
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
 
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方
 
リレーショナルデータベースとの上手な付き合い方 long version
リレーショナルデータベースとの上手な付き合い方 long version リレーショナルデータベースとの上手な付き合い方 long version
リレーショナルデータベースとの上手な付き合い方 long version
 
What's New in MySQL 5.7 Replication
What's New in MySQL 5.7 ReplicationWhat's New in MySQL 5.7 Replication
What's New in MySQL 5.7 Replication
 
とあるギークのキーボード遍歴
とあるギークのキーボード遍歴とあるギークのキーボード遍歴
とあるギークのキーボード遍歴
 
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
 
なぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのかなぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのか
 
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
 
人類は如何にして大切な データベースを守るべきか
人類は如何にして大切な データベースを守るべきか人類は如何にして大切な データベースを守るべきか
人類は如何にして大切な データベースを守るべきか
 
RDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考えるRDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考える
 
リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計
 
あなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデルあなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデル
 
MySQLトラブル解析入門
MySQLトラブル解析入門MySQLトラブル解析入門
MySQLトラブル解析入門
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
 
Rdbms qpstudy-okuno
Rdbms qpstudy-okunoRdbms qpstudy-okuno
Rdbms qpstudy-okuno
 

What's New in MySQL 5.7 Security