IoT Central のデバイス認証の概念
この記事では、Azure IoT Central アプリケーションに対してデバイスを認証する方法について説明します。 接続プロセス全体の詳細については、デバイスの接続に関する記事を参照してください。
IoT Central アプリケーションでのデバイスの認証には、"Shared Access Signature (SAS) トークン" または "X.509 証明書" を使用します。 運用環境では、X.509 証明書はお勧めしません。
IoT Central アプリケーションのデバイス認証オプションの管理には、"登録グループ" を使用します。
この記事では、次のデバイス認証オプションについて説明します。
これらの各認証オプションでは、各デバイスが一意のデバイス ID を持っていることが必要になります。 デバイス ID は、IoT Central アプリケーションでデバイスを管理するために使用するデバイスの一意識別子です。
X.509 登録グループ
運用環境では、X.509 証明書を使用することが、IoT Central に対して推奨されるデバイス認証メカニズムです。 詳細については、「X.509 CA 証明書を使用したデバイス認証」をご覧ください。
X.509 登録グループには、ルートまたは中間の X.509 証明書が含まれています。 デバイスは、ルートまたは中間の証明書から派生した有効なリーフ証明書がある場合に認証を行なえます。
X.509 証明書を使用してデバイスをアプリケーションに接続するには、次のようにします。
- 証明書 (X.509) 構成証明の種類を使用する登録グループを作成します。
- 登録グループで、中間またはルート X.509 証明書を追加して検証します。
- 登録グループのルート証明書または中間証明書からリーフ証明書を生成します。 アプリケーションへの接続時に使用できるように、デバイスにリーフ証明書をインストールします。
各登録グループでは、一意の X.509 証明書を使用する必要があります。 IoT Central では、複数の登録グループ間で同じ X.509 証明書を使用することはできません。
詳細については、「X.509 証明書を使用してデバイスを接続する方法」を参照してください。
テスト目的のみ
運用環境では、利用している証明書プロバイダーからの証明書を使用してください。 テストの場合にのみ、次のユーティリティを使用して、ルート証明書、中間証明書、およびデバイス証明書を生成できます。
- Azure IoT Device Provisioning Device SDK 用ツール: X.509 の証明書とキーの生成および検証に使用できる一連の Node.js ツールです。
- サンプルとチュートリアルに使用するテスト CA 証明書の管理: 次の作業を目的とした、一連の PowerShell スクリプトと Bash スクリプトです。
- 証明書チェーンを作成します。
- IoT Central アプリケーションにアップロードする .cer ファイルとして証明書を保存します。
- IoT Central アプリケーションからの確認コードを使用して検証証明書を生成します。
- デバイス ID をツールへのパラメーターとして使用して、デバイスのリーフ証明書を作成します。
SAS 登録グループ
SAS 登録グループには、グループ レベルの SAS キーが含まれています。 デバイスは、グループ レベルの SAS キーから派生した有効な SAS トークンがある場合に認証を行なえます。
デバイス SAS トークンがあるデバイスをアプリケーションに接続するには、次のようにします。
Shared Access Signature (SAS) 構成証明の種類を使用する登録グループを作成します。
登録グループからグループのプライマリ キーまたはセカンダリ キーをコピーします。
Azure CLI を使用してグループ キーからデバイス トークンを生成します。
az iot central device compute-device-key --primary-key <enrollment group primary key> --device-id <device ID>
ヒント
IoT Central アプリケーションに接続する各デバイスは、一意のデバイス ID を持っている必要があります。 前のコマンドでは、デバイスごとに一意のトークンが生成されます。
生成したデバイス キーは、デバイスが IoT Central アプリケーションに接続するときに使用します。
Note
登録グループ内の既存の SAS キーを使用するには、[キーの自動生成] のトグルを無効にし、SAS キーを手動で入力します。
既定の SAS-IoT-Devices 登録グループを使用する場合、IoT Central によって個別のデバイス キーが自動生成されます。 これらのキーにアクセスするには、デバイス詳細ページで [接続] を選択します。 このページには、デバイス コードで使用する [ID スコープ]、[デバイス ID]、[主キー]、[セカンダリ キー] が表示されます。 このページには、同じデータを含む QR コードも表示しています。
個別登録
通常、デバイスは、登録グループの X.509 証明書または SAS キーから派生した資格情報を使用して接続します。 ただし、デバイスがそれぞれ独自の資格情報を持っている場合は、個々の登録を使用できます。 個別の登録は単一のデバイス用エントリーであり、デバイスの接続を許可します。 個別登録では、構成証明メカニズムとして X.509 リーフ証明書または (実際のトラステッド プラットフォーム モジュールまたは仮想トラステッド プラットフォーム モジュールの) SAS トークンを使用できます。 詳細については、DPS の個別登録に関するセクションを参照してください。
Note
デバイスの個別登録を作成すると、既定の登録グループ オプションよりもそちらが IoT Central アプリケーションで優先されます。
個々の登録を作成する
IoT Central では、個別登録に関して次の構成証明メカニズムがサポートされます。
対称キーの構成証明: 対称キーの構成証明は、DPS インスタンスを使用したデバイス認証のための簡素なアプローチです。 対称キーを使用する個別登録を作成するには、デバイスの [デバイス接続] ページを開き、認証の種類として [個別の登録] を、認証方法として [Shared Access Signature (SAS)] を選択します。 Base64 でエンコードされたプライマリ キーとセカンダリ キーを入力し、変更を保存します。 ID スコープ、デバイス ID、キー (プライマリまたはセカンダリ) を使用してデバイスを接続します。
ヒント
テストでは、OpenSSL を使用して Base64 エンコードされたキーを生成できます (
openssl rand -base64 64
)。X.509 証明書: X.509 証明書を使用する個別登録を作成するには、[デバイス接続] ページを開き、認証の種類として [個別の登録] を、認証方法として [証明書 (X.509)] を選択します。 個別登録エントリで使用するデバイス証明書には、発行者とサブジェクト CN をデバイス ID に設定しなければならないという要件があります。
ヒント
テストでは、Azure IoT Device Provisioning Device SDK for Node.js 用ツールを使用して自己署名証明書を生成できます (
node create_test_cert.js device "mytestdevice"
)。トラステッド プラットフォーム モジュール (TPM) の構成証明: TPM は、ハードウェア セキュリティ モジュールの一種です。 TPM を使用することが、デバイスを接続する最も安全な方法の 1 つとなっています。 この記事では、ディスクリート TPM、ファームウェア TPM、または統合された TPM を使用していると仮定します。 ソフトウェアでエミュレートされた TPM はプロトタイプの作成やテストには適していますが、ディスクリート TPM、ファームウェア TPM、または統合された TPM と同じレベルのセキュリティを提供することはできません。 運用環境ではソフトウェア TPM を使用しないでください。 TPM を使用する個別登録を作成するには、[デバイス接続] ページを開き、認証の種類として [個別の登録] を、認証方法として [TPM] を選択します。 TPM 保証キーを入力し、デバイスの接続情報を保存します。
デバイスを自動的に登録する
このシナリオでは、アプリケーション内で事前登録なしで接続する手段も用意されており、そのようなデバイスを OEM で大量に製造できます。 OEM が適切なデバイス資格情報を生成し、デバイスを工場で構成することになります。
X.509 証明書を使用するデバイスを自動的に登録するには、次のようにします。
X.509 登録グループに追加したルート証明書または中間証明書を使用して、デバイスのリーフ証明書を生成します。 デバイス ID をリーフ証明書の
CNAME
として使用してください。 デバイス ID には、文字、数字、および-
文字を含めることができます。OEM は、デバイス ID、生成された X.509 リーフ証明書、アプリケーションの ID スコープの値を使用して、各デバイスをフラッシュします。 デバイスコードも、実装するデバイス モデルのモデル ID を送信する必要があります。
デバイスの電源をオンにすると、そのデバイスはまず DPS に接続して、IoT Central の接続情報を取得します。
デバイスは、DPS からの情報を使用して、IoT Central アプリケーションに接続し、登録します。
IoT Central アプリケーションでは、デバイスから送られたモデル ID を使って、登録されているデバイスをデバイス テンプレートに割り当てます。
SAS トークンを使用するデバイスを自動的に登録するには、次のようにします。
SAS-IoT-Devices 登録グループからグループ プライマリ キーをコピーします。
az iot central device compute-device-key
コマンドを使用してデバイスの SAS キーを生成します。 前の手順で得たグループ プライマリ キーを使用します。 デバイス ID には、文字、数字、および-
文字を含めることができます。az iot central device compute-device-key --primary-key <enrollment group primary key> --device-id <device ID>
デバイス ID、生成されたデバイス SAS キー、アプリケーションの ID スコープの値を使用して、OEM が各デバイスをフラッシュします。 デバイスコードも、実装するデバイス モデルのモデル ID を送信する必要があります。
デバイスの電源をオンにすると、そのデバイスはまず DPS に接続して、IoT Central の登録情報を取得します。
デバイスは、DPS からの情報を使用して、IoT Central アプリケーションに接続し、登録します。
IoT Central アプリケーションでは、デバイスから送られたモデル ID を使って、登録されているデバイスをデバイス テンプレートに割り当てます。
次のステップ
推奨される次のステップは以下のとおりです。
- デバイス開発のベスト プラクティスを確認します。
- 「チュートリアル: クライアント アプリケーションを作成して Azure IoT Central アプリケーションに接続する」で、SAS トークンの使用方法に関するサンプル コードをレビューする
- IoT Central アプリケーション用の Node.js デバイス SDK を使用して、x.509 証明書を使用するデバイスを接続する方法を確認する
- Azure CLI を使用してデバイスの接続性を監視する方法を確認する
- Azure IoT Edge デバイスと Azure IoT Central について確認する