مشاركة عبر


توفير كيان خدمة باستخدام Terraform

إشعار

لتوفير كيان خدمة مدار من Microsoft Entra ID باستخدام مدخل Microsoft Azure وواجهة مستخدم Azure Databricks بدلا من ذلك، راجع إدارة أساسيات الخدمة.

تختلف أساسيات الخدمة المدارة لمعرف Microsoft Entra عن الهويات المدارة لموارد Azure، والتي يدعمها Azure Databricks أيضا للمصادقة. لمعرفة كيفية استخدام الهويات المدارة لموارد Azure بدلا من أساسيات الخدمة المدارة لمعرف Microsoft Entra لمصادقة Azure Databricks، راجع إعداد مصادقة الهويات المدارة في Azure واستخدامها لأتمتة Azure Databricks.

كيان الخدمة هو هوية للأدوات والأنظمة التلقائية مثل البرامج النصية والتطبيقات وأنظمة CI/CD الأساسية. توصي Databricks باستخدام كيان الخدمة ورمز OAuth المميز أو رمز الوصول الشخصي بدلا من حساب مستخدم Azure Databricks ورمز الوصول الشخصي. تتضمن الميزات:

  • منح الوصول إلى الموارد وتقييده بشكل مستقل عن المستخدم.
  • تمكين المستخدمين من حماية رموز الوصول المميزة الخاصة بهم بشكل أفضل.
  • تعطيل كيان خدمة أو حذفه دون التأثير على المستخدمين الآخرين.
  • إزالة مستخدم عند مغادرته المؤسسة دون التأثير على أي كيان خدمة.

اتبع هذه الإرشادات لاستخدام Terraform لإنشاء كيان خدمة مدار بواسطة معرف Microsoft Entra في Azure، واستخدام موفر Databricks Terraform لربط كيان خدمة معرف Microsoft Entra بمساحة عمل Azure Databricks، ثم إنشاء رمز مميز لمعرف Microsoft Entra أو رمز Azure Databricks OAuth المميز لكيان الخدمة اختياريا.

المتطلبات

الخطوة 1: إنشاء كيان الخدمة

إذا كان لديك بالفعل كيان خدمة مدار من Microsoft Entra ID متوفر، فانتقل إلى الخطوة 2.

  1. في المحطة الطرفية الخاصة بك، قم بإنشاء دليل فارغ ثم قم بالتبديل إليه. (يجب أن تكون كل مجموعة منفصلة من ملفات تكوين Terraform في دليلها الخاص.) على سبيل المثال: mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo.

    mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
    
  2. في هذا الدليل الفارغ، أنشئ ملفا باسم main.tf. أضف المحتوى التالي إلى هذا الملف، ثم احفظ الملف.

    variable "azure_service_principal_display_name" {
      description = "A display name for the <entra-service-principal>."
      type        = string
    }
    
    terraform {
      required_providers {
        azuread = {
          source  = "hashicorp/azuread"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    resource "azuread_application" "this" {
      display_name = var.azure_service_principal_display_name
    }
    
    resource "azuread_service_principal" "this" {
      application_id = azuread_application.this.application_id
    }
    
    resource "time_rotating" "month" {
      rotation_days = 30
    }
    
    resource "azuread_service_principal_password" "this" {
      service_principal_id = azuread_service_principal.this.object_id
      rotate_when_changed  = { rotation = time_rotating.month.id }
    }
    
    output "azure_client_id" {
      description = "The Azure AD service principal's application (client) ID."
      value       = azuread_application.this.application_id
    }
    
    output "azure_client_secret" {
      description = "The Azure AD service principal's client secret value."
      value       = azuread_service_principal_password.this.value
      sensitive   = true
    }
    
  3. في نفس الدليل، قم بإنشاء ملف باسم terraform.tfvars. أضف المحتوى التالي إلى هذا الملف، واستبدل القيمة التالية، ثم احفظ الملف:

    • azure_service_principal_display_name استبدل القيمة باسم عرض لمدير خدمة معرف Microsoft Entra.
    azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
    
  4. تهيئة دليل العمل الذي يحتوي على main.tf الملف عن طريق تشغيل terraform init الأمر . لمزيد من المعلومات، راجع Command: init على موقع Terraform على الويب.

    terraform init
    
  5. تحقق مما إذا كان هناك أي أخطاء في بناء الجملة في التكوين عن طريق تشغيل terraform validate الأمر . لمزيد من المعلومات، راجع الأمر: التحقق من الصحة على موقع Terraform على الويب.

    terraform validate
    
  6. قم بتطبيق التغييرات المطلوبة للوصول إلى الحالة المطلوبة للتكوين عن طريق تشغيل terraform apply الأمر . لمزيد من المعلومات، راجع الأمر: تطبيق على موقع Terraform على الويب.

    terraform apply
    

بعد إنشاء كيان الخدمة، انسخ azure_client_id قيمتي الإخراج و azure_client_secret ، حيث ستحتاج إليهما لاحقا.

للحصول على azure_client_secret القيمة، راجع قيمة outputs.client_secret.value في terraform.tfstate الملف، الموجود في دليل العمل الذي يحتوي على main.tf الملف.

الخطوة 2: إضافة كيان الخدمة إلى مساحة عمل Azure Databricks

إشعار

يضيف المحتوى التالي كيان خدمة على مستوى مساحة عمل Azure Databricks. إذا تم تمكين مساحة عمل Azure Databricks لاتحاد الهوية، فإن المحتوى التالي يقوم أيضا تلقائيا بمزامنة كيان الخدمة إلى حساب Azure Databricks ذي الصلة.

  1. في المحطة الطرفية الخاصة بك، قم بإنشاء دليل فارغ ثم قم بالتبديل إليه. يجب أن تكون كل مجموعة منفصلة من ملفات تكوين Terraform في دليلها الخاص. على سبيل المثال: mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo.

    mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
    
  2. في هذا الدليل الفارغ، أنشئ ملفا باسم main.tf. أضف المحتوى التالي إلى هذا الملف، ثم احفظ الملف.

    variable "databricks_host" {
      description = "The Azure Databricks workspace URL."
      type = string
    }
    
    variable "azure_client_id" {
      type        = string
      description = "The application (client) ID of the <entra-service-principal> to link to an Azure Databricks service principal. This application (client) ID will be the application ID of the Azure Databricks service principal."
    }
    
    variable "databricks_service_principal_display_name" {
      type        = string
      description = "A workspace display name for the Azure Databricks service principal."
    }
    
    terraform {
      required_providers {
        databricks = {
          source = "databricks/databricks"
        }
      }
    }
    
    provider "databricks" {
      host = var.databricks_host
    }
    
    resource "databricks_service_principal" "sp" {
      application_id = var.azure_client_id
      display_name   = var.databricks_service_principal_display_name
    }
    
    output "databricks_service_principal_application_id" {
      value       = databricks_service_principal.sp.application_id
      description = "Application ID of the Azure Databricks service principal."
    }
    
    output "databricks_service_principal_display_name" {
      value       = databricks_service_principal.sp.display_name
      description = "Workspace display name of the Azure Databricks service principal."
    }
    
    output "databricks_workspace_service_principal_id" {
      value       = databricks_service_principal.sp.id
      description = "Workspace ID of the Azure Databricks service principal. This ID is generated by Azure Databricks for this workspace."
    }
    

    إشعار

    لإضافة كيان الخدمة هذا إلى المجموعات، وإضافة استحقاقات إلى كيان الخدمة هذا، راجع databricks_service_principal على موقع Terraform على الويب.

  3. في نفس الدليل، قم بإنشاء ملف باسم terraform.tfvars. أضف المحتوى التالي إلى هذا الملف، واستبدل القيم التالية، ثم احفظ الملف:

    • databricks_host استبدل القيمة بعنوان URL لمساحة عمل Azure Databricks.
    • azure_client_id استبدل القيمة بالقيمة azure_client_id من الخطوة 1.
    • databricks_service_principal_display_name استبدل القيمة باسم عرض مساحة العمل لمدير خدمة Azure Databricks.
    databricks_host                           = "<The Azure Databricks workspace URL, starting with https://>"
    azure_client_id                           = "<The Azure client ID of the Azure Active AD service principal>"
    databricks_service_principal_display_name = "<A workspace display name for the Azure Databricks service principal>"
    
  4. تهيئة دليل العمل الذي يحتوي على main.tf الملف عن طريق تشغيل terraform init الأمر . لمزيد من المعلومات، راجع Command: init على موقع Terraform على الويب.

    terraform init
    
  5. تحقق مما إذا كان هناك أي أخطاء في بناء الجملة في التكوين عن طريق تشغيل terraform validate الأمر . لمزيد من المعلومات، راجع الأمر: التحقق من الصحة على موقع Terraform على الويب.

    terraform validate
    
  6. قم بتطبيق التغييرات المطلوبة للوصول إلى الحالة المطلوبة للتكوين عن طريق تشغيل terraform apply الأمر . لمزيد من المعلومات، راجع الأمر: تطبيق على موقع Terraform على الويب.

    terraform apply
    

بعد إنشاء كيان الخدمة، انسخ databricks_service_principal_application_id قيمة الإخراج، حيث ستحتاج إليها لإنشاء رمز مميز لمعرف Microsoft Entra لكيان الخدمة.

(اختياري) الخطوة 3: إنشاء رمز مميز للوصول إلى معرف Microsoft Entra لكيان خدمة معرف Microsoft Entra

لا توصي Databricks بإنشاء رموز مميزة لمعرف Microsoft Entra لكيانات خدمة معرف Microsoft Entra يدويا. وذلك لأن كل رمز مميز لمعرف Microsoft Entra قصير الأجل، وعادة ما تنتهي صلاحيته في غضون ساعة واحدة. بعد هذا الوقت، يجب إنشاء رمز مميز بديل لمعرف Microsoft Entra يدويا. بدلا من ذلك، استخدم إحدى الأدوات المشاركة أو SDKs التي تنفذ معيار المصادقة الموحد لعميل Databricks. تنشئ هذه الأدوات وSDKs تلقائيا الرموز المميزة لمعرف Microsoft Entra منتهية الصلاحية وتستبدلها، مع الاستفادة من أنواع مصادقة Databricks التالية:

إذا كنت بحاجة إلى إنشاء رمز مميز لمعرف Microsoft Entra يدويا لكيان خدمة معرف Microsoft Entra، فاجمع المعلومات التالية، ثم اتبع الإرشادات الواردة في الحصول على رمز مميز للوصول إلى معرف Microsoft Entra باستخدام واجهة برمجة تطبيقات REST النظام الأساسي للهويات في Microsoft أو الحصول على رمز مميز للوصول إلى معرف Microsoft Entra باستخدام Azure CLI:

  • معرف المستأجر لمدير خدمة معرف Microsoft Entra، والذي ستستخدمه كمعرف المستأجر / معرف / <tenant-id> الدليل (المستأجر) في الإرشادات. للحصول على معرف المستأجر، راجع توفير كيان خدمة في مدخل Microsoft Azure.
  • databricks_service_principal_application_id القيمة من الخطوة 2، والتي ستستخدمها كمعرف العميل / معرف / <client-id> التطبيق (العميل) في الإرشادات.
  • azure_client_secret القيمة من الخطوة 1، والتي ستستخدمها كبيانات العميل السرية / القيمة / <client-secret> في الإرشادات.

بعد إنشاء الرمز المميز لمعرف Microsoft Entra، انسخ access_token القيمة، حيث ستحتاج إلى توفيرها إلى البرنامج النصي أو التطبيق أو النظام.

(اختياري) الخطوة 4: إنشاء رمز Azure Databricks OAuth المميز لكيان خدمة معرف Microsoft Entra

لا توصي Databricks بإنشاء رموز Azure Databricks OAuth المميزة لكيانات الخدمة المدارة بواسطة معرف Microsoft Entra يدويا. وذلك لأن كل رمز مميز ل Azure Databricks OAuth قصير الأجل، وعادة ما تنتهي صلاحيته في غضون ساعة واحدة. بعد هذا الوقت، يجب إنشاء رمز Azure Databricks OAuth المميز البديل يدويا. بدلا من ذلك، استخدم إحدى الأدوات المشاركة أو SDKs التي تنفذ معيار المصادقة الموحد لعميل Databricks. تقوم هذه الأدوات وSDKs تلقائيا بإنشاء واستبدال رموز Azure Databricks OAuth المميزة منتهية الصلاحية لك، والاستفادة من مصادقة الوصول إلى Azure Databricks مع كيان خدمة باستخدام OAuth (OAuth M2M).

إذا كنت بحاجة إلى إنشاء رمز Azure Databricks OAuth المميز يدويا لكيان خدمة معرف Microsoft Entra، فشاهد إنشاء رموز الوصول المميزة واستخدامها يدويا لمصادقة OAuth M2M.