Azure Sphere をセキュリティで保護する方法

完了

このユニットでは、Azure Sphere セキュリティについて学習します。

既定では、Azure Sphere のアプリケーションはセキュリティで保護されています。 アプリケーションに機能を許可する必要があります。 機能の許可は、Azure Sphere のセキュリティのために重要であり、最小限の特権の原則とも呼ばれます。 Azure Sphere アプリケーションの正常な実行のために必要な機能のみを許可する必要があり、それ以上は許可しません。

アプリケーション機能には、どのハードウェアにアクセスできるか、どのネットワーク エンドポイントを呼び出すことができるか、どのコア間通信が許可されるかが含まれます。

IoT Central ネットワーク エンドポイント

アプリケーションで使用するすべてのネットワーク エンドポイントを宣言する必要があります。 セキュリティ機能として、アプリケーション マニフェストで宣言されていないエンドポイントにアクセスしようとすると、アプリケーションは、接続しようとしたときにエラーになります。 このセキュリティは、デバイスが再起動されるまで変更できないネットワーク ファイアウォールとして実装されます。

IoT Central に接続するときは、IoT Central アプリケーションのエンドポイントだけでなく、グローバルなデバイス プロビジョニング サービス エンドポイントを宣言する必要があります。 そうしないと、Azure Sphere アプリケーションから IoT Central に接続できなくなります。

ネットワーク エンドポイント機能

ネットワーク エンドポイントは、アプリケーションの app_manifest.json ファイルの AllowedConnections セクションに宣言されています。

{
    ...
    "AllowedConnections": [
      "global.azure-devices-provisioning.net",
      "your-iot-central-network-endpoints"
    ],
    ...
}

ハードウェアへのアクセス

Azure Sphere アプリケーションは既定でセキュリティ保護されているため、アプリケーションが必要とするハードウェア周辺機器へのアクセスを宣言する必要があります。 アプリケーションが必要とするハードウェアを宣言しない場合、アプリケーションがそのハードウェアにアクセスしようとすると失敗します。 ハードウェアへのセキュリティ アクセスは、シリコン ファイアウォールとしてハードウェアに実装されます。 追加のセキュリティ層として、シリコン ファイアウォールは "固定" であり、デバイスが再起動されるまでシリコン ファイアウォールの設定は維持されます。

ハードウェア機能

ハードウェアは、アプリケーションの app_manifest.json ファイルの Capabilities セクションに宣言されています。

{
  ...
  "Capabilities": {
    "Gpio": [
      "$BUTTON_A",
      "$NETWORK_CONNECTED_LED",
      "$ALERT_LED"
    ],
    "I2cMaster": [
      "$I2cMaster2"
    ],
  ...
  },
  ...
}

ハードウェアの定義

Azure Sphere のハードウェアは複数のベンダーから提供されており、基になるチップの機能の公開方法はベンダーごとに異なる場合があります。 Azure Sphere アプリケーションでは、ハードウェア定義ファイルを使用してハードウェアの依存関係が管理されます。 詳細については、ターゲット ハードウェアの依存関係の管理に関する記事を参照してください。

このラーニング モジュール用のラボには、AVNET と SEEED Studio の Azure Sphere 開発者ボード用のハードウェア定義ファイルのセットが含まれています。 azure_sphere_learning_path ハードウェア定義ファイルは、各ラボの main.c に含まれています。

#include "hw/azure_sphere_learning_path.h"

ネットワーク エンドポイントを宣言する方法については、次の演習で学習します。