Más contenido relacionado La actualidad más candente (19) Similar a What's New in MySQL 5.7 Security (20) What's New in MySQL 5.7 Security1. 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 新機能徹底攻略講座
3. セキュリティ関係の新機能
● パスワード期限の設定
●
ユーザーのロック、アンロック
● SET PASSWORD コマンドの仕様変更
● CREATE USER … IF NOT EXISTS
●
ログイン不可能なユーザーアカウント
●
SSL のセットアップが容易に
– キーファイルの自動生成
– mysql_ssl_rsa_setup
●
透過的テーブルスペース暗号化
●
デフォルトの状態がセキュアに
– test データベースの廃止
– 匿名ユーザーの廃止
– localhost 以外の root の廃止
5. ALTER USER コマンドの改良
● MySQL 5.6 で追加されたコマンド
– MySQL 5.6 でできたのは、パスワードを期限切れ( EXPIRED )
にすることだけ
● MySQL 5.7 では以下の機能が加わった
– パスワード期限の設定
– パスワードの変更
– 認証プラグインの変更
– SSL 関係の設定
– アカウントのロック・アンロック
– リソース制限の設定や変更
– プロキシーユーザーのマッピング
9. SET PASSWORD の
書式が変更に
● 〜 MySQL 5.6
– SET PASSWORD = PASSWORD('new-password');
●
MySQL 5.7
– SET PASSWORD = 'new-password';
新しい書式に慣れると
古いバージョンのサーバーを使うとき
混乱してしまうかも。
5.7 では ALTER USER を
使う手も有り。
13. CREATE USER
IF NOT EXISTS
● ユーザーアカウントがない場合だけ作成する
– 既にある場合には何もしない
– CREATE USER IF NOT EXISTS myuser@localhost
IDENTIFIED BY 'my-password';
●
バッチ処理などでエラーを出したくない場合に便利
●
削除バージョンも有り
– DROP USER IF EXISTS myuser@localhost;
16. 作成方法
● プラグインのインストール
– INSTALL PLUGIN mysql_no_login SONAME
'mysql_no_login.so';
●
ユーザーアカウントの作成
– CREATE USER nologinuser@localhost IDENTIFIED
WITH 'mysql_no_login';
19. ユーザー作成例
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)
20. 認証実行例
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)
27. TLSv1.2 のサポート
● MySQL 5.0 〜 MySQL 5.6
– TLSv1
● MySQL 5.7
– w/OpenSSL … TLSv1, TLSv1.1, TLSv1.2
– w/YaSSL … TLSv1, TLSv1.1
29. --ssl オプションの変更
● --ssl オプションの意味が変更された
– MySQL 5.6 まで
● SSL を利用可能であれば使うという意味
● 利用可能でない場合エラーにならず非 SSL 通信
– えっ!?
– MySQL 5.7
● SSL の利用を強制
●
SSL が利用できない場合はエラー終了
30. SSL がデフォルトで有効化
● SSL が利用可能な場合は SSL を利用するように
●
MYSQL_OPT_SSL_VERIFY_SERVER_CERT を無効化
– クライアント証明書を検証するフラグ
– MySQL 5.6 までは SSL 利用時に自動的に ON
●
付属のクライアントプログラムのみ
●
libmysqlclient では自動的に ON にはならない
– MySQL 5.7 では自動的に ON にならないようになった
●
クライアント証明書がなくても SSL 利用可能
33. mysql_secure_installation
● MySQL 5.6 では Perl のスクリプトだった
– ドライバによる接続ではなく、 mysql コマンドを呼び出す実
装(よくないね!!)
– 役割は設定を安全にする
● root@localhost のパスワード設定
●
test データベースの削除
●
匿名ユーザーの削除
● localhost 以外の root ユーザーの削除
– MySQL 5.7 では下の 3 つは不要に・・・
●
MySQL 5.7 では C/C++ に書き換えられた
– libmysqlclient を使用
– パスワードバリデーションプラグインの設定が追加された
35. MySQL 5.7 のセキュリティは
超絶進化!!
● 安全性向上
– TLSv1.1/1.2 のサポート
– サーバーはデフォルトの状態で安全に
– クライアントの挙動も安全に
● 管理性向上
– ネイティブパスワード認証におけるプロキシーユーザー
– ログイン不可なアカウントによるアクセス制限
– SSL セットアップの手順簡略化
– アカウントのロック・アンロック
– パスワード期限の設定
– SET PASSWORD の
仕様変更
– ALTER USER コマンドの改良
もうこれは
使うしかない!!