このトピックでは、Elastic Compute Service (ECS) インスタンスにActive Directory (AD) ドメインコントローラーを設定する方法について説明します。 このトピックでは、Kerberos認証に基づいてPolarDB for MySQLクラスターをADドメインに接続する方法についても説明します。
背景情報
ADは、Microsoftが提供するディレクトリサービスです。 ディレクトリは、同じLAN上のオブジェクトに関する情報を格納する階層構造です。 企業は、コンピュータアカウント、ユーザアカウント、グループなどのデータをディレクトリに格納できます。 このようにして、企業はデータのセキュリティを向上させ、より便利な方法でデータを管理することができます。
PolarDB for MySQLはADとの統合を提供します。 ADドメイン設定を構成して、PolarDB for MySQLクラスターをADドメインに接続し、Kerberos認証を有効にすることができます。
バージョン要件
PolarDB for MySQLクラスターは、次の要件を満たす必要があります。
データベースエンジンのバージョン: MySQL 8.0.1。
マイナーバージョン: V8.0.1.1.44.2以降。 マイナーバージョンの更新方法の詳細については、「マイナーバージョンの更新」をご参照ください。
エディション: Enterprise Edition。
シリーズ: Cluster Edition。
使用上の注意
機能はカナリアリリースにあります。 トライアルを申し込むことができます。
前提条件
PolarDB for MySQLクラスターにアクセスするようにADドメインとクライアント環境がすでに設定されている場合は、ECSインスタンスを作成する必要なく、既存のADドメイン設定を直接使用できます。 詳細については、このトピックの「手順3: PolarDB For MySQLクラスターのADドメインサーバーの設定」をご参照ください。
ADドメインコントローラーをホストするECSインスタンスが作成されます。 詳細については、「コンソールでのECSインスタンスの作成と管理 (エクスプレスバージョン) 」をご参照ください。 PolarDB for MySQLクラスターは、プライベートネットワークを介して自己管理型ADドメインに接続する必要があります。 したがって、ECSインスタンスは次の条件を満たす必要があります。
システムイメージのバージョンはWindows Server 2016以降で、言語は英語です。
PolarDB for MySQLクラスターにアクセスするクライアントをホストするECSインスタンスが作成されます。 詳細については、「コンソールでのECSインスタンスの作成と管理 (エクスプレスバージョン) 」をご参照ください。 PolarDB for MySQLクラスターにアクセスするクライアントをホストするECSインスタンスは、次の条件を満たす必要があります。
PolarDB for MySQLクラスターにアクセスするクライアントをホストするECSインスタンスは、PolarDB for MySQLクラスターと同じ仮想プライベートクラウド (VPC) にあります。
PolarDB for MySQLクラスターにアクセスするクライアントをホストするECSインスタンスは、ADドメインコントローラーをホストするECSインスタンスと同じVPCにあります。
Alibaba Cloudアカウントは、PolarDB for MySQLコンソールへのログインに使用されます。
手順
手順1: (オプション) ECSインスタンスでのADドメインコントローラーの設定
Windows Server 2022を実行するECSインスタンスにリモートでログインします。
説明ADドメインコントローラーは、Windows Serverを実行するECSインスタンスにインストールする必要があります。 Windows Server 2016以降を使用することを推奨します。 この例では、Windows Server 2022が使用されます。
サーバーマネージャーを検索して開きます。
[ロールと機能の追加] をクリックし、次の表に示すパラメーターを設定します。
ページ名
設定
インストールタイプ
デフォルト設定を維持します。
サーバーの選択
デフォルト設定を維持します。
サーバーの役割
[Active Directoryドメインサービス] を選択します。 表示されるダイアログボックスで、[機能の追加] をクリックします。
[DNSサーバー] を選択します。 表示されるダイアログボックスで、[機能の追加] をクリックします。 コンピューターが固定IPアドレスを使用していることを確認してください。 IPアドレスが動的に変更されると、DNSサーバーは使用できなくなります。
機能
デフォルト設定を維持します。
広告DS
デフォルト設定を維持します。
DNSサーバー
デフォルト設定を維持します。
確認
[インストール] をクリックします。
インストールが完了したら、[閉じる] をクリックします。
左側のナビゲーションウィンドウで、[AD DS] をクリックします。 ページの右上隅にある [詳細] をクリックします。
[操作] 列の [このサーバーをドメインに昇格] をクリックします。 次の表で説明するパラメーターを設定します。
ページ名
設定
デプロイメントの設定
[新しいフォレストの追加] を選択し、ドメイン名を指定します。
ドメインコントローラのオプション
ディレクトリサービス復元モード (DSRM) で使用するパスワードを指定および確認します。
DNSオプション
[DNS委任の作成] をクリアします。
追加オプション
デフォルト設定を維持します。
パス
デフォルト設定を維持します。
レビューオプション
デフォルト設定を維持します。
前提条件チェック
[インストール] をクリックします。
説明インストールが完了すると、システムが再起動します。
システムが再起動したら、サーバーマネージャーを再度検索して開きます。
左側のナビゲーションウィンドウで、[AD DS] をクリックします。 サーバーリストで、管理するドメインコントローラーサーバーを右クリックし、[Active Directoryユーザーとコンピューター] を選択して、ADユーザー管理モジュールに移動します。
左側のナビゲーションウィンドウで、[polardb.domain] > [ユーザー] を選択します。 [ユーザー] を右クリックし、[新規] > [ユーザー] を選択します。
ログインユーザー名 (polardbmtestuserなど) を指定し、[次へ] をクリックします。
ログインパスワードを指定し、[パスワードの有効期限はありません] を選択します。 [次へ] および [完了] をクリックします。 polardbmtestuserという名前のユーザーが作成されます。
作成したユーザーをダブルクリックします。
[アカウントオプション]
セクションで、Kerberos AES
暗号化のサポートを有効にするオプションを選択します。前の手順を繰り返して、polardbmという名前の別のユーザーを作成します。 この例では、polardbmtestuserはクライアントアクセスに使用され、polardbmはPolarDB for MySQLクラスターのサーバー側認証に使用されます。
手順2: (オプション) ECSインスタンスでのセキュリティグループルールの設定
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、[インスタンスとイメージ] > [インスタンス] を選択します。
上部のナビゲーションバーで、管理するECSインスタンスが存在するリージョンを選択します。
[インスタンス] ページで、ECSインスタンスのIDをクリックして、インスタンスの詳細ページに移動します。
[セキュリティグループ] タブをクリックします。 管理するセキュリティグループを見つけて、[操作] 列の [ルールの管理] をクリックします。
説明ADドメインコントローラでは、いくつかのポートを有効にする必要があります。 他のECSインスタンスと同じセキュリティグループにADドメインコントローラーを設定するのではなく、ADドメインコントローラーに個別のセキュリティグループを設定することを推奨します。
[インバウンド] タブで、[クイック追加] をクリックして、次のポートを介したECSインスタンスへのアクセスを許可します。
プロトコルタイプ
ポートまたはポート範囲
説明
TCP
88
Kerberos認証プロトコルのポート。
TCP
135
リモートプロシージャコール (RPC) プロトコルのポート。
TCP/UDP
389
Lightweight Directory Access Protocol (LDAP) のポート。
TCP
445
Common Internet File System (CIFS) プロトコルのポート。
TCP
3268
グローバルカタログのポート。
TCP/UDP
53
DNSサービスのポート。
TCP
65535に49152
接続のデフォルトのダイナミックポート範囲。 例: 49152/65535。
手順3: PolarDB for MySQLクラスターのADドメインサーバーの設定
PolarDB for MySQLコンソールの [クラスター] ページに移動します。 上部のナビゲーションバーで、管理するクラスターが存在するリージョンを選択します。 次に、クラスターIDをクリックして、クラスターの詳細ページに移動します。
左側のナビゲーションウィンドウで、[設定と管理]> [アカウント] を選択します。 表示されるページで、[ADドメインサービス] タブをクリックします。 [ADドメインサービス] タブで、PolarDB for MySQLクラスターにアクセスするためのADドメインサーバーとクライアントに関する情報を設定できます。
[ADドメインでのサーバー情報の設定] をクリックし、次のパラメーターを設定します。
サーバーサービス名: 要求されるサービスのタイプ。この例ではPolarDB for MySQLです。 デフォルト値は
polardbm
で、変更できません。サーバーホスト名: サービスのホスト名。 デフォルト値はクラスターIDであり、変更することはできません。
ドメイン名: ECSインスタンス上の自己管理型ADドメインのルートドメイン名。 独自の自己管理ADドメインを使用することもできます。 この例では、POLARDB.DOMAINが使用されます。
説明Azure Active Directory
(Microsoft Enter ID) など、企業の自己管理型ADドメインを使用する場合は、ADドメインのドメイン名を入力します。サーバーサービス名、サーバーホスト名、およびドメイン名パラメーターの値は、一緒にKerberosサービスプリンシパル名 (SPN) を形成します。
Kerberos SPN
は、Kerberos
認証プロトコルの中心的な概念であり、ネットワーク上のサービスインスタンスを一意に識別するために使用されます。 SPNは、クライアントが目的のサービスと安全に通信できるようにするために重要です。 一般に、SPNは、ServiceType/HostName @ REALMフォーマットである。
ADドメインのサーバーユーザー: ADドメインで作成されたユーザーアカウントで、サーバー側サービス認証に使用されます。 サーバーホスト名およびドメイン名パラメーターを指定すると、
keytab
ファイルを生成するための推奨コマンドが表示されます。説明Kerberos Keytab (略して
keytab
) ファイルは、Kerberosセキュリティレルム内のSPNと対応する暗号化キーとの間のマッピングを格納するバイナリファイルです。 このファイルは、Kerberos認証プロセスにとって非常に重要です。 ADドメインをKerberosキー配布センター (KDC) として使用する場合は、ktpass
コマンドを実行してkeytab
ファイルを生成することを推奨します。 ktpassコマンドを実行するときは、-out xxx.keytab
をkeytabファイルの目的の名前に置き換え、-pass yourPassword
をADドメインでpolardbmユーザーを作成したときに指定したパスワードに置き換えます。keytab
ファイルを生成します。ECSインスタンスの自己管理型ADドメインに
keytab
ファイルを生成します。 これを行うには、Windows PowerShell
を開きます。ktpassコマンドを実行して、
keytab
ファイルを生成します。コマンド出力にエラーが発生していないことを確認してください。 次に、
setspn
コマンドを実行して、polardbm
のSPNマッピングを確認します。[ファイルの選択] をクリックして
keytab
ファイルをアップロードし、ADドメインサーバーの設定を完了します。生成された
keytab
ファイルをコンピューターに保存してから、[Select file] をクリックしてkeytab
ファイルをアップロードします。[OK] をクリックします。
説明設定が送信されると、システムは [インスタンスの維持] 状態になります。
手順4: PolarDB for MySQLクラスターにアクセスするためのクライアントの設定
左側のナビゲーションウィンドウで、[設定と管理]> [アカウント] を選択します。 表示されるページで、[ADドメインサービス] タブをクリックします。 [ADドメインサービス] タブで、[クライアント情報の設定] をクリックします。
[ADドメインでのクライアントユーザーの作成] ダイアログボックスで、[クライアントユーザー] および [ドメイン名] パラメーターを設定します。
クライアントユーザー: PolarDB for MySQLクラスターに作成される
Kerberos
認証ユーザーの名前。 このユーザーは、ECSインスタンスの自己管理ADドメインで作成したクライアントユーザーに対応します。 この例では、polardbmtestuserが使用されます。ドメイン名: ECSインスタンス上の自己管理型ADドメインのルートドメイン名。 この例では、POLARDB.DOMAINが使用されます。
[OK] をクリックします。
説明設定が送信されると、システムは [インスタンスの維持] 状態になります。
左側のナビゲーションウィンドウで、[設定と管理]> [アカウント] を選択します。 表示されるページで、[ユーザーアカウント] タブをクリックします。
前の手順で作成したユーザーが表示されます。 ユーザーの権限を変更できます。 ただし、ユーザーのパスワードの変更や削除はできません。
ユーザーを削除する場合は、[ADドメインサービス] タブのクライアント情報でユーザーを指定する必要があります。
ステップ5: (オプション) クライアントID認証の有効化
クライアントのIDを認証するには、Kerberos
を使用する必要があります。 認証に合格すると、クライアントからPolarDB for MySQLクラスターにアクセスできます。 PolarDB for MySQLクラスターにアクセスするには、クライアントをホストするECSインスタンスで次の操作を実行する必要があります。
ECSインスタンスの自己管理ADドメインへのアクセスに使用する /etc/krb5.confファイルを設定します。
# To opt out of the system crypto-policies configuration of krb5, remove the # symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated. includedir /etc/krb5.conf.d/ [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log # libdefaults configuration # Set the default_realm parameter in the [libdefaults] section to the root domain name of the self-managed AD domain on the ECS instance. In this example, PolarDB.Domain is used. [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt spake_preauth_groups = edwards25519 default_realm = POLARDB.DOMAIN default_ccache_name = KEYRING:persistent:%{uid} # realms configuration # Set the kdc and admin_server parameters in the [realms] section to the domain controller service of the self-managed AD domain on the ECS instance. [realms] POLARDB.DOMAIN = { # Add ad.polardb.domain to the /etc/hosts file, and bind ad.polardb.domain to the IP address of the self-managed AD domain on the ECS instance. The default port is port 88. kdc = ad.polardb.domain:88 admin_server = ad.polardb.domain:88 } # domain_realm configuration # Set parameters in the [domain_realm] section to the root domain name of the self-managed AD domain on the ECS instance. [domain_realm] .polardb.domain = POLARDB.DOMAIN polardb.domain = POLARDB.DOMAIN
の
kinitユーザー名
username
を、ADドメインで作成したクライアントユーザーに置き換えます。 この例では、polardbmtestuser
が使用されています。 プロンプトに従って、ADドメインで指定したユーザーのパスワードを入力します。次のMySQLコマンドを実行して、ADドメインに接続されているPolarDB for MySQLクラスターにログインします。 プライマリアドレスを使用します。
説明バージョン8.0.26以降のMySQL公式クライアントのみが
authentication_kerberos_client
プラグインをサポートしています。 --plugin-dir
は、authentication_kerberos_client.so
プラグインとその依存プラグインauthentication_oci_client.so
のディレクトリを指定します。./mysql -h [Primary address] -P 3306 --default-auth=authentication_kerberos_client --plugin-dir=/root/mysql-client/plugin --user=polardbmtestuser