メニュー
AWS Greengrass
開発者ガイド

AWS Greengrass のセキュリティ

AWS Greengrass は X.509 証明書、管理されたサブスクリプション、AWS IoT ポリシー、および IAM ポリシーとロールを使用して、Greengrass アプリケーションが安全であることを確認します。AWS Greengrass コア デバイスは、Greengrass クラウドサービスとやり取りするために、AWS IoT モノ、デバイス証明書、および AWS IoT ポリシーを必要とします。

これにより、AWS Greengrass コア デバイスは AWS IoT クラウドサービスに安全に接続できます。また、Greengrass クラウドサービスが設定情報、Lambda 関数、および管理されたサブスクリプションを AWS Greengrass コア デバイスにデプロイできるようにします。

AWS IoT デバイスは、Greengrass サービスに接続するために、AWS IoT モノ、デバイス証明書、および AWS IoT ポリシーを必要とします。これにより、AWS IoT デバイスは Greengrass Discovery Service を使用し、AWS Greengrass コア デバイスを見つけて検索できます。AWS IoT デバイスは、AWS IoT デバイスゲートウェイおよび AWS Greengrass コア デバイスへの接続に使用されたのと同じデバイス証明書を使用します。次の図は、AWS Greengrass セキュリティモデルのコンポーネントを示しています。

A - Greengrass サービスロール

AWS Greengrass が、AWS IoT および Lambda リソースにアクセスできるようにする、お客様が作成した IAM ロール。

B - コアデバイス証明書

AWS Greengrass コア を認証するために使用される X.509 証明書。

C - デバイス証明書

AWS IoT デバイスを認証するために使用される X.509 証明書。

D - グループロール

AWS Greengrass コア の Lambda 関数からクラウドへの呼び出し時に AWS Greengrass が引き受けるロール。

E - グループ CA

TLS 相互認証中に AWS Greengrass コア デバイスによって提供される証明書を検証するために AWS Greengrass デバイスによって使用されるルート CA 証明書。

Greengrass セキュリティの設定

Greengrass アプリケーションのセキュリティを設定するには:

  1. AWS Greengrass コア デバイスの AWS IoT モノを作成します。

  2. AWS Greengrass コア デバイスのキーペアとデバイス証明書を生成します。

  3. AWS IoT ポリシーを作成してデバイス証明書にアタッチします。証明書とポリシーにより、AWS Greengrass コア デバイスは AWS IoT および Greengrass クラウドサービスにアクセスできます。

  4. Greengrass サービスロールを作成します。この IAM ロールは、AWS Greengrass に Greengrass および AWS IoT リソースへのアクセス権限を付与します。サービスロールの作成は AWS アカウントごとに一度のみで済みます。

  5. (オプション) Greengrass グループロールを作成します。このロールは、AWS Greengrass コア で実行される Lambda 関数に、(クラウド内で) 他の AWS のサービスを呼び出すアクセス権限を付与します。これを、作成する各 Greengrass グループに対して行う必要があります。

  6. AWS Greengrass コア に接続するデバイスごとに、AWS IoT モノを作成します。

  7. AWS Greengrass コア に接続するデバイスごとに、デバイス証明書、キーペア、および AWS IoT ポリシーを作成します。

注記

既存の AWS IoT モノと証明書を使用することもできます。

デバイス接続のワークフロー

このセクションでは、AWS Greengrass クラウドサービスおよび AWS Greengrass コア デバイスにデバイスに接続する方法について説明します。

  • AWS Greengrass コア デバイスは、デバイス証明書、プライベートキー、および AWS IoT ルート CA 証明書を使用して Greengrass クラウドサービスに接続します。

  • AWS Greengrass コア デバイスは、Greengrass サービスからグループメンバーシップ情報をダウンロードします。

  • AWS Greengrass コア デバイスに対してデプロイが行われた場合に、デバイス証明書マネージャー (DCM) は AWS Greengrass コア デバイスに対して証明書管理を行います。

  • AWS IoT デバイスは、デバイス証明書、プライベートキー、および AWS IoT ルート CA を使用して Greengrass クラウドサービスに接続します。AWS IoT デバイスは、接続後に Greengrass Discovery Service を使用して AWS Greengrass コア デバイスの IP アドレスを見つけます。デバイスはグループのルート CA 証明書をダウンロードすることもできます。この証明書を使用して、Greengrass コアデバイスを認証できます。

  • AWS IoT デバイスは AWS Greengrass コア への接続を試み、そのデバイス証明書とクライアント ID を渡します。クライアント ID がデバイスのモノ名と一致し、証明書が有効である場合、接続が実行されます。それ以外の場合は、接続は終了します。

Greengrass メッセージングワークフロー

サブスクリプションテーブルを使用して、Greengrass 内 (AWS Greengrass コア デバイス、AWS IoT デバイス、および Lambda 関数間) でメッセージを交換する方法が定義されます。サブスクリプションテーブルの各エントリで、メッセージを送受信するソース、送信先、および MQTT トピックを指定します。メッセージを交換できるのは、ソース (メッセージの送信者)、ターゲット (メッセージの受信者)、および MQTT トピックを指定するサブスクリプションテーブルにエントリが存在する場合のみです。Subscription テーブルのエントリでは、ソースからターゲットに一方向でメッセージを渡すことを指定します。2 方向のメッセージの引き渡しを希望する場合は、方向ごとに 2 つのサブスクリプションテーブルエントリを作成します。

MQTT Core サーバー証明書のローテーション

MQTT コアサーバー証明書は、デフォルトでは 7 日で期限切れになります。有効期限は、7~30 日間の任意の値に設定できます。MQTT コアサーバー証明書の有効期限が切れた場合、証明書の検証はすべて失敗します。デバイスは失敗を検出し、接続を終了できる必要があります。既存の接続は影響を受けません。証明書の有効期限が切れると、AWS Greengrass コア デバイスは Greengrass クラウドサービスに接続し、新しい証明書の取得を試みます。接続に成功すると、AWS Greengrass コア デバイスは新しい MQTT コアサーバー証明書をダウンロードし、ローカル MQTT サービスを再起動します。この時点で、コアに接続されたすべての AWS IoT デバイスは切断されます。

AWS Greengrass コア が新しい MQTT コアサーバー証明書を取得しようとしたときにインターネット接続がない場合、Greengrass クラウドサービスが復元され、新しい MQTT コアサーバー証明書をダウンロードできるようになるまで、AWS IoT デバイスは AWS Greengrass コア に接続することができません。

AWS IoT デバイスがコアから切断された場合、しばらく待ってから、AWS Greengrass コア デバイスに再接続を試みる必要があります。