この記事は、MySQL Enterprise Security 4 New Authentication Methods (2022/11/22掲載)の翻訳版です。本記事に関する最新情報は別途ご確認ください。

 

はじめに

データは組織にとって最も価値のある資産です。 特にCISO (最高情報セキュリティ責任者) にとって、データの保護は最大の関心事であり重大な責任です。

MySQL Enterprise Editionは、以下のような強力なセキュリティ機能を提供します。
– データベース攻撃者からの保護強化
– 法規制の遵守(GDPR, PCI, HIPAAなど)
– ユーザー認証の簡素化および最適化   
– IT管理コストの削減

Identity Theft Resource Centerの2021年データ侵害レポートによると、前年は1,862件のデータ侵害があり、これは2017年の記録を上回る数字です。また、金融業界に対するデータ侵害の80%は、認証の脆弱性に原因がありました。ユーザーアカウントに不正にアクセスし、個人を特定できる情報 (氏名、社会保障番号、医療記録) を盗み出したデータベース攻撃者は、ユーザーになりすまして金融取引を行うことができてしまいます。そのため、認証の脆弱性リスクを低減することは最優先事項です。

MySQL Enterprise Authenticationは、下記の4つの認証機能を追加しました。
1.    マルチファクタ認証
2.    LDAP, Active Directory認証
3.    ネイティブKerberos認証
4.    パスワードレス認証 – FIDO (Fast Identity Online)
 

MySQL Advance Authentication Methods

それぞれの認証方法

 


マルチファクタ認証

複数以上の方法で認証することにより、パスワードの推測や盗難などでデータベース攻撃者が簡単にデータベースに接続できてしまう状況を回避することができます。マルチファクタ認証では、ユーザーデバイスコード、セキュリティ質問とその答え、指紋、顔認証などが追加パスワードになります。MySQLでは最大3つの要素を任意の順番で設定することができます。PCI DSS 8.2では、マルチファクタ認証が必須となりました (PCI DSSガイドを参照)。

例: aliceというMySQLユーザを作成し、次にLDAPのパスワードを設定します。
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’;

次にALTER文によって、YubiKeyなどの FIDO認証を設定します。
ALTER USER ‘alice’@’localhost’ MODIFY 2 FACTOR IDENTIFIED WITH authentication_fido;

そして3つ目の認証方法を追加することもできます。
ALTER USER ‘alice’@’localhost’ ADD 3 FACTOR IDENTIFIED WITH authentication_fido;

現在多くのガイドラインでは、1つ目の認証方法としてパスワードを使わない方法を推奨しています。言うまでもなく、マルチファクタ認証はセキュリティを大幅に向上させます。

 


LDAP および Active Directory 認証

大規模な組織内においては特に、ITを取り巻く環境が複雑な場合があります。そこで、ユーザーアカウント管理の一元化によって、IT管理コストの削減とアカウントの一貫性を実現し、ユーザーがリソース間で異なる認証方法を使う必要がなくなります。

Windows上で運用するMySQLサーバーはMySQL Enterprise Windows Authenticationを使用できるので、MySQL Active Directory経由での認証が可能です。
CREATE USER sql_admin IDENTIFIED WITH authentication_windows AS ‘Rafal, Tasha, Administrators, “Power Users”‘;

Linux上で運用する MySQL サーバは MySQL Enterprise LDAP Authenticationの使用が可能なので、LDAP サーバまたは Active Directory サーバの両方に対し認証を行うように設定できます。

MySQL Enterprise LDAP Authenticationは、以下の機能もサポートしています。
•    SASL – 簡易認証およびセキュリティ・レイヤー
•    GSSAPI/Kerberos 認証

このモードでは、アプリケーションがKerberosに対し認証を行ってサービスの証明書を取得し、その証明書によってMySQLへのセキュアなアクセスを可能にします。LDAP ディレクトリサーバまたは Active Directory のユーザグループへのマッピングは、MySQL のユーザグループを各 LDAP グループにマッピングする MySQLのProxy ユーザを使用して設定することができます。
 


ネイティブKerberos認証

MySQL Kerberos Authentication では、ユーザーの Kerberos チケットを認証に使用します。LinuxにおけるKerberos チケットはMIT Kerberosに基づいて、GSSAPI (Generic Security Services Application Program Interface) を使用します。Windowsでは、SSPI(Security Support Provider Interface)経由の標準的なWindows Kerberosと、GSSAPI経由のMIT Kerberosの両方がサポートされています。

以下はケルベロス認証の設定例です。
[mysqld]
plugin-load-add=authentication_kerberos.so
authentication_kerberos_service_principal=mysql/krbauth.example.com@MYSQL.LOCAL
authentication_kerberos_service_key_tab=/var/mysql/data/mysql.keytab

上記をmy.cnf に追記したら、次にユーザを作成します。
CREATE USER user IDENTIFIED WITH authentication_kerberos BY ‘realm_name’; 

ここでLinuxならknit、WindowsならGSSAPIを実行します。
$> kinit karl@MYSQL.LOCAL Password for karl@MYSQL.LOCAL: (パスワード入力)

発行されたチケットを確認します。
$> klist

Ticket cache: FILE:/tmp/krb5cc_244306
Default principal: karl@MYSQL.LOCAL
Valid starting                  Expires                         Service principal
03/23/2021 08:18:33     03/23/2021 18:18:33     krbtgt/MYSQL.LOCAL@MYSQL.LOCAL

ユーザー名やパスワード無しでログインすることが可能になります。
    mysql … –default-auth=authentication_kerberos_client
 


パスワードレス認証 – FIDO (Fast Identity Online)

MySQLではFIDOアライアンスが推奨するFIDO認証を使用して、MySQLサーバーを認証するユーザーを作成することができます。この団体はスマートカード、セキュリティキー、生体認証のようなデバイス認証の標準化を促進し、パスワードへの過度な依存を減らすことを目的としたオープンな業界団体です。FIDOアライアンスは、Web技術の標準化を行っているW3C(World Wide Web)など、他の団体とも連携しています。

FIDOプロトコルにおいてデータベース管理者はユーザーを作成し、ユーザーはPINなどを使ったローカル認証を必要とするデバイスをMySQLサーバーに登録します。一度登録するとそれ以降は、ユーザーはそのデバイスを使用して接続し認証をすることができます。

FIDOデバイスを使用したシングル認証の場合、初期パスワードでユーザーを作成します。
CREATE USER user IDENTIFIED WITH authentication_fido INITIAL AUTHENTICATION IDENTIFIED BY {RANDOM PASSWORD | ‘auth_string’};

次に、ユーザーはそのパスワードとFIDO登録要素を登録します。
$> mysql –user=u1 –password –fido-register-factor=2
Enter password:***************

以降はデバイス認証のみ要求されるようになります。
 

Hardware Auth FIDO Yubikey

UAFプロトコルはTLS内で動作し、検証を行います。

FIDO Architecture

 

多くの場合、FIDO認証は既に使っている認証方法などと組み合わせて、2段階認証の一つとして使われます。その場合、FIDO認証にはデバイスを使う方法が採用されることが多いです。

 


結論

上記でご紹介したとおり、MySQL Enterprise Securityに新たに4つの高度な認証機能が追加されました。これらの認証機能は簡単に導入でき、また組織の最重要資産の一つである、データの保護に大きく貢献します。