Bagikan melalui


Mengelola sertifikat untuk penyebaran Azure IoT Operations Anda

Operasi Azure IoT menggunakan TLS untuk mengenkripsi komunikasi antara semua komponen. Artikel ini menjelaskan cara mengelola sertifikat untuk komunikasi internal dan eksternal, serta cara menggunakan penerbit otoritas sertifikat (CA) milik Anda sendiri untuk komunikasi internal dalam penerapan produksi.

Prasyarat

  • Untuk mengelola sertifikat untuk komunikasi eksternal, Anda memerlukan instans Operasi Azure IoT yang disebarkan dengan pengaturan yang aman. Jika Anda menyebarkan Operasi Azure IoT dengan pengaturan pengujian, Anda harus terlebih dahulu mengaktifkan pengaturan aman.

  • Untuk membuat rahasia di Azure Key Vault, Anda memerlukan izin petugas Rahasia di tingkat sumber daya. Untuk informasi tentang menetapkan peran kepada pengguna, lihat Langkah-langkah untuk menetapkan peran Azure.

Mengelola sertifikat untuk komunikasi internal

Semua komunikasi dalam Operasi Azure IoT dienkripsi menggunakan TLS. Untuk membantu Anda memulai, Operasi Azure IoT disebarkan dengan CA akar default dan penerbit untuk sertifikat server TLS. Anda dapat menggunakan penyiapan default untuk tujuan pengembangan dan pengujian. Untuk implementasi produksi, kami merekomendasikan menggunakan penerbit CA Anda sendiri dan solusi PKI perusahaan.

Penerbit default yang ditandatangani sendiri dan sertifikat CA akar untuk sertifikat server TLS

Untuk membantu Anda memulai, Operasi Azure IoT disebarkan dengan penerbit default yang ditandatangani sendiri dan sertifikat CA akar untuk sertifikat server TLS. Anda dapat menggunakan penerbit ini untuk pengembangan dan pengujian. Azure IoT Operations menggunakan cert-manager untuk mengelola sertifikat TLS, dan trust-manager untuk mendistribusikan bundel kepercayaan ke komponen.

  • Sertifikat CA ditandatangani sendiri dan tidak dipercaya oleh klien mana pun di luar Operasi Azure IoT. Subjek sertifikat CA adalah CN=Azure IoT Operations Quickstart Root CA - Not for Production. Sertifikat CA secara otomatis diputar oleh cert-manager.

  • Sertifikat OS akar disimpan dalam rahasia Kubernetes yang disebut azure-iot-operations-aio-ca-certificate di cert-manager bawah namespace.

  • Bagian publik sertifikat OS akar disimpan dalam ConfigMap yang disebut azure-iot-operations-aio-ca-trust-bundle di azure-iot-operations bawah namespace layanan. Anda dapat mengambil sertifikat CA dari ConfigMap dan memeriksanya dengan kubectl dan openssl. ConfigMap terus diperbarui oleh trust-manager ketika sertifikat CA diputar oleh cert-manager.

    kubectl get configmap azure-iot-operations-aio-ca-trust-bundle -n azure-iot-operations -o "jsonpath={.data['ca\.crt']}" | openssl x509 -text -noout
    
    Certificate: 
        Data: 
            Version: 3 (0x2) 
            Serial Number: 
                <SERIAL-NUMBER> 
            Signature Algorithm: sha256WithRSAEncryption 
            Issuer: O=Microsoft, CN=Azure IoT Operations Quickstart Root CA - Not for Production 
            Validity 
                Not Before: Sep 18 20:42:19 2024 GMT 
                Not After : Sep 18 20:42:19 2025 GMT 
            Subject: O=Microsoft, CN=Azure IoT Operations Quickstart Root CA - Not for Production 
            Subject Public Key Info: 
                Public Key Algorithm: rsaEncryption 
                    Public-Key: (2048 bit) 
                    Modulus: <MODULUS> 
                                        Exponent: 65537 (0x10001) 
            X509v3 extensions: 
                X509v3 Key Usage: critical 
                    Certificate Sign, CRL Sign 
                X509v3 Basic Constraints: critical 
                    CA:TRUE 
                X509v3 Subject Key Identifier: 
                    <SUBJECT-KEY-IDENTIFIER> 
        Signature Algorithm: sha256WithRSAEncryption 
    [Signature] 
    
  • Secara default, sudah ada pengeluar sertifikat yang dikonfigurasi dalam yang azure-iot-operations namespace disebut azure-iot-operations-aio-certificate-issuer. Ini digunakan sebagai penerbit umum untuk semua sertifikat server TLS untuk Operasi IoT. Broker MQTT menggunakan penerbit yang dibuat dari sertifikat CA yang sama yang ditandatangani oleh penerbit yang ditandatangani sendiri untuk menerbitkan sertifikat server TLS untuk pendengar TLS default pada port 18883. Anda dapat memeriksa pengeluar sertifikat dengan perintah berikut:

    kubectl get clusterissuer azure-iot-operations-aio-certificate-issuer -o yaml
    
    apiVersion: cert-manager.io/v1 
    kind: ClusterIssuer 
    metadata: 
      creationTimestamp: "2024-09-18T20:42:17Z" 
      generation: 1 
      name: azure-iot-operations-aio-certificate-issuer 
      resourceVersion: "36665" 
      uid: 592700a6-95e0-4788-99e4-ea93934bd330 
    spec: 
      ca: 
        secretName: azure-iot-operations-aio-ca-certificate 
    status: 
      conditions: 
      - lastTransitionTime: "2024-09-18T20:42:22Z" 
        message: Signing CA verified 
        observedGeneration: 1 
        reason: KeyPairVerified 
        status: "True" 
        type: Ready 
    

Bawa penerbit Anda sendiri

Untuk penyebaran produksi, kami sarankan Anda menyiapkan Operasi Azure IoT dengan PKI perusahaan untuk mengelola sertifikat, dan Anda membawa penerbit CA Anda sendiri yang bekerja dengan PKI perusahaan Anda, alih-alih menggunakan penerbit default yang ditandatangani sendiri untuk menerbitkan sertifikat TLS untuk komunikasi internal.

Untuk menyiapkan Operasi Azure IoT dengan penerbit Anda sendiri untuk komunikasi internal, gunakan langkah-langkah berikut sebelum menyebarkan instans ke kluster Anda:

  1. Ikuti langkah-langkah dalam Menyiapkan kluster Anda untuk menyiapkan kluster Anda.

  2. Pasang cert-manager. Cert-manager mengelola sertifikat TLS.

  3. Instal trust-manager . Saat menginstal manajer kepercayaan, atur trust namespace ke cert-manager. Contohnya:

    helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --set app.trust.namespace=cert-manager --wait
    

    Pengelola kepercayaan digunakan untuk mendistribusikan bundel kepercayaan ke komponen.

  4. Buat namespace Operasi Azure IoT.

    kubectl create namespace azure-iot-operations
    
  5. Sebarkan pengeluar sertifikat yang berfungsi dengan cert-manager. Untuk daftar semua penerbit yang didukung, lihat penerbit cert-manager.

    Pengeluar sertifikat dapat berjenis ClusterIssuer atau Issuer. Jika menggunakan Issuer, sumber daya penerbit harus dibuat di namespace Operasi Azure IoT.

  6. Siapkan bundel kepercayaan di namespace Operasi Azure IoT.

    1. Untuk menyiapkan bundel kepercayaan, buat ConfigMap di namespace Operasi Azure IoT. Tempatkan bagian kunci publik sertifikat CA Anda ke dalam peta konfigurasi dengan nama kunci pilihan Anda.

    2. Dapatkan bagian kunci publik dari sertifikat CA Anda. Langkah-langkah untuk memperoleh kunci publik bergantung pada penerbit yang Anda pilih.

    3. Buat ConfigMap. Contohnya:

      kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
      
  7. Ikuti langkah-langkah dalam Menyebarkan Operasi Azure IoT untuk disebarkan, dengan beberapa perubahan.

    1. --user-trust Tambahkan parameter saat menyiapkan kluster. Contohnya:

      az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME>  -g <RESOURCE_GROUP> --user-trust
      
    2. --trust-settings Tambahkan parameter dengan informasi yang diperlukan saat menyebarkan Operasi Azure IoT. Contohnya:

      az iot ops create --subscription <SUBSCRIPTION_ID> -g <RESOURCE_GROUP> --cluster <CLUSTER_NAME> --custom-location <CUSTOM_LOCATION> -n <INSTANCE_NAME> --sr-resource-id <SCHEMAREGISTRY_RESOURCE_ID> --trust-settings configMapName=<CONFIGMAP_NAME> configMapKey=<CONFIGMAP_KEY_WITH_PUBLICKEY_VALUE> issuerKind=<CLUSTERISSUER_OR_ISSUER> issuerName=<ISSUER_NAME>
      

    Nota

    Nama lokasi kustom memiliki panjang maksimum 63 karakter.

Mengelola sertifikat untuk komunikasi eksternal

Pengalaman manajemen sertifikat untuk komunikasi eksternal menggunakan Azure Key vault sebagai solusi vault terkelola di cloud. Sertifikat ditambahkan ke brankas kunci sebagai rahasia dan disinkronkan ke edge sebagai rahasia Kubernetes melalui ekstensi Azure Key Vault Secret Store.

Konektor menggunakan pengalaman manajemen sertifikat untuk mengonfigurasi autentikasi aplikasi klien ke server eksternal. Untuk mempelajari selengkapnya tentang cara konektor menggunakan sertifikat untuk membangun kepercayaan bersama dengan server eksternal, lihat dokumentasi manajemen sertifikat khusus konektor.

Saat Anda menyebarkan Operasi Azure IoT dengan pengaturan aman, Anda dapat mulai menambahkan sertifikat ke Azure Key Vault, dan menyinkronkannya ke kluster Kubernetes untuk digunakan dalam daftar Kepercayaan dan penyimpanan daftar Penerbit untuk koneksi eksternal.

Untuk mengelola sertifikat untuk komunikasi eksternal, ikuti langkah-langkah berikut:

  1. Buka pengalaman Operasi Azure IoT, dan pilih situs Anda dan instans Operasi Azure IoT.

  2. Di panel navigasi kiri, pilih Perangkat.

  3. Klik Kelola sertifikat dan rahasia.

    Cuplikan layar yang memperlihatkan opsi Kelola sertifikat dan rahasia di panel navigasi kiri.

  4. Di halaman Sertifikat dan Rahasia, klik Tambahkan sertifikat baru.

    Cuplikan layar yang memperlihatkan tombol Tambahkan sertifikat baru di halaman perangkat.

  5. Anda dapat menambahkan sertifikat baru dengan dua cara:

    • Unggah Sertifikat: Mengunggah sertifikat yang kemudian ditambahkan sebagai rahasia ke Azure Key Vault dan secara otomatis disinkronkan ke kluster menggunakan ekstensi Secret Store.

      • Lihat detail sertifikat setelah diunggah, untuk memastikan Anda memiliki sertifikat yang benar sebelum menambahkan ke Azure Key Vault dan menyinkronkan ke kluster.
      • Gunakan nama intuitif sehingga Anda dapat mengenali rahasia mana yang mewakili rahasia Anda di masa mendatang.
      • Pilih penyimpanan sertifikat yang sesuai untuk konektor yang menggunakan sertifikat. Misalnya, daftar kepercayaan OPC UA.

      Cuplikan layar yang memperlihatkan opsi Unggah sertifikat saat menambahkan sertifikat baru ke halaman perangkat.

      Nota

      Cukup mengunggah sertifikat tidak akan menambahkan rahasia ke Azure Key Vault dan menyinkronkan ke kluster, Anda harus memilih Terapkan agar perubahan diterapkan.

    • Tambahkan dari Azure Key Vault: Tambahkan rahasia yang ada dari Azure Key vault untuk disinkronkan ke kluster.

      Cuplikan layar yang memperlihatkan opsi Tambahkan dari Azure Key Vault saat menambahkan sertifikat baru ke halaman perangkat.

      Nota

      Pastikan untuk memilih rahasia yang menyimpan sertifikat yang ingin Anda sinkronkan ke kluster. Memilih rahasia yang bukan sertifikat yang benar menyebabkan koneksi gagal.

  6. Menggunakan tampilan daftar, Anda dapat mengelola sertifikat yang disinkronkan. Anda dapat melihat semua sertifikat yang disinkronkan serta ke mana penyimpanan sertifikat tersebut disinkronkan.

    Cuplikan layar yang memperlihatkan daftar sertifikat di halaman perangkat dan cara memfilter menurut Daftar Kepercayaan dan Daftar Penerbit.

Untuk mempelajari selengkapnya tentang bagaimana sertifikat kepercayaan dikelola untuk konektor tertentu, lihat dokumentasi manajemen sertifikat khusus konektor.

Anda juga dapat menghapus sertifikat yang disinkronkan. Saat Anda menghapus sertifikat yang disinkronkan, sertifikat tersebut hanya menghapus sertifikat yang disinkronkan dari kluster Kubernetes, dan tidak menghapus referensi rahasia yang terkandung dari Azure Key Vault. Anda harus menghapus rahasia sertifikat secara manual dari brankas kunci.