إدارة الأسرار باستخدام Azure Key Vault أو أسرار Kubernetes في Azure IoT MQ Preview

هام

معاينة عمليات Azure IoT - التي تم تمكينها بواسطة Azure Arc قيد المعاينة حاليا. يجب عدم استخدام برنامج المعاينة هذا في بيئات الإنتاج.

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

يمكنك استخدام Azure Key Vault لإدارة الأسرار لوسيط MQTT الموزع ل Azure IoT MQ Preview بدلا من أسرار Kubernetes. توضح لك هذه المقالة كيفية إعداد Key Vault للوسيط الخاص بك واستخدامه لإدارة الأسرار.

المتطلبات الأساسية

  • مثيل Azure Key Vault مع سر.

  • كيان خدمة Microsoft Entra مع get وأذونات list للبيانات السرية في مثيل Key Vault. لتكوين كيان الخدمة لأذونات Key Vault، راجع تعيين نهج الوصول إلى Key Vault.

  • سر Kubernetes مع بيانات اعتماد كيان الخدمة، مثل هذا المثال مع السر الافتراضي aio-akv-sp :

    apiVersion: v1
    kind: Secret
    metadata:
      name: aio-akv-sp
      namespace: azure-iot-operations
    type: Opaque
    data:
      clientid: <base64 encoded client id>
      clientsecret: <base64 encoded client secret>
    
  • موفر Azure Key Vault لبرنامج تشغيل Secrets Store CSI

استخدام Azure Key Vault لإدارة البيانات السرية

keyVault يتوفر الحقل أينما يتم استخدام أسرار Kubernetes (secretName). يصف الجدول التالي خصائص keyVault الحقل.

الخاصية المطلوب ‏‏الوصف
المخزن ‏‏نعم‬ يحدد Azure Key Vault الذي يحتوي على الأسرار.
vault.name ‏‏نعم‬ يحدد اسم Azure Key Vault. للحصول على اسم Key Vault من مدخل Microsoft Azure، انتقل إلى مثيل Key Vault وانسخ الاسم من صفحة Overview.
vault.directoryId ‏‏نعم‬ تحديد معرف مستأجر Microsoft Entra. للحصول على معرف المستأجر من مدخل Microsoft Azure، انتقل إلى مثيل Key Vault وانسخ معرف المستأجر من صفحة نظرة عامة.
vault.credentials.servicePrincipalLocalSecretName ‏‏نعم‬ تحديد اسم السر الذي يحتوي على بيانات اعتماد كيان الخدمة.
vaultSecret نعم، عند استخدام أسرار Key Vault العادية يحدد السر في Azure Key Vault.
vaultSecret.name ‏‏نعم‬ يحدد اسم السر.
vaultSecret.version لا تحديد إصدار السر.
vaultCert نعم، عند استخدام شهادات Key Vault تحديد الشهادة في Azure Key Vault.
vaultCert.name ‏‏نعم‬ يحدد اسم سر الشهادة.
vaultCert.version لا تحديد إصدار بيانات الشهادة السرية.
vaultCaChainSecret نعم، عند استخدام سلسلة الشهادات تحديد سلسلة الشهادات في Azure Key Vault.
vaultCaChainSecret.name ‏‏نعم‬ تحديد اسم سلسلة الشهادات.
vaultCaChainSecret.version لا تحديد إصدار سلسلة الشهادات.
اسم المستخدم لا يستخدم فقط لموصل Kafka لمراكز الأحداث، راجع إرسال الرسائل وتلقيها بين Azure IoT MQ ومراكز الأحداث أو Kafka.

يحدد نوع البيانات السرية التي تستخدمها أي من الحقول التالية يمكنك استخدامها:

  • vaultSecret: استخدم هذا الحقل عند استخدام سر عادي. على سبيل المثال، يمكنك استخدام هذا الحقل لتكوين مورد BrokerAuthentication مع usernamePassword الحقل.
  • vaultCert: استخدم هذا الحقل عند استخدام سر نوع الشهادة مع شهادة العميل والمفتاح. على سبيل المثال، يمكنك استخدام هذا الحقل لتمكين TLS على BrokerListener.
  • vaultCaChainSecret: استخدم هذا الحقل عندما تحتاج إلى تقديم سلسلة شهادات كاملة، مع جميع الشهادات المتوسطة أو الجذر الإضافية، إلى الخادم البعيد. على سبيل المثال، يمكنك استخدام هذا الحقل لتكوين مورد MqttBridge الاتصال or مع remoteBrokerConnection الحقل. لاستخدام هذا الحقل، قم باستيراد شهادات X.509 بدون مفاتيح خاصة بتنسيق PEM كسر عادي متعدد الأسطر (وليس نوع الشهادة) إلى Key Vault. يجب استخدام هذا الحقل بالإضافة إلى vaultCert الذي يحتوي على شهادة العميل والمفتاح الخاص.

الأمثلة

على سبيل المثال، لإنشاء TLS BrokerListener يستخدم Azure Key Vault للبيانات السرية لشهادة الخادم، استخدم YAML التالي:

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerListener
metadata:
  name: tls-listener-manual
  namespace: azure-iot-operations
spec:
  brokerRef: broker
  authenticationEnabled: true
  authorizationEnabled: false
  port: 8883
  tls:
    keyVault:
      vault:
        name: my-key-vault
        directoryId: <AKV directory ID>
        credentials:
          servicePrincipalLocalSecretName: aio-akv-sp
      vaultCert:
        name: my-server-certificate
        # version: 939ecc2...

يوضح هذا المثال التالي كيفية استخدام Azure Key Vault للحقل usernamePassword في مورد BrokerAuthentication:

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerAuthentication
metadata:
  name: my-authentication
  namespace: azure-iot-operations
spec:
  listenerRef: 
    - tls-listener-manual
  authenicationMethods:
    - usernamePassword:
        keyVault:
          vault:
            name: my-key-vault
            directoryId: <AKV directory ID>
            credentials:
              servicePrincipalLocalSecretName: aio-akv-sp
          vaultSecret:
            name: my-username-password-db
            # version: 939ecc2...

يوضح هذا المثال كيفية استخدام Azure Key Vault لبيانات اعتماد وسيط جسر MQTT عن بعد:

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: MqttBridgeConnector
metadata:
  name: my-bridge
  namespace: azure-iot-operations
spec:
  image:
    repository: mcr.microsoft.com/azureiotoperations/mqttbridge
    tag: 0.4.0-preview
    pullPolicy: IfNotPresent
  protocol: v5
  bridgeInstances: 1
  remoteBrokerConnection:
    endpoint: example.broker.endpoint:8883
    tls:
      tlsEnabled: true
      trustedCaCertificateConfigMap: my-ca-certificate
    authentication:
      x509:
        keyVault:
          vault:
            name: my-key-vault
            directoryId: <AKV directory ID>
            credentials:
              servicePrincipalLocalSecretName: aio-akv-sp
          vaultCaChainSecret:
            name: my-remote-broker-certificate
            # version: 939ecc2...