Konfigurace nastavení zařízení IoT Edge

Platí pro:Značka zaškrtnutí IoT Edge 1.5 IoT Edge 1.5 Značka zaškrtnutí IoT Edge 1.4 IoT Edge 1.4

Důležité

Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.

Tento článek ukazuje nastavení a možnosti konfigurace souboru IoT Edge /etc/aziot/config.toml zařízení IoT Edge. IoT Edge k inicializaci nastavení pro zařízení používá soubor config.toml . Každá část souboru config.toml má několik možností. Ne všechny možnosti jsou povinné, protože platí pro konkrétní scénáře.

Šablonu obsahující všechny možnosti najdete v souboru config.toml.edge.template v adresáři /etc/aziot na zařízení IoT Edge. Obsah celé šablony nebo oddílů šablony můžete zkopírovat do souboru config.toml . Zrušte komentář k požadovaným oddílům. Mějte na paměti, že nechcete kopírovat parametry, které jste už definovali.

Pokud změníte konfiguraci zařízení, použijte sudo iotedge config apply je k použití změn.

Globální parametry

Název hostitele, parent_hostname, trust_bundle_cert, allow_elevated_docker_permissions a parametry auto_reprovisioning_mode musí být na začátku konfiguračního souboru před všemi dalšími oddíly. Přidání parametrů před kolekci nastavení zajistí jejich správné použití. Další informace o platné syntaxi najdete v tématu toml.io.

Název hostitele

Aby bylo možné povolit zjišťování brány, musí každé zařízení ioT Edge (nadřazené) zadat parametr názvu hostitele, který jeho podřízená zařízení používají k jeho vyhledání v místní síti. Modul EdgeHub také používá parametr názvu hostitele ke shodě s jeho certifikátem serveru. Další informace najdete v tématu Proč je potřeba, aby edgeGateway měl být řečeno o svém vlastním názvu hostitele?.

Poznámka:

Pokud hodnota názvu hostitele není nastavená, IoT Edge se pokusí ji automaticky najít. Klienti v síti ale nemusí být schopni zjistit zařízení, pokud není nastavené.

V případě názvu hostitele nahraďte fqdn-device-name-or-ip-address názvem vašeho zařízení, aby se přepsaly výchozí název hostitele zařízení. Hodnota může být plně kvalifikovaný název domény (FQDN) nebo IP adresa. Toto nastavení použijte jako název hostitele brány na zařízení brány IoT Edge.

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

Nadřazený název hostitele

Název nadřazeného hostitele se používá, když je zařízení IoT Edge součástí hierarchie, jinak se označuje jako vnořená hrana. Každé podřízené zařízení IoT Edge musí zadat parametr parent_hostname k identifikaci nadřazeného objektu. V hierarchickém scénáři, kdy je jedno zařízení IoT Edge nadřazeným i podřízeným zařízením, potřebuje oba parametry.

Nahraďte fqdn-parent-device-name-or-ip-address názvem vašeho nadřazeného zařízení. Použijte název hostitele kratší než 64 znaků, což je limit znaků pro běžný název certifikátu serveru.

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

Další informace o nastavení parametru parent_hostname najdete v tématu Připojení zařízení Azure IoT Edge a vytvořte hierarchii.

Důvěřovat certifikátu sady prostředků

Pokud chcete poskytnout vlastní certifikát certifikační autority (CA) jako kořen důvěryhodnosti pro IoT Edge a moduly, zadejte konfiguraci trust_bundle_cert . Hodnotu parametru nahraďte identifikátorem URI souboru na kořenovém certifikátu certifikační autority na vašem zařízení.

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

Další informace o sadě důvěryhodnosti IoT Edge najdete v tématu Správa důvěryhodné kořenové certifikační autority.

Zvýšená oprávnění Dockeru

Některé funkce Dockeru je možné použít k získání kořenového přístupu. Ve výchozím nastavení --privileged jsou povolené příznaky a všechny možnosti uvedené v parametru CapAdd v docker HostConfig .

Pokud žádné moduly nevyžadují privilegované nebo dodatečné funkce, použijte allow_elevated_docker_permissions ke zlepšení zabezpečení zařízení.

allow_elevated_docker_permissions = false

Režim automatického opětovného zřízení

Volitelný parametr auto_reprovisioning_mode určuje podmínky, které se rozhodnou, kdy se zařízení pokusí automaticky znovu zřídit službu Device Provisioning. Režim automatického zřizování se ignoruje, pokud bylo zařízení zřízeno ručně. Další informace o nastavení režimu zřizování DPS najdete v části Zřizování v tomto článku.

Můžete nastavit jednu z následujících hodnot:

Režim Popis
dynamicky, Opětovné zřízení, když zařízení zjistí, že mohlo být přesunuto z jednoho IoT Hubu do jiného. Tento režim je výchozí.
AlwaysOnStartup Opětovné zřízení při restartování zařízení nebo chybové ukončení způsobí restartování démonů.
OnErrorOnly Automatické opětovné zřízení zařízení nikdy neaktivujte. Opětovné zřízení zařízení probíhá pouze jako záložní, pokud se zařízení během zřizování identit nemůže připojit ke službě IoT Hub kvůli chybám připojení. Toto záložní chování je implicitní v režimech Dynamic a AlwaysOnStartup.

Příklad:

auto_reprovisioning_mode = "Dynamic"

Další informace o opětovném zřízení zařízení najdete v tématu Koncepty opětovného zřízení zařízení služby IoT Hub.

Zřizování

V závislosti na potřebách vašeho řešení IoT Edge můžete zřídit jedno nebo více zařízení ve velkém měřítku. Možnosti dostupné pro ověřování komunikace mezi zařízeními IoT Edge a vašimi ioT Huby závisí na zvolené metodě zřizování.

Můžete zřizovat pomocí připojovací řetězec, symetrického klíče, certifikátu X.509, privátního klíče certifikátu identity nebo certifikátu identity. Zřizování DPS je součástí různých možností. Zvolte jednu metodu pro zřizování. Nahraďte ukázkové hodnoty vlastními hodnotami.

Ruční zřizování pomocí připojovací řetězec

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

Další informace o načítání informací o zřizování najdete v tématu Vytvoření a zřízení zařízení IoT Edge v Linuxu pomocí symetrických klíčů.

Ruční zřizování pomocí symetrického klíče

[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

Další informace o načítání informací o zřizování najdete v tématu Vytvoření a zřízení zařízení IoT Edge v Linuxu pomocí symetrických klíčů.

Ruční zřizování pomocí certifikátu X.509

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

[provisioning.authentication]
method = "x509"

Další informace o zřizování pomocí certifikátů X.509 najdete v tématu Vytvoření a zřízení zařízení IoT Edge v Linuxu pomocí certifikátů X.509.

Zřizování DPS pomocí symetrického klíče

[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" }    

Další informace o zřizování DPS pomocí symetrického klíče najdete v tématu Vytváření a zřizování zařízení IoT Edge ve velkém měřítku v Linuxu pomocí symetrického klíče.

Zřizování DPS s certifikáty X.509

[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

(Volitelné) Povolení automatického prodlužování platnosti certifikátu ID zařízení

Autorenewal vyžaduje známou metodu vystavování certifikátů. Nastavte metodu na hodnotu nebo estlocal_ca.

Důležité

Povolte autorenewal pouze v případě, že je toto zařízení nakonfigurované pro registraci DPS založenou na certifikační autoritě. Použití autorenewalu pro jednotlivou registraci způsobí, že zařízení nemůže znovu vytvořit.

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

Další informace o zřizování DPS pomocí certifikátů X.509 najdete v tématu Vytváření a zřizování zařízení IoT Edge ve velkém měřítku v Linuxu pomocí certifikátů X.509.

Zřizování DPS pomocí čipu TPM (Trusted Platform Module)

[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"

Pokud používáte zřizování DPS s čipem TPM a vyžadujete vlastní konfiguraci, přečtěte si část TPM .

Další informace najdete v tématu Vytváření a zřizování zařízení IoT Edge ve velkém měřítku pomocí čipu TPM v Linuxu.

Chování časového limitu cloudu a opakování

Tato nastavení řídí vypršení časového limitu a opakování pro cloudové operace, jako je komunikace se službou Device Provisioning Service (DPS) během zřizování nebo IoT Hubu pro vytváření identit modulů.

Parametr cloud_timeout_sec je konečný termín v sekundách pro síťový požadavek na cloudové služby. Například požadavek HTTP. Odpověď z cloudové služby musí být přijata před tímto termínem nebo požadavek selže jako časový limit.

Parametr cloud_retries určuje, kolikrát se může požadavek opakovat po prvním pokusu. Klient vždy odešle alespoň jednou, takže hodnota je počet opakovaných pokusů po prvním pokusu se nezdaří. Například znamená, cloud_retries = 2 že klient provede celkem tři pokusy.

cloud_timeout_sec = 10
cloud_retries = 1

Vystavování certifikátů

Pokud jste nakonfigurovali dynamicky vydané certifikáty, zvolte odpovídající metodu vystavení a nahraďte ukázkové hodnoty vlastními hodnotami.

Vystavování certifikátů prostřednictvím EST

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

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

Certifikát EST ID už na zařízení

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 ID cert požadovaný prostřednictvím certifikátu EST bootstrap ID

Ověřování pomocí klientského certifikátu TLS, který se používá jednou k vytvoření počátečního certifikátu ID EST. Po prvním vystavení certifikátu se identity_cert automaticky vytvoří a identity_pk použije pro budoucí ověřování a obnovení. Běžný název subjektu (CN) vygenerovaného certifikátu ID EST je vždy stejný jako nakonfigurované ID zařízení v části zřizování. Tyto soubory musí být čitelné uživateli aziotcs a aziotks, v uvedeném pořadí.

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"

Vystavování certifikátů prostřednictvím místní certifikační autority

[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 (Trusted Platform Module)

Pokud potřebujete speciální konfiguraci čipu TPM při použití zřizování TPM DPS, použijte tato nastavení TPM.

Přijatelné řetězce zavaděče TCTI naleznete v části 3.5 specifikace rozhraní API TCG TSS 2.0 TPM Command Transmission Interface (TCTI).

Nastavení prázdného řetězce způsobí, že knihovna zavaděče TCTI zkusí načíst předdefinovanou sadu modulů TCTI v pořadí.

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

Index TPM zachová ověřovací klíč DPS. Index se bere jako posun od základní adresy trvalých objektů, jako 0x81000000 je například a musí být v rozsahu od 0x00_00_00 do 0x7F_FF_FF. Výchozí hodnota je 0x00_01_00.

auth_key_index = "0x00_01_00"

V případě potřeby použijte hodnoty autorizace pro hierarchie doporučení a vlastníka. Ve výchozím nastavení jsou tyto hodnoty prázdné řetězce.

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

PKCS#11

Pokud jste použili nějaké identifikátory URI PKCS#11, použijte následující parametry a nahraďte hodnoty konfigurací PKCS#11.

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

Výchozí agent Edge

Při prvním spuštění IoT Edge se spustí výchozí modul agenta Edge. Pokud potřebujete přepsat parametry zadané do výchozího modulu agenta Edge, použijte tuto část a nahraďte hodnoty vlastními.

Poznámka:

Parametr agent.config.createOptions je určen jako vložená tabulka TOML. Tento formát vypadá jako JSON, ale není to JSON. Další informace najdete v tématu Vložená tabulka dokumentace TOML verze 1.0.0.

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

[agent.config]
image = "mcr.microsoft.com/azureiotedge-agent:1.5"
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"

Správa démonů a koncové body rozhraní API pro úlohy

Pokud potřebujete přepsat koncové body rozhraní API pro správu a úlohy, použijte tuto část a nahraďte hodnoty vlastními.

[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"

Watchdog agenta Edge

Pokud potřebujete přepsat výchozí nastavení watchdogu agenta Edge, použijte tuto část a nahraďte hodnoty vlastními.

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

Certifikát certifikační autority Edge

Pokud máte vlastní certifikát certifikační autority Edge, který vydává všechny certifikáty modulů, použijte jeden z těchto oddílů a nahraďte hodnoty vlastními.

Certifikát certifikační autority Edge načtený ze souboru

[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

Certifikát certifikační autority Edge vystavený přes EST

[edge_ca]
method = "est"

Další informace o použití serveru EST najdete v tématu Kurz: Konfigurace registrace přes zabezpečený transportní server pro Azure IoT Edge.

Volitelná konfigurace EST pro vystavování certifikátu certifikační autority Edge

Pokud není nastavená, použijí se výchozí hodnoty v souboru [cert_issuance.est].

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

username = "estuser"
password = "estpwd"

Certifikát EST ID už na zařízení

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 ID cert požadovaný prostřednictvím certifikátu EST bootstrap ID

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

Certifikát certifikační autority Edge vydaný z místního certifikátu certifikační autority

Vyžaduje nastavení [cert_issuance.local_ca].

[edge_ca]
method = "local_ca"

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

Certifikáty rychlého startu certifikační autority edge

Pokud nemáte vlastní certifikát certifikační autority Edge používaný k vydávání všech certifikátů modulu, použijte tuto část a nastavte počet dnů po dobu životnosti automaticky generovaného certifikátu certifikační autority Edge podepsaného svým držitelem. Výchozí hodnota vypršení platnosti je 90 dnů.

Upozornění

Toto nastavení se nedoporučuje pro produkční využití. V oddílech certifikátů certifikační autority Edge nakonfigurujte vlastní certifikát certifikační autority Edge.

[edge_ca]
auto_generated_edge_ca_expiry_days = 90

Autorenewal certifikátu certifikační autority Edge

Toto nastavení spravuje autorenewal certifikátu certifikační autority Edge. Autorenewal se použije, když je certifikační autorita Edge nakonfigurovaná jako rychlý start nebo když má certifikační autorita Edge sadu vystavování method . Certifikáty certifikační autority Edge načtené ze souborů se obecně nedají automaticky obnovit, protože modul runtime Edge nemá dostatek informací k jejich obnovení.

Důležité

Obnovení certifikační autority Edge vyžaduje, aby se znovu vygenerovaly všechny certifikáty serveru vydané danou certifikační autoritou. Tato regenerace se provádí restartováním všech modulů. Dobu prodloužení platnosti certifikační autority Edge není možné zaručit. Pokud jsou náhodné restartování modulu pro váš případ použití nepřijatelné, zakažte autorenewal.

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

Uvolňování paměti obrázku

Pokud potřebujete přepsat výchozí konfiguraci uvolňování paměti image, použijte tuto část a nahraďte hodnoty v této části vlastními.

Parametr Popis
enabled Spustí uvolňování paměti image.
cleanup_recurrence Jak často chcete spustit uvolňování paměti image
image_age_cleanup_threshold Věk nepoužívaných obrázků. Obrázky starší než prahová hodnota se odeberou.
cleanup_time 24hodinový formát HH:MM. Při spuštění úlohy vyčištění
[image_garbage_collection]
enabled = true
cleanup_recurrence = "1d"
image_age_cleanup_threshold = "7d"
cleanup_time = "00:00"

Modul runtime Moby

Pokud potřebujete přepsat výchozí konfiguraci modulu runtime Moby, použijte tuto část a nahraďte hodnoty vlastními.

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