本文介紹了在ECS執行個體如何配置AD網域控制站,並且介紹了如何通過基於Kerberos認證將PolarDB MySQL版叢集接入AD域。
背景介紹
活動目錄AD(Active Directory)是微軟提供的目錄服務。目錄是一種分層結構,用於儲存同一區域網路絡上對象的資訊。在目錄中可以收錄公司的電腦帳號、使用者帳號、組等以提供更好的安全性和更便捷的管理能力。
PolarDB MySQL版提供接入AD域功能,通過配置AD網域服務資訊,可以關聯Active Directory以啟用Kerberos身分識別驗證。
版本要求
PolarDB MySQL版叢集版本需要滿足以下條件:
資料庫引擎版本:8.0.1。
核心小版本:大於等於8.0.1.1.44.2,如不滿足,則需升級核心小版本。
產品版本:企業版。
系列:叢集版。
注意事項
該功能當前處於灰階發布中,您可以點擊此處申請試用。
前提條件
如果您已經有AD域和訪問PolarDB MySQL版 Client端的環境,無需建立ECS執行個體,直接使用配置AD網域服務資訊。
操作步驟
步驟一:ECS執行個體配置AD網域控制站(可選)
遠程登入ECS的Windows Server 2022系統。
說明AD網域控制站需要建立在Windows Server作業系統之上,建議使用Windows Server 2016及以上版本,本樣本以Windows Server 2022為例。
搜尋Server Manager並開啟。
單擊Add roles and features詳細參數進行如下設定。
頁面名稱
設定說明
Installation Type
保持預設設定。
Server Selection
保持預設設定。
Server Roles
選中Active Directory Domain Services,並在彈出的對話方塊中單擊Add Features。
選中DNS Server,並在彈出的對話方塊中單擊Add Features。如果提示您電腦不是固定IP,建議您修改電腦為固定IP,防止IP自動變更導致DNS伺服器無法使用。

Features
保持預設設定。
AD DS
保持預設設定。
DNS Server
保持預設設定。
Confirmation
單擊Install進行安裝。
等待安裝完成後,單擊Close關閉頁面。
在左側導覽列單擊AD DS,然後在右上方單擊More。

單擊Promote this server to a domain...,詳細參數進行如下設定。

頁面名稱
設定說明
Deployment Configuration
選擇Add a new forest,設定網域名稱。

Domain Controller Options
設定復原模式密碼。

DNS Options
取消選中Create DNS delegation選項。

Additional Options
保持預設設定。
Paths
保持預設設定。
Review Options
保持預設設定。
Prerequisites Check
單擊Install進行安裝。
說明安裝完成後系統會重啟。
等待系統重啟,再次搜尋Server Manager並開啟。
在左側導覽列單擊AD DS,然後在右側目標域控伺服器上單擊滑鼠右鍵,選擇Active Directory Users and Computers,進入AD使用者管理模組。

在testdomain.net > Users上單擊滑鼠右鍵,選擇New > User。

設定登入的使用者,然後單擊Next。

設定登入密碼,並設定密碼永不到期,然後單擊Next > Finish完成建立。

雙擊新建立的使用者,在
Account options裡,選定支援Kerberos AES加密方式。
按照上面建立User的方式,再建立一個User對應為polardbm。這裡建立的兩個User,polardbmtestuser使用者用於Client訪問,polardbm使用者用於PolarDB MySQL Server端認證。

步驟二:配置ECS執行個體安全性群組規則(可選)
登入ECS管理主控台。
在左側導覽列,選擇執行個體與鏡像>執行個體。
在頂部功能表列左上方處,選擇地區。
執行個體頁面中,單擊目標ECS執行個體ID。
在上方導覽列單擊安全性群組頁簽,然後在目標安全性群組右側操作列單擊配置規則。
說明網域控制站需要開放較多連接埠,因此不建議和其他ECS執行個體共用安全性群組,建議建立單獨的安全性群組使用。
在入方向頁簽內單擊手動添加,允許如下連接埠訪問ECS執行個體。
協議類型
連接埠範圍
說明
TCP
88
Kerberos認證協議連接埠。
TCP
135
遠端程序呼叫協議(RPC)連接埠。
TCP/UDP
389
輕量型目錄存取通訊協定(LDAP)連接埠。
TCP
445
通用互連網文檔系統協議(CIFS)連接埠。
TCP
3268
Global Catalog連接埠。
TCP/UDP
53
DNS連接埠。
TCP
49152~65535
串連的預設動態連接埠範圍。輸入格式為:49152/65535。
步驟三:配置PolarDB MySQL版AD網域服務端配置資訊
訪問PolarDB叢集列表,在上方選擇地區,然後單擊目的地組群ID。
單擊左側導覽列的帳號管理,選擇AD網域服務資訊頁簽。首次開啟AD網域服務資訊頁簽,包含了兩部分配置:AD網域服務端配置和用戶端資訊配置。

單擊AD網域服務端配置。

Server服務識別:標識請求PolarDB MySQL版服務的類型,這裡預設
polardbm,不可修改。Server端訪問地址標識:標識該服務的訪問地址的名稱,這裡預設使用叢集ID,不可修改。
網域名稱:這裡對應的是ECS自建域建立的根網域名稱或者您也可以使用自己所建立的AD域(POLARDB.DOMAIN)。
說明如果您使用的是企業自身的AD域,比如使用的是
Azure Active Directory(現在是Microsoft Enter ID)這裡需要輸入AD域對應的Domain名稱。Server服務識別、Server端訪問地址標識、網域名稱對應是
Kerberos SPN的組成;Kerberos Service Principal Name (SPN) 是Kerberos身分識別驗證協議中的一個核心概念,用於唯一標識網路中的服務執行個體。SPN對於確保用戶端能夠安全地與正確的服務進行通訊至關重要。SPN的格式通常如下所示:ServiceType/HostName@REALM。
AD網域服務端使用者:需要在AD域中建立一個使用者帳號,以便用於服務端服務認證。輸入Server端訪問地址標識、網域名稱資訊之後,會出現產生
Keytab檔案的建議命令。
說明Kerberos Keytab(簡稱
keytab)是一個二進位檔案,它儲存了Kerberos安全領域內服務主體(Service Principal Names,SPNs)與相應加密金鑰的映射關係。這個檔案對於 Kerberos認證過程至關重要。如果您使用AD域作為Kerberos KDC管理,建議使用ktpass命令產生keytab檔案,-out xxx.keytab需要替換成具體產生keytab的名稱,-pass yourPassword需要替換成在AD域建立polardbm使用者時候對應的密碼。產生
keytab檔案。在ECS AD域環境中產生
keytab檔案,開啟Windows PowerShell。
執行產生
keytab命令。
確認輸出資訊沒有異常的報錯,通過
setspn命令查看polardbm成功映射SPN。選擇檔案上傳
keytab檔案,完成AD域Server資訊配置。需要將AD域產生的
keytab檔案暫存複製到本地,點擊選擇檔案將暫存在本地的keytab檔案進行上傳。
完成後單擊確定。
說明提交後系統狀態將變為維護執行個體中。
步驟四:配置PolarDB MySQL版用戶端資訊
單擊左側導覽列的帳號管理,選擇AD網域服務資訊頁簽,單擊用戶端資訊配置。

在建立AD域用戶端訪問使用者內,填寫用戶端使用者和網域名稱。

用戶端使用者:在PolarDB MySQL版叢集中建立一個基於
Kerberos認證的訪問使用者,這裡對應是在ECS自建域建立的Client端使用者(polardbmtestuser)。網域名稱:這裡對應的是ECS自建域建立的根網域名稱(POLARDB.DOMAIN)。
完成後單擊確定。
說明提交後系統狀態將變為維護執行個體中。
單擊左側導覽列的帳號管理,選擇使用者帳號頁簽。
可以看到上一步建立的使用者。支援對使用者進行修改許可權操作,但不允許修改密碼和刪除。
如果需要刪除使用者,需要在AD網域服務資訊頁簽的用戶端資訊中指定要刪除的使用者。

步驟五:配置用戶端驗證(可選)
您需要先使用Kerberos對MySQL Client端進行身分識別驗證,認證通過後方可正常訪問PolarDB MySQL版。以下的操作需要在訪問PolarDB MySQL版所在的Client端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 # [libdefaults]下的default_realm配置成ECS自建AD域的根域(PolarDB.Domain); [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 #[realms]下kdc和admin_server配置成訪問ECS自建AD域對應的Domain Controller Service; [realms] POLARDB.DOMAIN = { # ad.polardb.domain配置了/etc/hosts,綁定了ECS自建AD域的IP;連接埠預設是88; kdc = ad.polardb.domain:88 admin_server = ad.polardb.domain:88 } # domain_realm configuration #[domain_realm]也需要按照格式配置成對應的ECS自建AD域的根域 [domain_realm] .polardb.domain = POLARDB.DOMAIN polardb.domain = POLARDB.DOMAINkinit username將
username替換成在AD域建立的Client端使用者polardbmtestuser。在提示符下輸入在AD域中為使用者儲存的密碼。使用以下MySQL命令登入到與AD域整合的PolarDB MySQL版資料庫叢集。使用主地址。
說明需保證MySQL官方用戶端版本為8.0.26及以上才支援使用
authentication_kerberos_client外掛程式。--plugin-dir指定authentication_kerberos_client.so(以及依賴的authentication_oci_client.so)所在目錄。./mysql -h [主地址] -P 3306 --default-auth=authentication_kerberos_client --plugin-dir=/root/mysql-client/plugin --user=polardbmtestuser