教學課程 - 在系統管理金鑰表模式中部署 Active Directory 連接器
本文說明如何在系統管理金鑰表模式中部署 Active Directory 連接器。 這是在 Azure Arc 所啟用 SQL 受控執行個體上啟用 Active Directory 驗證的主要元件。
系統管理金鑰表模式中的 Active Directory 連接器
在系統管理金鑰表模式中,Active Directory 連接器會部署 DNS Proxy 服務,將來自受控執行個體的 DNS 要求 Proxy 至兩個上游 DNS 服務之一:
- Active Directory DNS 伺服器
- Kubernetes DNS 伺服器
除了 DNS Proxy 服務之外,AD 連接器也會部署安全性支援服務,協助與 AD 網域進行通訊,以便自動建立和管理 AD 帳戶、服務主體名稱 (SPN) 和金鑰表。
下圖顯示系統管理金鑰表模式中的 AD 連接器和 DNS Proxy 服務功能:
必要條件
繼續進行之前,您必須具備:
- 部署在支援的 Kubernetes 版本上的資料控制器執行個體
- Active Directory 網域
- Active Directory 網域中預先建立的組織單位 (OU)
- Active Directory 網域服務帳戶
AD 網域服務帳戶應該有足夠的權限,才能在 Active Directory 中所提供組織單位 (OU) 內自動建立和刪除使用者帳戶。
將下列權限 (範圍設定為組織單位 (OU)) 授與網域服務帳戶:
- 讀取全部內容
- 寫入所有屬性
- 建立使用者物件
- 刪除使用者物件
- 重設子系使用者物件的密碼
如需如何設定 OU 和 AD 帳戶的詳細資訊,請移至使用系統管理金鑰表在 Active Directory 驗證中部署已啟用 Azure Arc 的資料服務 - 必要條件
在系統管理金鑰表模式中部署 Active Directory 連接器的輸入
若要部署 Active Directory 連接器的執行個體,需要來自 Active Directory 網域環境的數個輸入。
這些輸入是在 AD 連接器執行個體的 yaml 規格中提供。
部署 AD 連接器的執行個體之前,必須先提供下列有關 AD 網域的中繼資料:
- Active Directory 網域的名稱
- 網域控制站清單 (完整網域名稱)
- DNS 伺服器 IP 位址的清單
下列輸入欄位會公開給 Active Directory 連接器規格中的使用者:
必要
spec.activeDirectory.realm
大寫的 Active Directory 網域名稱。 這是 AD 連接器執行個體將會產生關聯的 AD 網域。spec.activeDirectory.domainControllers.primaryDomainController.hostname
AD 網域中主要網域控制站 (PDC) 的完整網域名稱。如果您不知道網域中哪個網域控制站是主要網域控制站,您可以在任何加入 AD 網域的 Windows 電腦上執行此命令來找出:
netdom query fsmo
。spec.activeDirectory.dns.nameserverIpAddresses
Active Directory DNS 伺服器 IP 位址的清單。 DNS Proxy 服務會將所提供網域名稱中的 DNS 查詢轉送至這些伺服器。
選擇性
spec.activeDirectory.serviceAccountProvisioning
這是選擇性欄位,其定義 AD 連接器部署模式的可能值,例如針對客戶自控金鑰表為manual
,或針對系統管理金鑰表為automatic
。 未設定此欄位時,此值預設為manual
。 當設定為automatic
(系統管理金鑰表) 時,系統會針對與此 AD 連接器相關聯的 SQL 受控執行個體自動產生 AD 帳戶和服務主體名稱 (SPN),並為其建立金鑰表檔案。 當設定為manual
(客戶自控金鑰表) 時,系統不會自動產生 AD 帳戶和金鑰表。 使用者預期要提供金鑰表檔案。spec.activeDirectory.ouDistinguishedName
這是選擇性欄位。 雖然當serviceAccountProvisioning
的值設定為automatic
時,會有條件地變成強制。 此欄位接受組織單位 (OU) 的辨別名稱 (DN),使用者必須先在 Active Directory 網域中建立,才能部署 AD 連接器。 用來將系統產生的 AD 帳戶儲存在 Active Directory 網域中的 SQL 受控執行個體。 值的範例如下所示:OU=arcou,DC=contoso,DC=local
。spec.activeDirectory.domainServiceAccountSecret
這是選擇性欄位。 當serviceAccountProvisioning
的值設定為automatic
時,會有條件地變成強制。 此欄位接受 Kubernetes 祕密的名稱,其中包含 AD 連接器部署之前所建立網域服務帳戶的使用者名稱和密碼。 系統會使用此帳戶在 OU 中產生其他 AD 帳戶,並在這些 AD 帳戶上執行動作。spec.activeDirectory.netbiosDomainName
Active Directory 網域的 NetBIOS 名稱。 這是 Active Directory 網域的簡短網域名稱 (Windows 2000 前的名稱)。 這通常用來限定 AD 網域中的帳戶。 例如,如果網域中的帳戶稱為 CONTOSO\admin,則 CONTOSO 是 NETBIOS 網域名稱。這是選用欄位。 未提供時,其值預設為
spec.activeDirectory.realm
欄位的第一個標籤。在大部分的網域環境中,這會設定為預設值,但是某些網域環境可能會有非預設值。 只有當網域的 NetBIOS 名稱不符合其完整名稱的第一個標籤時,您才需要使用此欄位。
spec.activeDirectory.domainControllers.secondaryDomainControllers[*].hostname
AD 網域中次要網域控制站的完整網域名稱清單。如果您的網域是由多個網域控制站提供服務,最好在此清單中提供一些完整網域名稱。 這允許 Kerberos 作業的高可用性。
此欄位是選擇性欄位,不需要。 系統會在未提供值時自動偵測次要網域控制站。
spec.activeDirectory.dns.domainName
DNS 網域名稱,DNS 查閱應轉送至 Active Directory DNS 伺服器。屬於此網域或其子系網域之任何名稱的 DNS 查閱將會轉送到 Active Directory。
這是選用欄位。 未提供時,會預設為針對
spec.activeDirectory.realm
提供的值,轉換成小寫。spec.activeDirectory.dns.replicas
DNS Proxy 服務的複本計數。 此欄位為選擇性欄位,未提供時預設為 1。spec.activeDirectory.dns.preferK8sDnsForPtrLookups
旗標,指出是否偏好 Kubernetes DNS 伺服器回應,而非 IP 位址查閱的 AD DNS 伺服器回應。DNS Proxy 服務依賴此欄位來判斷要用於 IP 位址查閱的 DNS 伺服器上游群組。
這是選用欄位。 未提供時,預設為
true
,也就是 IP 位址的 DNS 查閱會先轉送到 Kubernetes DNS 伺服器。 如果 Kubernetes DNS 伺服器無法回應查閱,則會將查詢轉送到 AD DNS 伺服器。 當設定為false
時,這些 DNS 查閱會先轉送到 AD DNS 伺服器,並在失敗時回復到 Kubernetes。
在系統管理金鑰表模式中部署 Active Directory 連接器
若要部署 AD 連接器,請建立名為 active-directory-connector.yaml
的 YAML 規格檔案。
以下是使用 AD 網域名稱 CONTOSO.LOCAL
的系統管理金鑰表 AD 連接器範例。 請務必以您的 AD 網域的值取代值。 adarc-dsa-secret
包含 AD 部署之前建立的 AD 網域服務帳戶。
注意
請確定此處提供的網域服務 AD 帳戶密碼不包含 !
特殊字元。
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: adarc-dsa-secret
namespace: <namespace>
data:
password: <your base64 encoded password>
username: <your base64 encoded username>
---
apiVersion: arcdata.microsoft.com/v1beta2
kind: ActiveDirectoryConnector
metadata:
name: adarc
namespace: <namespace>
spec:
activeDirectory:
realm: CONTOSO.LOCAL
serviceAccountProvisioning: automatic
ouDistinguishedName: "OU=arcou,DC=contoso,DC=local"
domainServiceAccountSecret: adarc-dsa-secret
domainControllers:
primaryDomainController:
hostname: dc1.contoso.local
secondaryDomainControllers:
- hostname: dc2.contoso.local
- hostname: dc3.contoso.local
dns:
preferK8sDnsForPtrLookups: false
nameserverIPAddresses:
- <DNS Server 1 IP address>
- <DNS Server 2 IP address>
下列命令會部署 AD 連接器執行個體。 目前只支援部署的 kube 原生方法。
kubectl apply –f active-directory-connector.yaml
提交 AD 連接器執行個體的部署之後,您可以使用下列命令來檢查部署的狀態。
kubectl get adc -n <namespace>