Azure IoT İşlemleri'nde güvenli ayarları etkinleştirme

Azure IoT İşlemleri için güvenli ayarlar arasında gizli dizi yönetimi kurulumu ve bulut bağlantıları için kullanıcı tarafından atanan yönetilen kimlik (örneğin, bir OPC UA sunucusu veya veri akışı uç noktaları) bulunur.

Bu makalede, ilk dağıtımınız sırasında yapmadıysanız güvenli ayarları etkinleştirme yönergeleri sağlanır.

Prerequisites

  • Geliştirme makinenizde yüklü Azure CLI. Kullanılabilir Azure CLI uzantıları sayfasında, azure-iot-ops uzantısını kullanmak için gereken en düşük sürüme bakın. Sürümünüzü denetlemek ve az --version gerekirse güncelleştirmek için kullanınaz upgrade. Daha fazla bilgi için bkz. Azure CLI yükleme.

  • Azure CLI için Azure IoT İşlemleri uzantısı. Uzantıyı eklemek veya en son sürüme güncelleştirmek için aşağıdaki komutu kullanın:

    az extension add --upgrade --name azure-iot-ops
    
  • Azure CLI için connectedk8s uzantısının en son sürümü. Uzantıyı eklemek veya en son sürüme güncelleştirmek için aşağıdaki komutu kullanın:

    az extension add --upgrade --name connectedk8s
    

Güvenli ayarlar için kümeyi etkinleştirme

Azure IoT İşlemleri örneğinizde gizli değer senkronizasyonunu etkinleştirmek için OIDC sağlayıcısı ve iş yükü kimlik federasyonu özellikleri kümenizde etkinleştirilmelidir. Bu yapılandırma, Azure Key Vault Gizli Dizi Deposu uzantısının bir Azure Key Vault'tan gizli dizileri eşitlemesi ve uçta Kubernetes gizli dizileri olarak depolaması için gereklidir.

Azure Kubernetes Service (AKS) kümeleri için, küme oluşturduğunuzda veya mevcut bir kümede OIDC issuer ve iş yükü kimliği özelliklerini etkinleştirebilirsiniz. Daha fazla bilgi için, AKS kümesinde Microsoft Entra İş Yükü Kimliği'yi dağıt ve yapılandırma bölümüne bakınız. AKS Uç Temel Bileşenleri'ta kümeler için otomatik betik bu özellikleri varsayılan olarak etkinleştirir. Azure Yerel'daki AKS kümeleri için, gerekli özelliklere sahip bir kümeniz yoksa, yeni bir küme oluşturmak amacıyla Azure Arc ile etkinleştirilmiş bir AKS kümesinde iş yükü kimliğini dağıtma ve yapılandırma adımlarını izleyin.

Kubernetes'te k3s kümeleri için mevcut bir kümeyi güncelleştirebilirsiniz. Bu özellikleri etkinleştirmek ve yapılandırmak için aşağıdaki adımları kullanın:

  1. OIDC vereni ve iş yükü kimliğini etkinleştirmek için kümeyi güncelleştirin.

    az connectedk8s update -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --enable-oidc-issuer --enable-workload-identity
    

    Kümeyi oluştururken OIDC veren ve iş yükü kimliği özelliklerini etkinleştirdiyseniz, önceki komutu yeniden çalıştırmanız gerekmez. Kümenizin OIDC veren ve iş yükü kimliği özelliklerinin durumunu denetlemek için aşağıdaki komutu kullanın:

    az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"
    
  2. Kümenin verici URL'sini alın.

    az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
    

    Sonraki adımlarda kullanmak üzere bu komutun çıkışını not edin.

  3. Kubernetes kümenizi dağıttığınız makinede k3s yapılandırma dosyasını oluşturun:

    sudo nano /etc/rancher/k3s/config.yaml
    
  4. Aşağıdaki içeriği config.yaml dosyasına ekleyin ve <SERVICE_ACCOUNT_ISSUER> yer tutucusunu önceden not ettiğiniz küme sağlayıcı URL'si ile değiştirin.

    kube-apiserver-arg:
    - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
    - service-account-max-token-expiration=24h
    

    Dosyayı kaydedin ve nano düzenleyiciden çıkın.

  5. k3s hizmetini yeniden başlatın:

    sudo systemctl restart k3s
    

Gizli bilgi yönetimini ayarlama

Azure IoT İşlemleri için gizli bilgi yönetimi, gizli bilgileri bir Azure Key Vault'tan senkronize etmek ve kenar biriminde Kubernetes gizli bilgileri olarak depolamak için Secret Store uzantısını kullanır. Gizli Depo uzantısı, sırların depolandığı Azure Key Vault erişimine sahip, kullanıcı tarafından atanmış bir yönetilen kimlik gerektirir. Daha fazla bilgi edinmek için bkz. Azure kaynakları için yönetilen kimlikler nelerdir?

Gizlilik yönetimini ayarlamak için:

  1. Gizli bilgilerin depolanması için bir Azure Key Vault oluşturun ve Key Vault Secrets Officer

  2. Gizli Dizi Deposu uzantısının anahtar kasasına erişmesi için kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.

  3. Azure IoT İşlemleri örneğini gizli bilgilerin senkronizasyonu için ayarlamak üzere az iot ops secretsync enable komutunu kullanın. Bu komut:

    • Kullanıcı tarafından atanan yönetilen kimliği kullanarak bir federe kimlik bilgisi oluşturur.
    • Azure Key Vault'a erişim için kullanıcı tarafından atanan yönetilen kimliğe rol ataması ekler.
    • Azure IoT Operasyonları örneğiyle ilişkili minimum gizli sağlayıcı sınıfını ekler.
    # Variable block
    AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME>"
    KEYVAULT_NAME="<KEYVAULT_NAME>"
    
    #Get the resource ID of the user-assigned managed identity
    USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Get the resource ID of the key vault
    KEYVAULT_RESOURCE_ID=$(az keyvault show --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Enable secret synchronization
    az iot ops secretsync enable --instance $AIO_INSTANCE_NAME \
                                 --resource-group $RESOURCE_GROUP \
                                 --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID \
                                 --kv-resource-id $KEYVAULT_RESOURCE_ID
    

Gizli eşitleme kurulumu tamamlandıktan sonra Azure IoT İşlemleri'da gizli bilgileri nasıl kullanacağınızı öğrenmek için Azure IoT İşlemleri dağıtımınız için gizli bilgileri yönetme konusuna bakabilirsiniz.

Bulut bağlantıları için kullanıcı tarafından atanan yönetilen kimliği ayarlama

Veri akışı uç noktaları gibi bazı Azure IoT İşlemleri bileşenleri, bulut bağlantıları için kullanıcı tarafından atanan yönetilen kimliği kullanır. Gizli yönetimini ayarlamak için kullandığınız kimlikten ayrı bir kimlik kullanmanızı öneririz.

  1. Bulut bağlantıları için kullanılan kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.

    Note

    Yönetilen kimliği kullanacağınız bulut kaynağı için kimlik izni vermeniz gerekir.

  2. kimliği Azure IoT İşlemleri örneğine atamak için az iot ops identity assign komutunu kullanın. Bu komut ayrıca, belirtilen bağlı kümenin OIDC sağlayıcısını ve Azure IoT İşlemleri hizmet hesabını kullanarak bir federasyon kimlik bilgisi oluşturur.

    Important

    Bu komutun varsayılan sürümü, veri akışları için bir kimlik atar. Veri akışı grafiklerini kullanmayı planlıyorsanız parametresini --usage değerine wasm-graphekleyin.

    # Variable block
    AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME FOR CLOUD CONNECTIONS>"
    
    #Get the resource ID of the user-assigned managed identity
    USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Assign the identity to the Azure IoT Operations instance
    az iot ops identity assign --name $AIO_INSTANCE_NAME \
                               --resource-group $RESOURCE_GROUP \
                               --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID
    
  3. Yeni kimliği uygulamak için şema kayıt defteri podlarını yeniden başlatın.

    kubectl delete pods adr-schema-registry-0 adr-schema-registry-1 -n azure-iot-operations
    

Artık bulut bağlantıları için veri akışı uç noktalarındaki bu yönetilen kimliği kullanabilirsiniz.

Azure Örneği Meta Veri Hizmetine pod erişimini engelleme

AKS'de güvenli ayarlarla Azure IoT İşlemleri dağıttığınızda Microsoft, Azure Örnek Meta Veri Hizmeti uç noktasına pod erişimini engellemenizi önerir. Bu özelliği etkinleştirmeyi öğrenmek için bkz. Azure Örnek Meta Veri Hizmeti (IMDS) uç noktasına pod erişimini engelleme.