Important
MICROSOFT SQL Server 2019 巨量數據叢集已淘汰。 SQL Server 2019 巨量數據叢集的支援已於 2025 年 2 月 28 日結束。 如需詳細資訊,請參閱 Microsoft SQL Server 平臺上的公告部落格文章和巨量數據選項。
本文說明管理巨量數據叢集所需權限的需求,以及在巨量數據叢集中使用預設服務帳戶和 Kubernetes 的存取語意。
Note
如需 Kubernetes RBAC 模型的其他資源,請參閱 使用 RBAC 授權 - Kubernetes 和使用 RBAC 來定義和套用許可權 - OpenShift。
部署所需的角色
SQL Server 2019 巨量數據叢集會使用服務帳戶 (例如 sa-mssql-controller 或 master) 協調叢集 Pod、服務、高可用性、監視等的布建。當巨量數據叢集部署啟動時(例如 azdata bdc create,),Azure Data CLI (azdata) 會執行下列動作:
- 檢查提供的命名空間是否存在。
- 如果不存在,則會建立一個標籤並套用標籤
MSSQL_CLUSTER。 - 建立
sa-mssql-controller服務帳戶。 - 建立一個在命名空間或專案內具有完整許可權但不包含叢集層級許可權的
<namespaced>-admin角色。 - 為該服務帳戶創建角色指派至指定角色。
這些步驟完成後,會布建控制平面元件,而服務帳戶會部署其餘的大型數據叢集。
因此,部署用戶必須具有下列許可權:
- 列出叢集中的命名空間 (1)。
- 使用標籤 (2) 修補新的或現有的命名空間。
- 建立服務帳戶
sa-mssql-controller、角色<namespaced>-admin和角色綁定(3-5)。
默認 admin 角色沒有這些許可權,因此部署巨量數據叢集的使用者至少必須具有命名空間層級管理員許可權。
Pod 和節點計量集合所需的叢集角色
從 SQL Server 2019 CU5 開始,Telegraf 需要具有叢集廣泛角色許可權的服務帳戶,才能收集 Pod 和節點計量。 在部署期間(或升級現有部署),我們會嘗試建立必要的服務帳戶和叢集角色,但如果部署叢集或執行升級的用戶沒有足夠的許可權,部署或升級仍會繼續進行警告並成功。 在此情況下,將不會收集Pod及節點的指標。 部署叢集的用戶必須要求叢集管理員建立角色和服務帳戶(部署或升級之前或之後)。 建立它們之後,BDC 會使用它們。
以下是示範如何建立必要成品的步驟:
使用下列內容建立 metrics-role.yaml 檔案。 請務必將 <clusterName> 佔位元替換為巨量資料叢集的名稱。
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <clusterName>:cr-mssql-metricsdc-reader rules: - apiGroups: - '*' resources: - pods - nodes/stats - nodes/proxy verbs: - get --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: <clusterName>:crb-mssql-metricsdc-reader roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: <clusterName>:cr-mssql-metricsdc-reader subjects: - kind: ServiceAccount name: sa-mssql-metricsdc-reader namespace: <clusterName>建立叢集角色和叢集角色系結:
kubectl create -f metrics-role.yaml
您可以在 BDC 部署之前或之後建立服務帳戶、叢集角色和叢集角色系結。 Kubernetes 會自動更新 Telegraf 服務帳戶的許可權。 如果這些是作為 Pod 部署而建立,您將會發現收集 Pod 和節點指標時有幾分鐘的延遲。
Note
SQL Server 2019 CU5 引進兩個功能開關來控制 Pod 和節點度量指標的集合。 根據預設,這些參數在所有環境目標中都設定為 true,惟 OpenShift 的預設值已被覆蓋。
您可以在部署組態檔的安全性 control.json 區段中自訂這些設定:
"security": {
...
"allowNodeMetricsCollection": false,
"allowPodMetricsCollection": false
}
如果這些設定設為 false,BDC 部署工作流程將不會嘗試建立服務帳戶、叢集角色,以及Telegraf的系結。
巨量資料叢集容器內的預設服務帳戶使用情況
針對更嚴格的安全性模型,SQL Server 2019 CU5 預設會停用使用預設憑證來掛載 BDC Pod 內預設 Kubernetes 服務帳戶的功能。 這適用於 CU5 或更新版本中的新和升級部署。
Pod 內的認證令牌可用來存取 Kubernetes API 伺服器,而許可權層級取決於 Kubernetes 授權原則設定。 如果您有特定使用案例需要還原至先前的 CU5 行為,我們在 CU6 中引入了一個新的功能切換,以便您可以僅在部署時啟用自動掛載功能。 您可以使用 control.json 組態部署檔案,並將 automountServiceAccountToken 設定為 true 來執行此動作。 執行此指令,以使用 Azure Data CLI 在 control.json 自定義組態檔中更新此設定 (azdata):
azdata bdc config replace -c custom-bdc/control.json -j "$.security.automountServiceAccountToken=true"