IoT Edge cihaz ayarlarını yapılandırma

Bu makalede, bir IoT Edge cihazının IoT Edge /etc/aziot/config.toml dosyasını yapılandırmaya yönelik ayarlar ve seçenekler gösterilir. IoT Edge, cihazın ayarlarını başlatmak için config.toml dosyasını kullanır. config.toml dosyasının bölümlerinin her birinde çeşitli seçenekler bulunur. Belirli senaryolar için geçerli olduğundan tüm seçenekler zorunlu değildir.

Tüm seçenekleri içeren bir şablon, IoT Edge cihazındaki /etc/aziot dizinindeki config.toml.edge.template dosyasında bulunabilir. Şablonun tamamının veya şablonun bölümlerinin içeriğini config.toml dosyanıza kopyalayabilirsiniz. İhtiyacınız olan bölümleri açıklamayı kaldırın. Önceden tanımlamış olduğunuz parametrelerin üzerine kopyalamamaya dikkat edin.

Bir cihazın yapılandırmasını değiştirirseniz, değişiklikleri uygulamak için kullanın sudo iotedge config apply .

Genel parametreler

Konak adı, parent_hostname, trust_bundle_cert, allow_elevated_docker_permissions ve auto_reprovisioning_mode parametreleri diğer bölümlerden önce yapılandırma dosyasının başında olmalıdır. Bir ayar koleksiyonundan önce parametre eklemek, bunların doğru şekilde uygulanmasını sağlar. Geçerli söz dizimi hakkında daha fazla bilgi için bkz. toml.io .

Konak adı

Ağ geçidi bulmayı etkinleştirmek için her IoT Edge ağ geçidi (üst) cihazının alt cihazlarının yerel ağda bulmak için kullandığı bir konak adı parametresi belirtmesi gerekir. EdgeHub modülü, sunucu sertifikasıyla eşleştirmek için hostname parametresini de kullanır. Daha fazla bilgi için bkz . EdgeGateway'e neden kendi ana bilgisayar adı hakkında bilgi vermek gerekiyor?.

Not

Konak adı değeri ayarlanmadıysa IoT Edge bunu otomatik olarak bulmaya çalışır. Ancak, ağdaki istemciler ayarlanmadıysa cihazı bulamayabilir.

Ana bilgisayar adı için, cihazın varsayılan ana bilgisayar adını geçersiz kılmak için fqdn-device-name-or-ip-address değerini cihazınızın adıyla değiştirin. Değer, tam etki alanı adı (FQDN) veya IP adresi olabilir. IoT Edge ağ geçidi cihazında ağ geçidi ana bilgisayar adı olarak bu ayarı kullanın.

hostname = "fqdn-device-name-or-ip-address"

Üst konak adı

Üst konak adı, IoT Edge cihazı iç içe uç olarak bilinen bir hiyerarşinin parçası olduğunda kullanılır. Her aşağı akış IoT Edge cihazının üst öğesini tanımlamak için bir parent_hostname parametresi belirtmesi gerekir. Tek bir IoT Edge cihazının hem üst hem de alt cihaz olduğu hiyerarşik bir senaryoda her iki parametreye de ihtiyacı vardır.

fqdn-parent-device-name-or-ip-address değerini üst cihazınızın adıyla değiştirin. Sunucu sertifikası ortak adı için karakter sınırı olan 64 karakterden kısa bir konak adı kullanın.

parent_hostname = "fqdn-parent-device-name-or-ip-address"

parent_hostname parametresini ayarlama hakkında daha fazla bilgi için bkz. Hiyerarşi oluşturmak için Azure IoT Edge cihazlarını birlikte Bağlan.

Paket sertifikasına güven

IoT Edge ve modülleri için güven kökü olarak özel bir sertifika yetkilisi (CA) sertifikası sağlamak için bir trust_bundle_cert yapılandırması belirtin. Parametre değerini dosya URI'siyle cihazınızdaki kök CA sertifikasıyla değiştirin.

trust_bundle_cert = "file:///var/aziot/certs/trust-bundle.pem"

IoT Edge güven paketi hakkında daha fazla bilgi için bkz . Güvenilen kök CA'yı yönetme.

Yükseltilmiş Docker İzinleri

Kök erişim kazanmak için bazı docker özellikleri kullanılabilir. Varsayılan olarak, --privileged docker HostConfig'in CapAdd parametresinde listelenen bayrak ve tüm özelliklere izin verilir.

Ayrıcalıklı veya ek özellikler gerektiren modül yoksa, cihazın güvenliğini artırmak için allow_elevated_docker_permissions kullanın.

allow_elevated_docker_permissions = false

Otomatik yeniden sağlama modu

İsteğe bağlı auto_reprovisioning_mode parametresi, bir cihazın Cihaz Sağlama Hizmeti ile otomatik olarak yeniden sağlamayı ne zaman deneyeceğine karar veren koşulları belirtir. Cihaz el ile sağlanmışsa otomatik sağlama modu yoksayılır. DPS sağlama modunu ayarlama hakkında daha fazla bilgi için, daha fazla bilgi için bu makaledeki Sağlama bölümüne bakın.

Aşağıdaki değerlerden biri ayarlanabilir:

Mod Açıklama
Dinamik Cihaz bir IoT Hub'dan diğerine taşınmış olabileceğini algıladığında yeniden sağlama. Bu mod varsayılandır.
AlwaysOnStartup Cihaz yeniden başlatıldığında veya bir kilitlenme, daemon'ların yeniden başlatılmasına neden olduğunda yeniden sağlama.
OnErrorOnly Cihaz yeniden sağlamayı hiçbir zaman otomatik olarak tetiklemeyin. Cihaz yeniden sağlama yalnızca cihaz bağlantı hataları nedeniyle kimlik sağlama sırasında IoT Hub'a bağlanamıyorsa geri dönüş olarak gerçekleşir. Bu geri dönüş davranışı Dinamik ve AlwaysOnStartup modlarında da örtülüdür.

Örneğin:

auto_reprovisioning_mode = "Dynamic"

Cihaz yeniden sağlama hakkında daha fazla bilgi için bkz . IoT Hub Cihazı yeniden sağlama kavramları.

Hazırlanıyor

IoT Edge çözümünüzün gereksinimlerine bağlı olarak büyük ölçekte tek bir cihaz veya birden çok cihaz sağlayabilirsiniz. IoT Edge cihazlarınız ile IoT hub'larınız arasındaki iletişimlerin kimliğini doğrulamak için kullanılabilen seçenekler, seçtiğiniz sağlama yöntemine bağlıdır.

bağlantı dizesi, simetrik anahtar, X.509 sertifikası, kimlik sertifikası özel anahtarı veya kimlik sertifikası ile sağlayabilirsiniz. DPS sağlama, çeşitli seçeneklere dahildir. Sağlama işleminiz için bir yöntem seçin. Örnek değerleri kendi değerlerinizle değiştirin.

bağlantı dizesi ile el ile sağlama

[provisioning]
source = "manual"
connection_string = "HostName=example.azure-devices.net;DeviceId=my-device;SharedAccessKey=<Shared access key>"

Sağlama bilgilerini alma hakkında daha fazla bilgi için bkz . Simetrik anahtarları kullanarak Linux'ta IoT Edge cihazı oluşturma ve sağlama.

Simetrik anahtarla el ile sağlama

[provisioning]
source = "manual"
iothub_hostname = "example.azure-devices.net"
device_id = "my-device"

[provisioning.authentication]
method = "sas"

device_id_pk = { value = "<Shared access key>" }     # inline key (base64), or...
device_id_pk = { uri = "file:///var/aziot/secrets/device-id.key" }            # file URI, or...
device_id_pk = { uri = "pkcs11:slot-id=0;object=device%20id?pin-value=1234" } # PKCS#11 URI

Sağlama bilgilerini alma hakkında daha fazla bilgi için bkz . Simetrik anahtarları kullanarak Linux'ta IoT Edge cihazı oluşturma ve sağlama.

X.509 sertifikasıyla el ile sağlama

[provisioning]
source = "manual"
iothub_hostname = "example.azure-devices.net"
device_id = "my-device"

[provisioning.authentication]
method = "x509"

X.509 sertifikalarını kullanarak sağlama hakkında daha fazla bilgi için bkz . X.509 sertifikalarını kullanarak Linux üzerinde IoT Edge cihazı oluşturma ve sağlama.

Simetrik anahtarla DPS sağlama

[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "<DPS-ID-SCOPE>"

# (Optional) Use to send a custom payload during DPS registration
payload = { uri = "file:///var/secrets/aziot/identityd/dps-additional-data.json" }

[provisioning.attestation]
method = "symmetric_key"
registration_id = "my-device"

symmetric_key = { value = "<Device symmetric key>" } # inline key (base64), or...
symmetric_key = { uri = "file:///var/aziot/secrets/device-id.key" }                                                          # file URI, or...
symmetric_key = { uri = "pkcs11:slot-id=0;object=device%20id?pin-value=1234" }    

Simetrik anahtarla DPS sağlama hakkında daha fazla bilgi için bkz . Simetrik anahtar kullanarak Linux'ta uygun ölçekte IoT Edge cihazları oluşturma ve sağlama.

X.509 sertifikalarıyla DPS sağlama

[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net/"
id_scope = "<DPS-ID-SCOPE>"

# (Optional) Use to send a custom payload during DPS registration
 payload = { uri = "file:///var/secrets/aziot/identityd/dps-additional-data.json" }

[provisioning.attestation]
method = "x509"
registration_id = "my-device"

# Identity certificate private key
identity_pk = "file:///var/aziot/secrets/device-id.key.pem"        # file URI, or...
identity_pk = "pkcs11:slot-id=0;object=device%20id?pin-value=1234" # PKCS#11 URI

# Identity certificate
identity_cert = "file:///var/aziot/certs/device-id.pem"     # file URI, or...
[provisioning.authentication.identity_cert]                 # dynamically issued via...
method = "est"                                              # - EST
method = "local_ca"                                         # - a local CA
common_name = "my-device"                                   # with the given common name, or...
subject = { L = "AQ", ST = "Antarctica", CN = "my-device" } # with the given DN fields

(İsteğe bağlı) Cihaz kimliği sertifikasının otomatik olarak yenilenmesini etkinleştirme

Autorenewal bilinen bir sertifika verme yöntemi gerektirir. yöntemini veya local_caolarak est ayarlayın.

Önemli

Otomatik yeniden oluşturmayı yalnızca bu cihaz CA tabanlı DPS kaydı için yapılandırılmışsa etkinleştirin. Tek bir kayıt için otomatik düzeltmenin kullanılması, cihazın yeniden sağlanamamasına neden olur.

[provisioning.attestation.identity_cert.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

X.509 sertifikalarıyla DPS sağlama hakkında daha fazla bilgi için bkz . X.509 sertifikalarını kullanarak Linux üzerinde büyük ölçekte IoT Edge cihazları oluşturma ve sağlama.

TPM ile DPS sağlama (Güvenilen Platform Modülü)

[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "<DPS-ID-SCOPE>"

# (Optional) Use to send a custom payload during DPS registration
payload = { uri = "file:///var/secrets/aziot/identityd/dps-additional-data.json" }

[provisioning.attestation]
method = "tpm"
registration_id = "my-device"

TPM ile DPS sağlamayı kullanıyorsanız ve özel yapılandırma gerektiriyorsanız TPM bölümüne bakın.

Daha fazla bilgi için bkz . Linux üzerinde TPM ile uygun ölçekte IoT Edge cihazları oluşturma ve sağlama.

Bulut Zaman Aşımı ve Yeniden Deneme Davranışı

Bu ayarlar, sağlama sırasında Cihaz Sağlama Hizmeti (DPS) ile iletişim veya modül kimliği oluşturma için IoT Hub gibi bulut işlemleri için zaman aşımını ve yeniden denemeleri denetler.

cloud_timeout_sec parametresi, bulut hizmetlerine yönelik bir ağ isteğinin saniyeler içinde son tarihidir. Örneğin, bir HTTP isteği. Bu son tarihten önce bulut hizmetinden bir yanıt alınmalıdır veya istek zaman aşımı olarak başarısız olur.

cloud_retries parametresi, ilk deneme başarısız olduktan sonra isteğin kaç kez yeniden denenebileceğini denetler. İstemci her zaman en az bir kez gönderir, bu nedenle ilk deneme başarısız olduktan sonra değer yeniden deneme sayısıdır. Örneğin, cloud_retries = 2 istemcinin toplam üç deneme yaptığı anlamına gelir.

cloud_timeout_sec = 10
cloud_retries = 1

Sertifika verme

Dinamik olarak verilen sertifikaları yapılandırdıysanız, karşılık gelen verme yönteminizi seçin ve örnek değerleri kendi sertifikanızla değiştirin.

EST aracılığıyla sertifika verme

[cert_issuance.est]
trusted_certs = ["file:///var/aziot/certs/est-id-ca.pem",]

[cert_issuance.est.auth]
username = "estuser"
password = "estpwd"

CIHAZDA zaten est id sertifikası var

identity_cert = "file:///var/aziot/certs/est-id.pem"

identity_pk = "file:///var/aziot/secrets/est-id.key.pem"      # file URI, or...
identity_pk = "pkcs11:slot-id=0;object=est-id?pin-value=1234" # PKCS#11 URI

EST bootstrap id sertifikası aracılığıyla istenen EST kimliği sertifikası

İlk EST Kimliği sertifikasını oluşturmak için bir kez kullanılan bir TLS istemci sertifikasıyla kimlik doğrulaması. İlk sertifikanın verilmesinden sonra, identity_certidentity_pk ve otomatik olarak oluşturulur ve gelecekteki kimlik doğrulaması ve yenilemeler için kullanılır. Oluşturulan EST Kimliği sertifikasının Konu Ortak Adı (CN), sağlama bölümünde yapılandırılan cihaz kimliğiyle her zaman aynıdır. Bu dosyalar sırasıyla aziotcs ve aziotks kullanıcıları tarafından okunabilir olmalıdır.

bootstrap_identity_cert = "file:///var/aziot/certs/est-bootstrap-id.pem"

bootstrap_identity_pk = "file:///var/aziot/secrets/est-bootstrap-id.key.pem"      # file URI, or...
bootstrap_identity_pk = "pkcs11:slot-id=0;object=est-bootstrap-id?pin-value=1234" # PKCS#11 URI

# The following parameters control the renewal of EST identity certs. These certs are issued by the EST server after initial authentication with the bootstrap cert and managed by Certificates Service.

[cert_issuance.est.identity_auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

[cert_issuance.est.urls]
default = "https://example.org/.well-known/est"

Yerel CA aracılığıyla sertifika verme

[cert_issuance.local_ca]
cert = "file:///var/aziot/certs/local-ca.pem"

pk = "file:///var/aziot/secrets/local-ca.key.pem"      # file URI, or...
pk = "pkcs11:slot-id=0;object=local-ca?pin-value=1234" # PKCS#11 URI

TPM (Güvenilen Platform Modülü)

DPS TPM sağlamayı kullanırken TPM için özel yapılandırmaya ihtiyacınız varsa, bu TPM ayarlarını kullanın.

Kabul edilebilir TCTI yükleyici dizeleri için TCG TSS 2.0 TPM Komut İletim Arabirimi (TCTI) API Belirtimi'nin 3.5. bölümüne bakın.

Boş bir dizeye ayarlanması, TCTI yükleyici kitaplığının önceden tanımlanmış bir TCTI modülü kümesini sırayla yüklemeyi denemesine neden olur.

[tpm]
tcti = "swtpm:port=2321"

TPM dizini DPS kimlik doğrulama anahtarını kalıcı hale getirmektedir. Dizin, gibi 0x81000000 kalıcı nesneler için temel adresten uzaklık olarak alınır ve ile aralığında 0x00_00_00 yer almalıdır 0x7F_FF_FF. Varsayılan değer şudur: 0x00_01_00.

auth_key_index = "0x00_01_00"

Gerekirse onay ve sahip hiyerarşileri için yetkilendirme değerlerini kullanın. Varsayılan olarak, bu değerler boş dizelerdir.

[tpm.hierarchy_authorization]
endorsement = "hello"
owner = "world"

PKCS#11

Herhangi bir PKCS#11 URI'sini kullandıysanız, aşağıdaki parametreleri kullanın ve değerleri PKCS#11 yapılandırmanızla değiştirin.

[aziot_keys]
pkcs11_lib_path = "/usr/lib/libmypkcs11.so"
pkcs11_base_slot = "pkcs11:slot-id=0?pin-value=1234"

Varsayılan Edge Aracısı

IoT Edge ilk kez başlatıldığında, varsayılan bir Edge Aracısı modülünü önyükler. Varsayılan Edge Aracısı modülüne sağlanan parametreleri geçersiz kılmanız gerekiyorsa, bu bölümü kullanın ve değerleri kendi değerlerinizle değiştirin.

Not

agent.config.createOptions parametresi bir TOML satır içi tablosu olarak belirtilir. Bu biçim JSON gibi görünür ancak JSON değildir. Daha fazla bilgi için TOML v1.0.0 belgelerinin Satır içi Tablosu'na bakın.

[agent]
name = "edgeAgent"
type = "docker"
imagePullPolicy = "..."   # "on-create" or "never". Defaults to "on-create"

[agent.config]
image = "mcr.microsoft.com/azureiotedge-agent:1.4"
createOptions = { HostConfig = { Binds = ["/iotedge/storage:/iotedge/storage"] } }

[agent.config.auth]
serveraddress = "example.azurecr.io"
username = "username"
password = "password"

[agent.env]
RuntimeLogLevel = "debug"
UpstreamProtocol = "AmqpWs"
storageFolder = "/iotedge/storage"

Daemon yönetimi ve iş yükü API'si uç noktaları

Yönetim ve iş yükü API'sinin uç noktalarını geçersiz kılmanız gerekiyorsa, bu bölümü kullanın ve değerleri kendi değerlerinizle değiştirin.

[connect]
workload_uri = "unix:///var/run/iotedge/workload.sock"
management_uri = "unix:///var/run/iotedge/mgmt.sock"

[listen]
workload_uri = "unix:///var/run/iotedge/workload.sock"
management_uri = "unix:///var/run/iotedge/mgmt.sock"

Edge Aracısı watchdog

Varsayılan Edge Aracısı izleme ayarlarını geçersiz kılmanız gerekiyorsa, bu bölümü kullanın ve değerleri kendi değerlerinizle değiştirin.

[watchdog]
max_retries = "infinite"   # the string "infinite" or a positive integer. Defaults to "infinite"

Edge CA sertifikası

Tüm modül sertifikalarınızı veren kendi Edge CA sertifikanız varsa, bu bölümlerden birini kullanın ve değerleri kendi sertifikanızla değiştirin.

Dosyadan yüklenen Edge CA sertifikası

[edge_ca]
cert = "file:///var/aziot/certs/edge-ca.pem"            # file URI

pk = "file:///var/aziot/secrets/edge-ca.key.pem"        # file URI, or...
pk = "pkcs11:slot-id=0;object=edge%20ca?pin-value=1234" # PKCS#11 URI

EST üzerinden verilen Edge CA sertifikası

[edge_ca]
method = "est"

EST sunucusu kullanma hakkında daha fazla bilgi için bkz . Öğretici: Azure IoT Edge için Güvenli Aktarım Sunucusu üzerinden Kaydı Yapılandırma.

Edge CA sertifikasını veren isteğe bağlı EST yapılandırması

Ayarlanmazsa , [cert_issuance.est] içindeki varsayılan değerler kullanılır.

common_name = "aziot-edge CA"
expiry_days = 90
url = "https://example.org/.well-known/est"

username = "estuser"
password = "estpwd"

CIHAZDA zaten est id sertifikası var

identity_cert = "file:///var/aziot/certs/est-id.pem"

identity_pk = "file:///var/aziot/secrets/est-id.key.pem"      # file URI, or...
identity_pk = "pkcs11:slot-id=0;object=est-id?pin-value=1234" # PKCS#11 URI

EST bootstrap id sertifikası aracılığıyla istenen EST kimliği sertifikası

bootstrap_identity_cert = "file:///var/aziot/certs/est-bootstrap-id.pem"

bootstrap_identity_pk = "file:///var/aziot/secrets/est-bootstrap-id.key.pem"      # file URI, or...
bootstrap_identity_pk = "pkcs11:slot-id=0;object=est-bootstrap-id?pin-value=1234" # PKCS#11 URI

Yerel CA sertifikasından verilen Edge CA sertifikası

[cert_issuance.local_ca] öğesinin ayarlanmasını gerektirir.

[edge_ca]
method = "local_ca"

# Optional configuration
common_name = "aziot-edge CA"
expiry_days = 90

Edge CA hızlı başlangıç sertifikaları

Tüm modül sertifikalarını vermek için kullanılan kendi Edge CA sertifikanız yoksa, bu bölümü kullanın ve otomatik olarak oluşturulan otomatik olarak imzalanan Edge CA sertifikasının kullanım ömrü için gün sayısını ayarlayın. Süre sonu varsayılan olarak 90 gündür.

Dikkat

Bu ayar üretim kullanımı için ÖNERILMEZ. Lütfen Edge CA sertifikası bölümlerinde kendi Edge CA sertifikanızı yapılandırın.

[edge_ca]
auto_generated_edge_ca_expiry_days = 90

Edge CA sertifikası otomatik yeniden oluşturma

Bu ayar, Edge CA sertifikasının otomatik olarak yenisini yönetir. Otomatik yenileme, Edge CA'sı hızlı başlangıç olarak yapılandırıldığında veya Edge CA'da bir verme method kümesi olduğunda uygulanır. Edge çalışma zamanı bunları yenilemek için yeterli bilgiye sahip olmadığından, dosyalardan yüklenen Edge CA sertifikaları genellikle otomatik olarak yenilenemez.

Önemli

Edge CA'sının yenilenmesi, bu CA tarafından verilen tüm sunucu sertifikalarının yeniden üretilmesi gerekir. Bu yeniden oluşturma işlemi tüm modüllerin yeniden başlatılmasıyla gerçekleştirilir. Edge CA yenileme süresi garanti edilemiyor. Rastgele modül yeniden başlatmaları kullanım örneğiniz için kabul edilemezse otomatik yeniden eklemeyi devre dışı bırakın.

[edge_ca.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

Görüntü çöp toplama

Varsayılan görüntü çöp toplama yapılandırmasını geçersiz kılmanız gerekiyorsa, bu bölümü kullanın ve bu bölümdeki değerleri kendi değerlerinizle değiştirin.

Parametre Açıklama
enabled Görüntü atık toplamayı çalıştırır
cleanup_recurrence Görüntü çöp toplama işleminin ne sıklıkta çalışmasını istiyorsunuz?
image_age_cleanup_threshold Kullanılmayan görüntülerin yaşı. Eşikten daha eski görüntüler kaldırılır
cleanup_time 24 saat SS:MM biçimi. Temizleme işi çalıştırıldığında
[image_garbage_collection]
enabled = true
cleanup_recurrence = "1d"
image_age_cleanup_threshold = "7d"
cleanup_time = "00:00"

Moby çalışma zamanı

Varsayılan Moby çalışma zamanı yapılandırmasını geçersiz kılmanız gerekiyorsa, bu bölümü kullanın ve değerleri kendi değerlerinizle değiştirin.

[moby_runtime]
uri = "unix:///var/run/docker.sock"
network = "azure-iot-edge"