Model RBAC Kubernetes & berdampak pada pengguna dan akun layanan yang mengelola SQL Server 2019 Kluster Big Data

Penting

Add-on Kluster Big Data Microsoft SQL Server 2019 akan dihentikan. Dukungan untuk SQL Server 2019 Kluster Big Data akan berakhir pada 28 Februari 2025. Semua pengguna SQL Server 2019 yang ada dengan Jaminan Perangkat Lunak akan didukung sepenuhnya pada platform dan perangkat lunak akan terus dipertahankan melalui pembaruan kumulatif SQL Server hingga saat itu. Untuk informasi selengkapnya, lihat posting blog pengumuman dan Opsi big data di platform Microsoft SQL Server.

Artikel ini menjelaskan persyaratan izin untuk pengguna yang mengelola kluster big data dan semantik di sekitar akun layanan default dan akses Kubernetes dari dalam kluster big data.

Catatan

Untuk sumber daya tambahan pada model RBAC Kubernetes lihat Menggunakan Otorisasi RBAC - Kubernetes dan Menggunakan RBAC untuk menentukan dan menerapkan izin - OpenShift.

Peran yang diperlukan untuk penyebaran

SQL Server 2019 Kluster Big Data menggunakan akun layanan (seperti sa-mssql-controller atau master) untuk mengatur provisi pod kluster, layanan, ketersediaan tinggi, pemantauan, dll. Saat penyebaran kluster big data dimulai (misalnya, azdata bdc create), Azure Data CLI (azdata) melakukan hal berikut:

  1. Memeriksa apakah namespace layanan yang disediakan ada.
  2. Jika tidak ada, label akan membuatnya dan menerapkan MSSQL_CLUSTER label.
  3. sa-mssql-controller Membuat akun layanan.
  4. <namespaced>-admin Membuat peran dengan izin penuh pada namespace atau proyek tetapi bukan izin tingkat kluster.
  5. Membuat penetapan peran akun layanan tersebut ke peran tersebut.

Setelah langkah-langkah ini selesai, pod sarana kontrol disediakan dan akun layanan menyebarkan kluster big data lainnya. 

Akibatnya, pengguna yang menyebarkan harus memiliki izin untuk:

  • Cantumkan namespace dalam kluster (1).
  • Patch namespace baru atau yang sudah ada dengan label (2).
  • Buat akun sa-mssql-controllerlayanan , <namespaced>-admin peran dan pengikatan peran (3-5).

Peran default admin tidak memiliki izin ini, sehingga pengguna yang menyebarkan kluster big data harus memiliki setidaknya izin admin tingkat namespace layanan.

Peran kluster yang diperlukan untuk kumpulan metrik pod dan simpul

Dimulai dengan SQL Server 2019 CU5, Telegraf memerlukan akun layanan dengan izin peran luas kluster untuk mengumpulkan metrik pod dan simpul. Selama penyebaran (atau peningkatan untuk penyebaran yang ada), kami mencoba membuat akun layanan dan peran kluster yang diperlukan, tetapi jika pengguna yang menyebarkan kluster atau melakukan peningkatan tidak memiliki izin yang memadai, penyebaran atau peningkatan masih akan dilanjutkan dengan peringatan dan berhasil. Dalam hal ini, metrik pod & node tidak akan dikumpulkan. Pengguna yang menyebarkan kluster harus meminta administrator kluster untuk membuat peran dan akun layanan (baik sebelum atau sesudah penyebaran atau peningkatan). Setelah dibuat, BDC menggunakannya.

Berikut adalah langkah-langkah untuk menunjukkan cara membuat artefak yang diperlukan:

  1. Buat file metrics-role.yaml dengan konten di bawah ini. Pastikan untuk mengganti <tempat penampung clusterName> dengan nama kluster big data Anda.

    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>
    
  2. Buat peran kluster dan pengikatan peran kluster:

    kubectl create -f metrics-role.yaml
    

Akun layanan, peran kluster, dan pengikatan peran kluster dapat dibuat baik sebelum atau pasca penyebaran BDC. Kubernetes secara otomatis memperbarui izin untuk akun layanan Telegraf. Jika ini dibuat sebagai penyebaran pod, Anda akan melihat penundaan beberapa menit dalam metrik pod dan simpul yang dikumpulkan.

Catatan

SQL Server 2019 CU5 memperkenalkan dua sakelar fitur untuk mengontrol pengumpulan metrik pod dan simpul. Secara default parameter ini diatur ke true di semua target lingkungan, kecuali OpenShift tempat default ditimpa.

Anda dapat menyesuaikan pengaturan ini di bagian keamanan dalam control.json file konfigurasi penyebaran:

  "security": {
    ...
    "allowNodeMetricsCollection": false,
    "allowPodMetricsCollection": false
  }

Jika pengaturan ini diatur ke false, alur kerja penyebaran BDC tidak akan mencoba membuat akun layanan, peran kluster, dan pengikatan untuk Telegraf.

Penggunaan akun layanan default dari dalam pod kluster big data

Untuk model keamanan yang lebih ketat, SQL Server 2019 CU5 menonaktifkan pemasangan secara default kredensial untuk akun layanan Kubernetes default dalam pod BDC. Ini berlaku untuk penyebaran baru dan yang ditingkatkan di CU5 atau versi yang lebih baru. Token kredensial di dalam pod dapat digunakan untuk mengakses server API Kubernetes, dan tingkat izin tergantung pada pengaturan kebijakan otorisasi Kubernetes. Jika Anda memiliki kasus penggunaan khusus yang memerlukan kembali ke perilaku CU5 sebelumnya, di CU6 kami memperkenalkan sakelar fitur baru sehingga Anda dapat mengaktifkan pemasangan otomatis hanya pada waktu penyebaran. Anda dapat melakukannya dengan menggunakan file penyebaran konfigurasi control.json dan mengatur automountServiceAccountToken ke true. Jalankan perintah ini untuk memperbarui pengaturan ini di file konfigurasi kustom control.json Anda menggunakan Azure Data CLI (azdata):

azdata bdc config replace -c custom-bdc/control.json -j "$.security.automountServiceAccountToken=true"