MQTT クライアント
この記事では、MQTT クライアントとクライアント グループの構成について説明します。
クライアント
クライアントには、MQTT メッセージを送受信するデバイスや車両などのデバイスまたはアプリケーションを指定できます。
たとえば、数百台のトラックやその他の出荷配送車両を持つフリート管理会社を考えてみましょう。 クラウド サービスとの間で MQTT メッセージを送受信することで、ルーティング、追跡、ドライバーの安全性、予測可能なメンテナンスの機能を向上させることができます。
このシナリオでは、気象情報、道路状況、地理的位置、エンジン性能、車両のその他の摩耗の側面などのさまざまなトピックに対して発行/サブスクライブするクライアントとして車両を構成できます。 また、車両をクライアントとして構成しながら、車両の種類、年、make > モデル、最大負荷容量などの属性のセットをクライアント メタデータに含めることもできます。
Note
- クライアント名は 1 ~ 128 文字の長さにできます。
- クライアント名には、英数字、ハイフン (-)、コロン (:)、ドット (.)、アンダースコア (_) を含めることができ、スペースは不可です。 大文字と小文字が区別され、名前空間ごとに一意である必要があります。
クライアント メタデータの主な用語
クライアント認証名: Azure Resource Manager の名前付け制約なしで、クライアントの一意識別子を指定できます。 これは必須フィールドであり、明示的に指定されていない場合は、既定で [クライアント名] に設定されます。
1 つの名前空間内で 2 つのクライアントが同じ認証名を持つことはできません。 クライアントの認証中は、大文字と小文字を区別しないものとしてクライアント認証名を扱います。
クライアントで構成したクライアント認証名の元の大文字と小文字の区別は保持されます。 クライアントの作成時に指定された元のクライアント認証名 (大文字と小文字を区別) は、ルーティング エンリッチメント、トピック空間の照合などに使用されます。
注意
- クライアント認証名には、制約のない 1 ~ 128 文字の長さの UTF-8 文字列を指定できます
- クライアント認証名では大文字と小文字が区別され、名前空間ごとに一意である必要があります (一意性を判定するときには大文字と小文字は無視されます)
クライアント証明書認証検証スキーム: 認証に CA 証明書を使用するために、次のいずれかのオプションを選択して、クライアント証明書内のクライアント ID の場所を指定できます。 クライアントがサービスへの接続を試みると、サービスがこの証明書フィールドからクライアント ID を検索し、クライアント認証名と照合してクライアントを認証します。
次の 5 つの証明書フィールドをサポートします。
- サブジェクトが認証名と一致する
- DNS が認証名と一致する
- URI が認証名と一致する
- IP が認証名と一致する
- メールアドレスが認証名と一致する
自己署名証明書を使用してクライアントを認証するときは、"サムプリントの一致" オプションを使用します。
注意
- clientCertificateAuthentication は常に必須で、validationScheme の有効な値が含まれている必要があります。
- authenticationName は必須ではありませんが、最初の作成要求の後、authenticatioName 値の既定値は ARM 名になり、更新できません。
- authenticationName を更新できません。
- validationScheme が ThumbprintMatch 以外の場合は、allowedThumbprints リストを指定できません。
- allowedThumbprints リストは、validationScheme が、少なくとも 1 つのサムプリントがある ThumbprintMatch の場合にのみ指定でき、指定する必要があります。
- allowedThumbprints が保持できるのは、最大 2 つのサムプリントのみです。
- 使用できる validationScheme 値は SubjectMatchesAuthenticationName、DnsMatchesAuthenticationName、UriMatchesAuthenticationName、IpMatchesAuthenticationName、EmailMatchesAuthenticationName、ThumbprintMatch です
- サムプリントを使用すると、複数のクライアント間で同じ証明書を再利用できます。 その他の種類の検証の場合は、認証名がクライアント証明書の選択したフィールドに存在する必要があります。
クライアント属性
クライアント属性は、クライアントに関する情報を提供するユーザー定義のキーと値のペアまたはタグのセットです。
これらのクライアント属性を使用して、クライアント グループを作成できます。 たとえば、種類がセミトレーラー トラックのすべての車両を 1 つのグループにグループ化し、種類がピックアップ トラックのすべての車両を別のものにグループ化できます。
これらの属性は、一連のクライアントをフィルター処理するためにクライアント グループ クエリで使用されます。 属性は、クライアントの物理的または機能的な特性を記述できます。 一般的な属性は、クライアントの "種類" です。
次に例を示します。
- 種類: 値には、"センサー" または "サーモスタット" または "車両" を指定できます
属性定義があるクライアントのサンプル スキーマを次に示します。
{
"id": "device123",
"attributes": {
"type": "home-sensors",
"sensors": ["motion", "noise", "light"]
}
}
クライアント属性を構成するときは、クライアントの発行 (サブスクライブ) 先のトピックを考慮してください。 トピックからクライアントにさかのぼって考えると、クライアント ロール間の共通点をより簡単に特定し、クライアント属性を定義してクライアントのグループ化を簡素化するのに役立ちます。
注意
- クライアント属性キーは、クライアントで一意である必要があります。 キーを繰り返すことはできません。
- クライアント属性値には
string
、integer
、またはarray of strings
の型を指定できます。 - 1 つのクライアントのクライアント属性の合計サイズは、常に 4 KB 未満である必要があります。
- クライアント属性名 (キー) には、英数字とアンダースコア (_) のみを含めることができます。
サンプル コントラクト
証明書チェーン ベースのクライアント認証の例
{
"properties": {
"authenticationName": "127.0.0.1",
"state": "Enabled",
"clientCertificateAuthentication": {
"validationScheme": "IpMatchesAuthenticationName"
},
"attributes": {
"room": "345",
"floor": 3,
"bldg": "17"
},
"description": "Description of the client"
}
}
自己署名証明書のサムプリント ベースのクライアント認証の例
{
"properties": {
"authenticationName": "abcd@domain.com-1",
"state": "Enabled",
"clientCertificateAuthentication": {
"validationScheme": "ThumbprintMatch",
"allowedThumbprints": ["primary", "secondary"]
},
"attributes": {
"room": "345",
"floor": "3",
"bldg": 17
},
"description": "Description of the client"
}
}
Azure portal の構成
次の手順を使用して、クライアントを作成します。
Azure portal でご使用の名前空間に移動します
[クライアント] で、[+ クライアント] を選択します。
クライアント証明書認証検証スキームを選択します。 クライアント認証の構成の詳細については、クライアント認証に関する記事を参照してください。
クライアント属性を追加します。
- [作成] を選択します。
Azure CLI の構成
次のコマンドを使用して、クライアントを作成/表示/削除します
クライアントの作成
az eventgrid namespace client create -g myRG --namespace-name myNS -n myClient
クライアントを取得する
az eventgrid namespace client show -g myRG --namespace-name myNS -n myClient
クライアントを削除する
az eventgrid namespace client delete -g myRG --namespace-name myNS -n myClient
次の手順
- クライアント認証について確認します