第 5 回 : セキュリティ 基 礎 編 初 心 者 向 け!MySQL 入 門 Ryusuke Kajiyama / 梶 山 隆 輔 MySQL Sales Consulting Senior Manager, Asia Pacific & Japan
Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle. 3
43% 過 去 1 年 間 にデータへの 不 正 アクセス 被 害 にあった 企 業 の 割 合 Source: Ponemon Institute, 2014 4
大 規 模 な 不 正 アクセス 2013 年 には5 億 レコード 以 上 の 個 人 情 報 が 流 出 レ コード 数 は1 年 で5 倍 増 77% Webサイトの 脆 弱 性 さらに8 件 に1 件 は 深 刻 な 脆 弱 性 8 2013 年 に1,000 万 レコード 以 上 の 被 害 に 遭 った 不 正 アクセス 事 件 2013 年 の 不 正 アクセス 件 数 は62% 増 Source: Internet Security Threat Report 2014, Symantec 5
データベースの 脆 弱 性 と 対 策 設 定 の 不 備 デフォルト 設 定 からの 変 更 過 剰 な 権 限 の 付 与 権 限 設 定 ポリシー 貧 弱 なアクセス 制 御 管 理 者 権 限 付 与 の 限 定 貧 弱 な 認 証 複 雑 なパスワードの 強 制 貧 弱 な 監 査 コンプライアンス & 監 査 ポリシー 暗 号 化 の 不 足 データ バックアップ & ネットワークの 暗 号 化 認 証 情 報 の 不 十 分 な 管 理 mysql_config_editor 利 用, Key Vaults 無 防 備 なバックアップデータ バックアップデータの 暗 号 化 監 視 の 不 備 ユーザ & オブジェクト 監 視 アプリケーションの 脆 弱 性 データベースファイアウォール 6
データベースへの 攻 撃 パターン SQLインジェクション 対 策 : データベースファイアウォール ホワイトリスト 入 力 バリデーション バッファオーバーフロー 対 策 : データベースソフトウェアの 定 期 的 な 更 新 データベースファイアウォール ホワイトリスト 入 力 バリデーション ブルートフォースアタック ( 総 当 たり 攻 撃 ) 対 策 : 設 定 回 数 を 超 えた 回 数 ログインを 試 みたアカウントをロック ネットワーク 傍 受 対 策 : 全 ての 接 続 とデータ 転 送 に SSL/TLS を 必 須 化 マルウェア 対 策 : 強 固 なアクセスコントロール 接 続 元 IPアドレスの 制 限 デフォルト 設 定 の 変 更 7
データベースへ 攻 撃 による 問 題 情 報 流 出 : クレジットカードやその 他 の 個 人 情 報 の 不 正 な 取 得 対 策 : データやネットワークの 暗 号 化 強 固 なアクセス 制 御 DoS(サービス 拒 否 ) 攻 撃 : 負 荷 の 極 めて 高 いクエリの 実 行 対 策 : 各 種 のリソース 利 用 制 限 ( 最 大 接 続 数 セッション 数 タイムアウトなど) 権 限 の 昇 格 : 管 理 者 の 認 証 情 報 の 不 正 な 取 得 対 策 : 認 証 の 強 化 アクセス 制 御 監 査 なりすまし: 他 社 の 認 証 情 報 を 不 正 に 利 用 対 策 : 強 力 なアカウントおよびパスワードポリシー 不 正 な 改 変 : データの 変 更 トランザクション 記 録 の 削 除 対 策 : 認 証 の 強 化 監 査 監 視 バックアップ 8
DBAによるセキュリティ 対 策 アクセス 権 を 得 る 必 要 のあるユーザーのみが 権 限 を 取 得 出 来 るよう 確 実 にする ユーザーおよびアプリケーションが 何 をできるかを 制 限 する ユーザーおよびアプリケーションが どこからデータにアクセスできるかを 制 限 する 何 が いつ 発 生 したかを 適 切 に 監 視 しておく バックアップが 安 全 でセキュアに 取 得 されている 事 を 確 実 にしておく 攻 撃 経 路 を 最 小 化 しておく 9
ファイルシステム 実 行 バイナリの 所 有 者 はroot Best Practice データディレクトリの 所 有 者 は 一 般 ユーザ ( 例 mysql) 他 のユーザがOS 上 でこのディレクトリにアクセスできないように 設 定 すること ( mysql ログディレクトリの 所 有 者 は 一 般 ユーザ ( 例 一 般 ユーザ( 例 mysql)はログイン 不 可 にしておく ソケットファイルにアクセス 可 能 であること ( 全 てのユーザから 参 照 可 能 に) 10
ファイルシステム $ groupadd mysql $ useradd -g mysql mysql $ chown -R root:mysql $MYSQL_HOME $ chmod 750 $MYSQL_HOME $ chown -R mysql:mysql $MYSQL_HOME/data $ chmod 700 $MYSQL_HOME/data NOTE: デフォルトのログ 出 力 先 は$MYSQL_HOME/data 11
データベース MySQLサーバは root ユーザ 以 外 で 起 動 デフォルトでは root ユーザでの 起 動 不 可 mysql ユーザとして 起 動 する 場 合 : --user=mysql MySQLサーバの 起 動 ユーザはOS 上 で 必 要 以 上 の 権 限 やファイルシステムのアクセ ス 許 可 を 与 えないこと ファイルシステム 上 のファイル 操 作 にはFILE 権 限 が 必 要 デフォルトでは 全 ネットワークインターフェースを 使 用 特 定 のインターフェースを 使 用 する 場 合 : --bind-address TCP/IP 経 由 でのアクセスを 無 効 にする 場 合 : --skip-networking 12
MySQLセキュリティ 概 要 Authentication ( 認 証 ) Authorization ( 認 可 ) MySQL Security Encryption ( 暗 号 ) Firewall (ファイアウォール) Auditing ( 監 査 ) 13
MySQLセキュリティ 概 要 MySQL 権 限 管 理 Linux / LDAP Windows AD カスタム Authentication ( 認 証 ) Authorization ( 認 可 ) 管 理 者 DB & オブジェクト プロキシユーザ Security SSL/TLS 公 開 鍵 秘 密 鍵 デジタル 署 名 Encryption ( 暗 号 ) Firewall & Auditing (ファイア ウォール & 監 査 ) ブロック 監 査 コンプライアンス ログイン & SQL 文 実 行 監 視 14
MySQLセキュリティ 概 要 Authentication ( 認 証 ) Authorization ( 認 可 ) MySQL Security Encryption ( 暗 号 ) Firewall (ファイアウォール) Auditing ( 監 査 ) 15
MySQLにおけるユーザ 認 証 管 理 者 権 限 (データベース 全 体 に 関 する 権 限 ) データベース 権 限 (スキーマやデータに 関 する 権 限 ) セッション 制 限 およびオブジェクト 権 限 ユーザ 権 限 に 加 えさらに 粒 度 の 細 かい 制 御 データベースの 作 成 変 更 および 削 除 テーブルの 作 成 変 更 および 削 除 インデックスの 作 成 変 更 および 削 除 INSERT, SELECT, UPDATE, DELETE の 各 SQL 文 の 実 行 ストアドプロシージャの 作 成 変 更 削 除 および 実 行 時 権 限 の 設 定 16
MySQLのユーザアカウント ユーザ 名 と 接 続 元 ホストの 組 み 合 わせ CREATE USER 文 でユーザを 作 成 ユーザアカウントは username @ host 形 式 接 続 元 ホストの 指 定 ホスト 名 またはIPアドレス %をワイルドカードとして 利 用 可 能 サブネットでの 指 定 も 可 能 権 限 の 付 与 / 剥 奪 は GRANT 文 /REVOKE 文 にて mysql> CREATE USER 'scott'@'localhost' IDENTIFIED BY 'tiger'; mysql> CREATE USER 'scott'@'pc%' IDENTIFIED BY 'tiger ; 17
MySQLのユーザーアカウント 管 理 テーブル MySQLデータベース 内 のuserテーブルにてユーザアカウントを 管 理 同 一 ユーザ 名 でも 接 続 元 ホストが 異 なる 場 合 は 別 アカウントとできる ユーザー 名 アクセス 元 Host / IP パスワード 18
不 要 なアカウントの 削 除 [Drop the Extra Roots] root@localhost [mysql]>drop USER root@'127.0.0.1', root@'::1'; ~MySQL 5.6x 19
MySQLの 古 典 的 ユーザ 管 理 方 法 [ 非 推 奨 ] 以 前 のバージョンでのユーザ 追 加 方 法 (5.0 未 満 ) [ 現 在 は 推 奨 されていない 方 法 ] mysql> INSERT INTO mysql.user(...) VALUES (...); mysql> FLUSH PRIVILEGES; usersテーブルを 含 むmysqlデータベースに 対 する DMLでの 直 接 操 作 は 推 奨 されていない 20
メモリにキャッシュされたユーザ 情 報 を 利 用 ユーザ 変 更 システム 表 利 用 FLUSH PRIVILEGES サーバのメモリ 21
MySQL 認 証 方 式 オプション ビルトインの 認 証 方 式 (デフォルト) userテーブルにユーザアカウントとパスワードを 格 納 X.509 クライアント 証 明 書 にてサーバが 認 証 MySQLネイティブ, SHA 256パスワードプラグイン ネイティブのSHA1かプラグインでの SHA-256 によるハッシュが 選 択 可 能 MySQL Enterprise Authentication Microsoft Active Directory Linux PAMs (Pluggable Authentication Modules) LDAPなどをサポート カスタム 認 証 22
MySQL Enterprise Authentication PAM (Pluggable Authentication Modules) 外 部 の 認 証 システムを 利 用 標 準 的 なインターフェース (Unix, LDAP) Windows Windowsのネイティブサービスを 利 用 Windowsログイン 時 に 認 証 済 みの 情 報 を 利 用 可 能 (Windows Active Directory) Pluggable Authentication API Auth Server 23
Authentication APIを 利 用 したプラグイン Joeの 接 続 は''@'%.foobar.com'にマッピングされる ''@'%.foobar.com'を 使 ってプラグインでの 認 証 を 行 う プラグインがJoeを'clerks'@'%.foobar.com'としてアクセスさせる user() users table @@proxy_user clerks@%.foobar.com joe@p1.foobar.com @%.foobar.com current_user() 24
MySQLパスワードポリシー パスワード 無 しのアカウント 全 てのアカウントにパスワードを 設 定 して 不 正 な 利 用 を 防 ぐ 必 要 有 り パスワード 検 証 プラグイン より 強 力 なパスワードを 強 制 パスワードの 失 効 /ローテーション 次 回 ログイン 時 にパスワードのリセットが 必 要 アカウントのロック (MySQL 5.7より 利 用 可 能 ) 25
パスワード MySQL 5.6までのパスワードの 変 更 は mysql> SET PASSWORD [FOR user] = PASSWORD('some password ); SETコマンドでのパスワード 変 更 はMySQL 5.7では 非 推 奨 MySQL 5.7では 下 記 mysql> ALTER USER user IDENTIFIED BY 'auth_string'; 注 : 4.1にてパスワードのハッシュ 化 方 式 変 更 古 いパスワードハッシュ 化 の 利 用 が 必 要 な 場 合 は--old-passwordsオプション 利 用 MySQL 5.7では 古 いパスワードハッシュ 化 は 非 サポート 26
MySQLセキュリティ 概 要 Authentication ( 認 証 ) Authorization ( 認 可 ) MySQL Security Encryption ( 暗 号 ) Firewall (ファイアウォール) Auditing ( 監 査 ) 27
MySQL 権 限 管 理 テーブル user db tables_priv ユーザアカウント グローバル 権 限 データベースレベル 権 限 データベース テーブル オブジェクト ユーザ ホスト テーブルレベル 権 限 テーブルおよび 列 columns_priv 特 定 の 列 procs_priv ストアドプロシージャ ファンクション 各 ストアドプログラム 単 位 proxies_priv プロキシユーザ プロキシ 権 限 28
MySQL 権 限 管 理 連 続 的 にチェック 設 定 ユーザ 許 可 および 権 利 監 査 & レビューのポイント Who どのような 操 作 を 行 うことが 想 定 されているのか What 何 を 制 限 することを 想 定 されているのか When 想 定 されていないタイミングでの 利 用 がないか Where どのホストから 接 続 されることが 想 定 されているのか MySQLでは 確 実 に 制 限 を 行 うための 設 定 をシンプルに 利 用 可 能 29
Grant/Revoke 権 限 が 影 響 するタイミングは テーブルとカラム:データ 参 照 / 変 更 時 データベース:USE <dbname> 実 行 時 グローバル 権 限 とパスワード: 接 続 時 http://dev.mysql.com/doc/refman/5.6/ja/privilege-changes.html 30
グローバル 権 限 SUPER CHANGE MASTER, KILL, PURGE MASTER LOGS, SET GLOBAL SHUTDOWN RELOAD PROCESS SHOW ENGINE INNODB STATUSの 実 行 にも 必 要 FILE ALL WITH GRANT OPTION 31
付 与 されている 権 限 の 確 認 ユーザに 付 与 されている 権 限 の 確 認 コマンド mysql> SHOW GRANTS [FOR user] http://dev.mysql.com/doc/refman/5.6/ja/show-grants.html 32
利 用 するリソースの 制 限 MAX_QUERIES_PER_HOUR MAX_UPDATES_PER_HOUR MAX_CONNECTIONS_PER_HOUR MAX_USER_CONNECTIONS http://dev.mysql.com/doc/refman/5.6/ja/user-resources.html http://dev.mysql.com/doc/refman/5.6/ja/grant.html 33
MySQLセキュリティ 概 要 Authentication ( 認 証 ) Authorization ( 認 可 ) MySQL Security Encryption ( 暗 号 ) Firewall (ファイアウォール) Auditing ( 監 査 ) 34
MySQLでの 暗 号 SSL/TLS 暗 号 化 MySQLクライアント/サーバ 間 レプリケーション: マスター/スレーブ 間 データ 暗 号 化 AES 暗 号 / 復 号 MySQL Enterprise Encryption 非 対 称 暗 号 / 復 号 公 開 鍵 と 秘 密 鍵 の 生 成 セッション 固 有 鍵 デジタル 署 名 MySQL Enterprise Backup AES 暗 号 / 復 号 35
SSL/TLS 暗 号 化 接 続 MySQLクライアント/サーバ 間 レプリケーション: マスター/スレーブ 間 MySQLでは 接 続 ごとの 暗 号 化 が 可 能 X509 標 準 準 拠 のIdentity Verification (アイデンティティの 検 証 ) 適 切 なSSL 証 明 書 やキーファイルの 指 定 信 頼 できるCA (Certificate Authorities / 認 証 局 ) を 利 用 可 能 CRL (Certificate Revocation List / 証 明 書 失 効 リスト) サポート 36
SSL Trust Levels クライアント サーバ 暗 号 化 クライアントキーペア サーバキーペア Signed Valid Signed Valid (--skip-ssl) (--skip-ssl) CA key pair key pair REQUIRE X509 key pair REQUIRE SUBJECT --verifyserver-cert key pair 37
SSLに 関 する 権 限 権 限 付 与 時 にREQUIRE SSLを 利 用 可 能 REQUIRE NONE REQUIRE SSL REQUIRE X509 REQUIRE ISSUER 'issuer' REQUIRE SUBJECT 'subject' REQUIRE CIPHER 'cipher http://dev.mysql.com/doc/refman/5.6/ja/ssl-connections.html 38
SSLに 関 する 権 限 GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' IDENTIFIED BY 'goodsecret' REQUIRE SUBJECT '/C=EE/ST=Some-State/L=Tallinn/ O=MySQL demo client certificate/ CN=Tonu Samuel/Email=tonu@example.com' AND ISSUER '/C=FI/ST=Some-State/L=Helsinki/ O=MySQL Finland AB/CN=Tonu Samuel/Email=tonu@example.com' AND CIPHER 'EDH-RSA-DES-CBC3-SHA'; 39
MySQL Enterprise Encryption MySQLの 暗 号 化 関 数 AES256による 対 称 暗 号 ( 全 Edition 共 通 ) 公 開 鍵 方 式 / 非 対 称 鍵 暗 号 方 式 RSA 暗 号 鍵 管 理 機 能 公 開 鍵 および 秘 密 鍵 の 生 成 鍵 の 交 換 方 式 : DH (ディフィー ヘルマン 鍵 共 有 ) 署 名 および 検 証 Sign and verify data functions デジタル 署 名 の 暗 号 化 ハッシュ 検 証 およびバリデーション RSA, DSA 40
MySQL Enterprise Encryption MySQLサーバ 内 で 暗 号 化 / 復 号 化 重 要 データ 暗 号 化 公 開 鍵 暗 号 化 データ 復 号 化 秘 密 鍵 重 要 データ 秘 密 鍵 / 公 開 鍵 のペア - MySQL Enterprise Encryptionの 関 数 で 生 成 - 外 部 で 生 成 ( 例 : OpenSSL) 41
MySQL Enterprise Encryption アプリで 暗 号 化 /MySQLで 復 号 化 アプリケーション 重 要 データ 暗 号 化 公 開 鍵 暗 号 化 データ 復 号 化 秘 密 鍵 重 要 データ 42
MySQL Enterprise Encryption アプリで 暗 号 化 /MySQLで 格 納 /アプリで 復 号 化 アプリケーション アプリケーション 重 要 データ 暗 号 化 公 開 鍵 暗 号 化 データ 復 号 化 秘 密 鍵 重 要 データ 43
MySQL Enterprise Encryption Oracle Key Vault にて 鍵 を 生 成 (または 外 部 で 生 成 ) アプリケーション 重 要 データ 暗 号 化 公 開 鍵 暗 号 化 データ 復 号 化 秘 密 鍵 重 要 データ Oracle Key Vault - Oracle Key Vaultにて 鍵 を 作 成 & 管 理 - 外 部 で 生 成 ( 例 : OpenSSL) 44
MySQLセキュリティ 概 要 Authentication ( 認 証 ) Authorization ( 認 可 ) MySQL Security Encryption ( 暗 号 ) Firewall (ファイアウォール) Auditing ( 監 査 ) 45
データベース ファイアウォール SQLインジェクション: Webアプリケーション 最 頻 出 の 脆 弱 性 77%のWebに 脆 弱 性 8 件 中 1 件 に 深 刻 な 脆 弱 性 MySQL Enterprise Firewall SQL 文 の 実 行 をリアルタイムでモニタリング ホワイトリストに 基 づく ルール を 自 動 的 に 生 成 ポリシーに 違 反 するトランザクションを 検 知 または ブロック 46
MySQL Enterprise Firewall SQLインジェクション 対 策 リアルタイムで 保 護 ポジティブ セキュリティ モデル 実 行 されるクエリーを 分 析 してホワイトリストと 照 合 アプリケーション 処 理 を 学 習 してホワイトリストを 自 動 作 成 ユーザー 毎 に SQL 実 行 パターンを 記 録 して 自 動 的 にホワイトリストを 作 成 不 審 なアクセスをブロック ポリシーに 違 反 するトランザクションを 検 知 または ブロック 透 過 的 アプリケーションを 変 更 する 必 要 無 し 47
MySQL Enterprise Firewall ホワイトリストを 用 いたSQLインジェクション 対 策 ポリシーに 違 反 するトランザクションを 検 知 または ブロック ログに 記 録 & 検 証 48
MySQLセキュリティ 概 要 Authentication ( 認 証 ) Authorization ( 認 可 ) MySQL Security Encryption ( 暗 号 ) Firewall (ファイアウォール) Auditing ( 監 査 ) 49
データベース 監 査 セキュリティおよびコンプライアンスのための 監 査 FIPS, HIPAA, PCI-DSS, SOX, DISA STIG, MySQLのビルトインのログ: 一 般 ログ エラーログ MySQL Enterprise Audit ログオン クエリーの 情 報 を 監 査 可 能 ポリシーを 設 定 可 能 :フィルタリング ログローテーション 動 的 に 設 定 を 変 更 可 能 :Audit 設 定 時 にサーバの 再 起 動 が 不 要 Oracle Audit Vault 対 応 50
MySQL Enterprise Audit 3. Joe の 接 続 と 実 行 したSQLをログに 記 録 1. DBAがAuditプラグインを 有 効 化 2. ユーザ Joe が 接 続 しSQLを 実 行 51
MySQLのセキュリティ 強 化 策 インストール mysql_secure_installation MySQLを 常 に 最 新 版 に MySQL Installer for Windows Yum/Apt レポジトリ 設 定 ファイアウォール 監 査 とログ ネットワークアクセスの 制 限 変 更 点 の 監 視 ユーザ 管 理 余 分 なアカウントの 削 除 最 低 限 の 権 限 付 与 ユーザと 権 限 の 監 査 パスワード 強 力 なパスワードポリシー ハッシュ 失 効 パスワード 検 証 プラグイン 暗 号 化 セキュアな 接 続 のための SSL/TLS データ 暗 号 化 (AES, RSA) バックアップ バックアップの 監 視 バックアップの 暗 号 化 52
MySQL 5.7 Linux パッケージ セキュリティ 関 連 の 改 良 testデータベースの 削 除 無 名 ユーザの 作 成 を 割 愛 rootユーザはローカルホストのみ 暗 号 化 された 通 信 を 利 用 できるよ うに 設 定 自 動 的 に SSL/RSA 証 明 書 /キーを 作 成 EE : 証 明 書 /キーがなければ 起 動 時 に CE : 新 ユーティリティ mysql_ssl_rsa_setup で SSL 証 明 書 /キーを 自 動 検 出 暗 号 化 されたTLS 接 続 を 試 行 データのインポート/エクスポート 用 のディレクトリをコンパイル 時 に 指 定 済 み OSのmysqlユーザとグループを 作 成 し ログイン 抑 止 など 設 定 データのインポート/エクスポートの 無 効 化 が 可 能 に secure-file-privの 値 をNULLに 各 種 のセキュリティセットアップのステップをMySQL Installer for Windowsに 追 加 53
MySQLのセキュリティ 強 化 策 : インストール MySQL_Secure_Installation / MySQL Installer for Windows rootアカウントに 強 固 なパスワードを 設 定 ローカルホスト 以 外 からアクセス 可 能 なrootアカウントを 削 除 無 名 ユーザアカウントを 削 除 testデータベースを 削 除 無 名 ユーザを 含 め 全 てのユーザからアクセス 可 能 MySQLを 常 に 最 新 版 に レポジトリ YUM/APT/SUSE MySQL Installer for Windows 54
mysql_secure_installationを 利 用 した 不 要 アカウント 削 除 rootアカウントパスワード 設 定 不 要 なアカウントの 削 除 rootのリモートログイン 不 可 testデータベースの 削 除 参 照 :4.4.5 mysql_secure_installation 55
補 足 :mysql_secure_installation MySQL 5.6をrpmでインストールした 場 合 rootのパスワードは 自 動 的 に 設 定 され 後 で 変 更 する 必 要 がある パスワードは $HOME/. mysql_secret ファイルに 記 載 されている パスワードを 変 更 するまではrootユーザで 何 も 実 行 できない MySQL 5.6の 場 合 mysql_install_db に--random-password が 指 定 でき DB 作 成 時 に 合 わせて 以 下 の 操 作 を 実 行 可 能 rootユーザにランダムなパスワードを 設 定 パスワードの 設 定 ファイル パスワードを 変 更 するまでの 操 作 制 限 は 上 記 と 同 様 anonymousユーザを 削 除 56
ソフトウェア 更 新 データベースおよびOSのメンテナンス セキュリティを 確 保 するためには 常 にOSおよびMySQLに 最 新 パッチを 適 用 することが 求 められる 再 起 動 を 求 められることもあり 運 用 計 画 の 工 夫 が 必 要 MySQLレプリケーションを 利 用 して 停 止 時 間 を 最 小 限 に 抑 える 工 夫 も 順 番 に 更 新 を 行 う ベストプラクティスとしてはスレーブから 先 に 更 新 MySQL 5.6 以 上 では GTIDベースのレプリケーションをサポート 順 番 に 更 新 を 行 うことがよりシンプルに 可 能 OSベンダが 用 意 したセキュリティガイドラインも 参 考 に 例 : http://www.oracle.com/technetwork/articles/servers-storage-admin/tips-harden-oracle-linux-1695888.html 57
MySQLのセキュリティ 強 化 策 : 設 定 SQL 実 行 や 接 続 の 監 査 MySQL Enterprise Audit 利 用 または 一 時 的 に 一 般 ログを 有 効 常 に 監 視 と 検 査 リモートアクセス 無 効 化 / 制 限 ローカルのみの 場 合 は skip-networking または bind-address=127.0.0.1 リモートアクセスがある 場 合 は 接 続 元 ホストまたはIPアドレスを 制 限 rootユーザ 名 を 変 更 サーバ 内 のローカルファイルへの アクセスを 無 効 化 LOAD DATA LOCAL INFILEを 無 効 化 MySQLをデフォルトとは 異 なるTCP/IPポートで 運 用 MySQLの 発 見 リスクを 下 げる OSのMySQLユーザの 権 限 を 削 減 secure-authを 有 効 に 古 いパスワードハッシュの 接 続 を 拒 否 5.7からは 同 様 の 挙 動 がデフォルトに 58
MySQLのセキュリティ 強 化 策 : ベストプラクティス パラメタ 名 推 奨 値 備 考 secure_file_priv データのロード 専 用 ディレクトリ 特 定 の 場 所 からのみデータのロードを 許 可 MySQLにOSの 様 々な 場 所 にアクセスさせない symbolic_links Boolean NO ファイルシステムのセキュアではないディレクトリ へのリダイレクトを 防 ぐ general-log Boolean OFF デバッグ 時 にのみONに log-raw デフォルト 値 - OFF デバッグ 時 にのみONに skip-networking または bind-address ON 127.0.0.1 ローカルアクセスのみの 場 合 は 外 部 からの 接 続 をブロック SSL オプション 値 を 有 効 に ネットワークの 暗 号 化 推 奨 59
ファイルシステム (Secure_file_privの 設 定 ) LOAD_FILE() 関 数 および LOAD DATA および SELECT... INTO OUTFILE 文 がア クセス 可 能 なディレクトリを 設 定 したディレクトリに 限 定 1. 専 用 のディレクトリを 作 成 2. mysqlをディレクトリのオーナーに 設 定 3. my.cnfの[mysqld]セクションに secure_file_priv "を 追 加 4. mysqlを 再 起 動 60
Since: MySQL 5.0.38~ Account Management (File_privの 設 定 ) インストール 後 の 作 業 :OS 上 のファイルへのアクセスを 制 限 1. 専 用 のディレクトリを 作 成 2. mysqlをディレクトリのオーナーに 設 定 3. my.cnfの[mysqld]セクションに secure_file_priv "を 追 加 4. mysqlを 再 起 動 [ 設 定 前 ] [ 設 定 後 ] 61
MySQLのセキュリティ 強 化 策 : パスワードポリシー 強 力 なパスワードポリシーの 強 制 パスワードハッシュ パスワードの 失 効 パスワード 検 証 プラグイン 認 証 プラグイン 各 コンポーネントからのパスワードポリシーを 引 き 継 ぎ LDAP, Windows Active Directory, など 使 用 していないアカウントを 無 効 に アカウントのロック (MySQL 5.7) 62
Account Management (Password Validation Plugin) Since: MySQL 5.6.6~ インストール 後 の 作 業 :パスワードポリシーのインストール 英 数 字 の 混 在 を 強 制 する 文 字 数 をN 文 字 以 上 にする 特 定 のキーワードはパスワードに 指 定 できなくする といった 対 応 が 可 能 [mysql]> install plugin validate_password soname 'validate_password.so'; 例 ) 8 文 字 以 下 小 文 字 のみ 数 字 未 入 力 辞 書 に 登 録 済 みの 文 字 はパスワードとしては 不 適 切 な 為 ERROR 1819で 拒 否 される 63
MySQLのセキュリティ 強 化 策 : 暗 号 化 暗 号 化 された 通 信 など SSL/TLSによる 通 信 の 暗 号 化 X.509による 要 素 の 追 加 ユーザ/パスワード その 他 の 認 証 クライアントの 認 証 を 確 実 に さらなる 信 頼 性 データベースおよびアプリケーションレベルで 重 要 データを 暗 号 化 データベースまたはアプリケーションの 関 数 でデータをマスク/ 匿 名 化 個 人 ID, クレジットカード, 公 開 鍵 はアプリケーションでの 暗 号 時 のみ 利 用 することを 検 討 64
MySQLのセキュリティ 強 化 策 : バックアップ バックアップはビジネス 面 からも 重 要 攻 撃 や 障 害 後 のリストアに 利 用 他 のサーバへの 移 行 やマイグレーション 複 製 監 査 の 試 行 に 利 用 定 期 的 にバックアップ バックアップの 監 視 バックアップデータの 暗 号 化 65
アプリケーションおよび 認 証 情 報 ベストプラクティス アプリケーション ユーザ 名 /パスワードなど 認 証 情 報 の 共 有 は 最 小 限 より 高 い 粒 度 で アプリケーションやサーバ 全 体 で 共 有 しない 認 証 情 報 の 変 更 機 能 を 持 たせる 全 てのパスワードを 同 時 に 変 更 する 必 要 はない 認 証 情 報 の 変 更 自 体 もセキュアかつ 分 かりやすく アプリケーションコード 内 への 認 証 情 報 埋 め 込 みは 避 ける アプリケーションの 再 デプロイをせずに 変 更 できるように バージョン 管 理 システム 内 にアプリケーションと 同 様 に 格 納 されないように アプリケーションから 認 証 情 報 へのアクセスもセキュアな 方 法 で 66
MySQL Enterprise Edition 67
MySQL Enterprise Edition ビジネスクリティカルなシステムの 運 用 を 効 率 化 MySQL 導 入 の 最 適 化 Get Immediate Help if/when Needed Improve Performance & Scalability ROIの 最 適 化 をサポート ユーザビリティ 顧 客 満 足 の 向 上 Increase Customer Satisfaction Mitigate Risks Reduce TCO Enhance Agility & Productivity 68
MySQL Enterprise Edition 拡 張 機 能 管 理 ツール サポート 拡 張 性 高 可 用 性 セキュリティ 監 査 暗 号 化 監 視 バックアップ 開 発 管 理 マイグレーション 技 術 サポート コンサルティングサポート オラクル 製 品 との 動 作 保 証 69
MySQL Enterprise Editionによるデータ 保 護 MySQL Enterprise Backup オンラインバックアップ/リカバリ クラウドストレージへバックアップ 差 分 バックパック & ポイントイン タイムリカバリ MySQL Enterprise Encryption AES256による 対 称 暗 号 公 開 鍵 方 式 / 非 対 称 暗 号 暗 号 学 的 ハッシュによる 電 子 署 名 照 合 および 妥 当 性 確 認 MySQL Enterprise Auth. 外 部 認 証 との 統 合 (PAM, Windows, LDAP, etc.) MySQL Enterprise Monitorで のセキュリティアドバイザ MySQL Enterprise Audit 接 続 ログインおよびSQL 実 行 の 記 録 ポリシーベースのフィルタリン グおよびログ 切 り 替 え オラクルの 監 査 仕 様 に 準 拠 し たXMLベースの 出 力 70
MySQL Editions Standard Edition Enterprise Edition Cluster CGE 機 能 概 要 MySQL Database MySQL Connectors MySQL Replication MySQL Fabric, Utilities MySQL Partitioning Storage Engine: MyISAM, InnoDB Storage Engine: NDB (ndbcluster) MySQL Workbench SE/EE* MySQL Enterprise Monitor* MySQL Enterprise Backup* MySQL Enterprise Authentication ( 外 部 認 証 サポート) * MySQL Enterprise Audit (ポリシーベース 監 査 機 能 ) * MySQL Enterprise Encryption ( 非 対 称 暗 号 化 )* MySQL Enterprise Firewall (SQLインジェクション 対 策 )* MySQL Enterprise Scalability (スレッドプール) * MySQL Enterprise High Availability (HAサポート) * Oracle Enterprise Manager for MySQL* MySQL Cluster Manager (MySQL Cluster 管 理 ) * MySQL Cluster Geo-Replication * 商 用 版 のみで 利 用 可 能 な 追 加 機 能 71
Standard SE MySQL Editions Enterprise EE Oracle Premium Support 24 時 間 365 日 サポート インシデント 数 無 制 限 ナレッジベース バグ 修 正 &パッチ 提 供 コンサルティングサポート オラクル 製 品 との 動 作 保 証 Oracle Linux Oracle VM Oracle Solaris Oracle Enterprise Manager Oracle GoldenGate Oracle Data Integrator Oracle Fusion Middleware Oracle Secure Backup Oracle Audit Vault and Database Firewall Cluster CGE 最 新 の 対 比 表 は MySQL Editionsのサイトを 参 照 下 さい 72
MySQL Supportの 特 徴 パフォーマンス チューニング や SQLチューニング まで 通 常 サポートの 範 囲 内 コンサルティングサポートが 含 まれており クエリ レビュー パフォーマンス チューニング レ プリケーション レビュー パーティショニング レビュー などに 対 応 可 能 http://www-jp.mysql.com/support/consultative.html ソースコードレベルでサポート 可 能 ほとんどのサポートエンジニアがソースを 読 めるため 対 応 が 早 い 開 発 エンジニアとサポートエンジニアも 密 に 連 携 している 物 理 サーバー 単 位 課 金 CPU 数 コア 数 に 依 存 しない 価 格 体 系 オラクルのライフタイムサポート サポートポリシーが 明 確 であるため 長 期 的 な 計 画 を 立 てやすい http://www-jp.mysql.com/support/ 73
参 考 情 報 74
参 考 情 報 MySQL Webサイト https://www-jp.mysql.com/ MySQLコミュニティWebページ http://dev.mysql.com/ 日 本 MySQLユーザー 会 (メーリングリスト 有 り) http://www.mysql.gr.jp/ イベント 案 内 mysql.comのイベントページ https://www-jp.mysql.com/news-and-events/events/ オラクル 社 全 体 のイベントページ(OTN Japan - イベント セミナー) http://events.oracle.com/search/search 75
MySQLのドキュメント MySQL Developer Zone(http://dev.mysql.com/)にドキュメント 類 が 公 開 されている 以 下 のドキュメントは2015 年 6 月 に 日 本 語 版 が 公 開 された MySQL 5.6 リファレンスマニュアル ( 含 むMySQL Cluster 7.3-7.4マニュアル) http://dev.mysql.com/doc/refman/5.6/ja/index.html MySQL Enterprise Monitor 3.0.18 マニュアル http://dev.mysql.com/doc/mysql-monitor/3.0/ja/index.html MySQL Enterprise Backup ユーザーズガイド (バージョン 3.11.1) http://dev.mysql.com/doc/mysql-enterprise-backup/3.11/ja/index.html 上 記 日 本 語 版 公 開 以 降 に 英 語 版 ドキュメントのみ 修 正 されている 内 容 も あるため ドキュメント 参 照 時 は 英 語 版 ドキュメントも 合 わせてご 参 照 下 さい (URLの ja 部 分 を en に 変 更 すると 英 語 版 ドキュメントが 表 示 可 能 ) 76
MySQLのドキュメント MySQL Documentation: MySQL Reference Manuals http://dev.mysql.com/doc/ MySQL Documentation: MySQL Workbench http://dev.mysql.com/doc/index-gui.html MySQL Documentation: MySQL Utilities/MySQL Fabric http://dev.mysql.com/doc/index-utils-fabric.html MySQL Documentation: Connectors and APIs http://dev.mysql.com/doc/index-connectors.html 77
MySQLのドキュメント MySQL Documentation: Other MySQL Documentation http://dev.mysql.com/doc/index-other.html world database などのサンプルデータベースもダウンロード 可 能 MySQL Documentation: MySQL Enterprise Products http://dev.mysql.com/doc/index-enterprise.html 商 用 版 製 品 に 関 するドキュメント 78
MySQL Enterprise Edition & Cluster CGEの 試 使 用 30 日 間 トライアル Oracle Software Delivery Cloud http://edelivery.oracle.com/ 製 品 パックを 選 択 : MySQL Database 製 品 マニュアル http://dev.mysql.com/doc/index-enterprise.html 79
オラクルユニバーシティ MySQL 研 修 コース 名 日 数 価 格 ( 税 込 ) 開 催 日 程 MySQL for Beginners 4 220,320 お 問 い 合 わせください MySQL データベース 管 理 I 3 165,240 MySQL データベース 管 理 II 2 110,160 2015/09/07-09, 2015/10/26-28, 2015/12/02 04 2015/09/24-25, 2015/10/05 06, 2015/09/29 30, 2015/12/07 08 MySQL High Availability 3 231,336 お 問 い 合 わせください MySQL データーベース 管 理 I/II, MySQL Performance TuningはMySQL5.5 対 応 MySQL 入 門 は MySQL 5.0/5.1 対 応 です コース 開 催 予 定 は2015 年 7 月 現 在 のものです 開 催 日 程 の 最 新 情 報 はOracle University ホームページ ( http://www.oracle.com/jp/education/ ) にてご 確 認 ください 価 格 ( 税 込 み)は2015 年 7 月 現 在 の 価 格 です Oracle PartnerNetwork 会 員 様 は パートナー 割 引 価 格 で 受 講 いただけます 80
管 理 者 向 け MySQL 5.6 対 応 認 定 資 格 Oracle Certified Professional, MySQL 5.6 Database Administrator Oracle Certified Professional, MySQL 5.6 Database Administrator 資 格 は パーティショニング お よびレプリケーションにおける 機 能 強 化 やパフォーマンス 監 視 と 診 断 のPERFORMANCE_SCHEMA の 使 用 などMySQL 5.6の 新 機 能 を 含 むMySQLデータベースのインストール 複 製 チューニング およびセキュリティ 設 定 など 幅 広 い 管 理 スキルを 証 明 します 認 定 試 験 : MySQL 5.6 Database Administrator (1Z0-883) 本 試 験 に 合 格 することで 資 格 取 得 できます 日 本 語 試 験 英 語 試 験 共 に 受 験 可 能 81
開 発 者 向 け MySQL 5.6 対 応 認 定 資 格 Oracle Certified Professional, MySQL 5.6 Developer Oracle Certified Professional, MySQL 5.6 Database Administrator 資 格 は MySQL データ タイプや SQLシンタックス テーブルやスキーマなどの 各 種 オブジェクト ストアド プロシージャ ビュー 結 合 など MySQL データベースを 使 用 したアプリケーション 開 発 に 必 要 なスキルを 証 明 します 認 定 試 験 : MySQL 5.6 Developer (1Z0-882) 本 試 験 に 合 格 することで 資 格 取 得 できます 日 本 語 試 験 英 語 試 験 共 に 受 験 可 能 82
管 理 者 向 け MySQL 5.6 認 定 資 格 取 得 パス 新 規 取 得 もアップグレードも 一 試 験 で 学 習 ( 研 修 受 講 ) 受 験 資 格 取 得 これから 資 格 取 得 を 目 指 す 方 MySQL データベース 管 理 I 3 日 間 1Z0-883: MySQL 5.6 Database Administrator Oracle Certified Professional, MySQL 5.6 Database Administrator MySQL データベース 管 理 II 必 須 2 日 間 * MySQL データベース 管 理 I/II コース では MySQL 5.6 新 機 能 概 要 を 補 足 資 料 として 配 布 します OCP MySQL 5 DBA 資 格 取 得 者 推 奨 83
84