文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  多因素驗證

8.2.18 多因素驗證

驗證是指一方讓另一方滿意地建立其身分。多因素驗證 (MFA) 是在驗證過程中使用多個驗證值(或「因素」)。MFA 提供比單因素/單一因素驗證 (1FA/SFA) 更高的安全性,後者僅使用一種驗證方法,例如密碼。MFA 啟用其他驗證方法,例如使用多個密碼進行驗證,或使用智慧卡、安全金鑰和生物識別讀取器等裝置進行驗證。

MySQL 包含對多因素驗證的支援。此功能包括需要多達三個驗證值的 MFA 形式。也就是說,MySQL 帳戶管理除了現有的 1FA 支援外,還支援使用 2FA 或 3FA 的帳戶。

當用戶端嘗試使用單因素帳戶連線到 MySQL 伺服器時,伺服器會叫用帳戶定義所指示的驗證外掛程式,並根據外掛程式報告成功或失敗來接受或拒絕連線。

對於具有多個驗證因素的帳戶,流程類似。伺服器會按照帳戶定義中列出的順序叫用驗證外掛程式。如果外掛程式報告成功,則如果外掛程式是最後一個,伺服器會接受連線,或者如果有任何剩餘的外掛程式,則會繼續叫用下一個外掛程式。如果任何外掛程式報告失敗,伺服器會拒絕連線。

以下各節更詳細地介紹 MySQL 中的多因素驗證。

多因素驗證支援的元素

驗證因素通常包括以下類型的資訊

  • 您知道的東西,例如秘密密碼或密語。

  • 您擁有的東西,例如安全金鑰或智慧卡。

  • 您的某種特徵;也就是說,生物識別特徵,例如指紋或臉部掃描。

您知道的東西」因素類型依賴於在驗證過程的兩端都保持秘密的資訊。不幸的是,秘密可能會受到損害:有人可能會看到您輸入密碼或用網路釣魚攻擊欺騙您,伺服器端儲存的密碼可能會因安全性漏洞而洩露,等等。使用多個密碼可以提高安全性,但每個密碼仍然可能受到損害。使用其他因素類型可以提高安全性,並降低損害風險。

在 MySQL 中實作多因素驗證包含以下元素

設定多因素驗證原則

authentication_policy = '*,authentication_webauthn,'

SET GLOBAL authentication_policy='*,*,';

表 8.11 authentication_policy 範例值

authentication_policy 值 有效的原則
'*' 僅允許建立或修改具有一個因素的帳戶。
'*,*' 僅允許建立或修改具有兩個因素的帳戶。
'*,*,*' 僅允許建立或修改具有三個因素的帳戶。
'*,' 允許建立或修改具有一個或兩個因素的帳戶。
'*,,' 允許建立或修改具有一個、兩個或三個因素的帳戶。
'*,*,' 允許建立或修改具有兩個或三個因素的帳戶。
'*,auth_plugin' 允許建立或修改具有兩個因素的帳戶,其中第一個因素可以是任何驗證方法,第二個因素必須是指定的外掛程式。
'auth_plugin,*,' 允許建立或修改具有兩個或三個因素的帳戶,其中第一個因素必須是指定的外掛程式。
'auth_plugin,' 允許建立或修改具有一個或兩個因素的帳戶,其中第一個因素必須是指定的外掛程式。
'auth_plugin,auth_plugin,auth_plugin' 允許建立或修改具有三個因素的帳戶,其中這些因素必須使用指定的外掛程式。

多因素驗證入門

注意

CREATE USER 'alice'@'localhost'
  IDENTIFIED WITH caching_sha2_password
    BY 'sha2_password'
  AND IDENTIFIED WITH authentication_ldap_sasl
    AS 'uid=u1_ldap,ou=People,dc=example,dc=com';

$> mysql --user=alice --password1 --password2
Enter password: (enter factor 1 password)
Enter password: (enter factor 2 password)

DROP USER 'alice'@'localhost';
  
CREATE USER 'alice'@'localhost'
  IDENTIFIED WITH caching_sha2_password
    BY 'sha2_password'
  AND IDENTIFIED WITH authentication_ldap_sasl
    AS 'uid=u1_ldap,ou=People,dc=example,dc=com'
  AND IDENTIFIED WITH authentication_webauthn;

ADD factor 語法包含因子編號和 FACTOR 關鍵字

ALTER USER 'alice'@'localhost' ADD 3 FACTOR IDENTIFIED WITH authentication_webauthn;

ALTER USER user DROP factor 語法允許刪除因子。以下範例會刪除先前範例中新增的第三個因子 (authentication_webauthn)

ALTER USER 'alice'@'localhost' DROP 3 FACTOR;

ALTER USER user MODIFY factor 語法允許更改特定因子的外掛程式或驗證字串,前提是該因子存在。以下範例會修改第二個因子,將驗證方法從 authentication_ldap_sasl 變更為 authetication_webauthn

ALTER USER 'alice'@'localhost' MODIFY 2 FACTOR IDENTIFIED WITH authentication_webauthn;

使用 SHOW CREATE USER 來檢視為帳戶定義的驗證方法

SHOW CREATE USER 'u1'@'localhost'\G
*************************** 1. row ***************************
CREATE USER for u1@localhost: CREATE USER `u1`@`localhost` 
IDENTIFIED WITH 'caching_sha2_password' AS 'sha2_password' 
AND IDENTIFIED WITH 'authentication_authn' REQUIRE NONE 
PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY 
DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE 
CURRENT DEFAULT