驗證是指一方讓另一方滿意地建立其身分。多因素驗證 (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 值 | 有效的原則 |
---|---|
'*' |
僅允許建立或修改具有一個因素的帳戶。 |
'*,*' |
僅允許建立或修改具有兩個因素的帳戶。 |
'*,*,*' |
僅允許建立或修改具有三個因素的帳戶。 |
'*,' |
允許建立或修改具有一個或兩個因素的帳戶。 |
'*,,' |
允許建立或修改具有一個、兩個或三個因素的帳戶。 |
'*,*,' |
允許建立或修改具有兩個或三個因素的帳戶。 |
'*, |
允許建立或修改具有兩個因素的帳戶,其中第一個因素可以是任何驗證方法,第二個因素必須是指定的外掛程式。 |
' |
允許建立或修改具有兩個或三個因素的帳戶,其中第一個因素必須是指定的外掛程式。 |
' |
允許建立或修改具有一個或兩個因素的帳戶,其中第一個因素必須是指定的外掛程式。 |
' |
允許建立或修改具有三個因素的帳戶,其中這些因素必須使用指定的外掛程式。 |
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