AWS IoT Greengrass Version 1 は、2023 年 6 月 30 日に延長ライフフェーズに入りました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日以降、 AWS IoT Greengrass V1 は機能、機能強化、バグ修正、またはセキュリティパッチを提供する更新をリリースしません。で実行されるデバイスは中断 AWS IoT Greengrass V1 されず、引き続き運用され、クラウドに接続されます。への移行 AWS IoT Greengrass Version 2を強くお勧めします。これにより、重要な新機能が追加され、追加のプラットフォーム がサポートされます。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS IoT Greengrass のセキュリティに関するベストプラクティス
このトピックでは、AWS IoT Greengrass のセキュリティのベストプラクティスについて説明します。
最小限のアクセス許可を付与する
IAM ロールの最小限のアクセス許可セットを使用して、最小特権の原則に従います。IAM ポリシーの Action
プロパティおよび Resource
プロパティに対する *
ワイルドカードの使用を制限します。代わりに、可能な場合はアクションとリソースの有限セットを宣言します。最小特権およびその他のポリシーのベストプラクティスの詳細については、「ポリシーのベストプラクティス」を参照してください。
最小特権のベストプラクティスは、Greengrass コアおよびクライアントデバイスにアタッチする AWS IoT ポリシーにも適用されます。
Lambda 関数で認証情報をハードコードしない
ユーザー定義の Lambda 関数で認証情報をハードコードしないでください。認証情報をより適切に保護するには:
AWS のサービスを操作するには、Greengrass グループロールで特定のアクションとリソースに対するアクセス許可を定義します。
ローカルシークレット を使用して認証情報を保存します。または、関数が AWS SDK を使用する場合は、デフォルトの認証情報プロバイダチェーンの認証情報を使用します。
機密情報を記録しない
認証情報やその他の個人を特定できる情報 (PII) のログを記録しないようにしてください。コアデバイスのローカルログへのアクセスにはルート権限が必要であり、 CloudWatch ログへのアクセスには IAM 権限が必要ですが、次の保護を実装することをお勧めします。
MQTT トピックパスに機密情報を使用しないでください。
AWS IoT Core レジストリのデバイス (モノ) 名、種類、属性に機密情報を使用しないでください。
ユーザー定義 Lambda 関数に機密情報を記録しないでください。
Greengrass リソースの名前と ID に機密情報を使用しないでください。
Connector
コア
デバイス
関数
グループ
Loggers
リソース (ローカル、Machine Learning、シークレット)
サブスクリプション
ターゲットを絞ったサブスクリプションの作成
サブスクリプションは、サービス、デバイス、および Lambda 関数間でメッセージを交換する方法を定義することによって、Greengrass グループの情報フローを制御します。アプリケーションが意図したことだけを実行できるようにするには、サブスクリプションでパブリッシャーが特定のトピックにのみメッセージを送信できるようにし、サブスクライバーがその機能に必要なトピックからのみメッセージを受信するように制限する必要があります。
デバイスのクロックを同期させる
デバイスの時刻を正確に保つことが重要です。X.509 証明書には有効期限の日時があります。デバイスのクロックは、サーバー証明書が現在も有効であることを確認するために使用されます。時間の経過とともにデバイスのクロックがドリフトしたり、バッテリが放電したりする可能性があります。
詳細については、「AWS IoT Core デベロッパーガイド」の「デバイスのクロックを同期化させる」を参照してください。
Greengrass コアを使用したデバイス認証の管理
クライアントデバイスは、FreeRTOS を実行、もしくは AWS IoT Device SDK または AWS IoT Greengrass Discovery API を使用して、同じ Greengrass グループ内のコアとの接続と認証に使用される検出情報を取得できます。検出情報には、以下が含まれます。
クライアントデバイスと同じ Greengrass グループに属する Greengrass コアの接続情報。この情報には、コアデバイスの各エンドポイントのホストアドレスとポート番号が含まれます。
ローカル MQTT サーバー証明書の署名に使用されるグループ CA 証明書。クライアントデバイスは、グループ CA 証明書を使用して、コアによって提示される MQTT サーバー証明書を検証します。
次に、Greengrass コアとの相互認証を管理するためのクライアントデバイスのベストプラクティスを示します。これらのプラクティスは、コアデバイスが侵害された場合のリスクを軽減するのに役立ちます。
- 各接続のローカル MQTT サーバー証明書を検証します。
-
クライアントデバイスは、コアとの接続を確立するたびに、コアによって提示される MQTT サーバー証明書を検証する必要があります。この検証は、コアデバイスとクライアントデバイス間の相互認証のクライアントデバイス側です。クライアントデバイスは失敗を検出し、接続を終了できる必要があります。
- 検出情報をハードコードしないでください。
-
コアが静的 IP アドレスを使用している場合でも、クライアントデバイスは検出オペレーションに依存してコア接続情報とグループ CA 証明書を取得する必要があります。クライアントデバイスがこの検出情報をハードコードすることはできません。
- 検出情報を定期的に更新します。
-
クライアントデバイスは定期的に検出を実行して、コア接続情報とグループ CA 証明書を更新する必要があります。コアとの接続を確立する前に、クライアントデバイスでこの情報を更新することをお勧めします。検出オペレーションの時間を短くすると、潜在的なエクスポージャー時間が最小限に抑えられるため、クライアントデバイスを定期的に切断して再接続して、更新をトリガーすることをお勧めします。
Greengrass コアデバイスの制御が失われた場合に、クライアントデバイスがコアにデータを送信しないようにするには、以下を実行します。
-
Greengrass グループから Greengrass コアを削除します。
-
グループ CA 証明書をローテーションします。AWS IoT コンソールでは、グループの [設定] ページで CA 証明書をローテーションできます。AWS IoT Greengrass API では、 CreateGroupCertificateAuthorityアクションを使用できます。
また、コアデバイスのハードドライブが盗難にあう危険がある場合は、フルディスク暗号化の使用をお勧めします。
詳細については、「AWS IoT Greengrass のデバイス認証と認可」を参照してください。
以下も参照してください。
「AWS IoT デベロッパーガイド」の「AWS IoT Core でのセキュリティのベストプラクティス」
「AWS のモノのインターネット - 公式ブログ」に掲載の「産業における IoT ソリューションにおける 10 のセキュリティゴールデンルール
」