AWS IoT Greengrass のセキュリティに関するベストプラクティス - AWS IoT Greengrass

AWS IoT Greengrass のセキュリティに関するベストプラクティス

このトピックでは、AWS IoT Greengrass のセキュリティのベストプラクティスについて説明します。

最小限のアクセス許可を付与する

コンポーネントに対する最小特権の原則に従うため、コンポーネントを非特権ユーザーとして実行します。どうしても必要な場合を除いて、コンポーネントはルートとして実行しないでください。

IAM ロールの最小アクセス許可セットを使用します。IAM ポリシーの Action プロパティおよび Resource プロパティに対する * ワイルドカードの使用を制限します。代わりに、可能な場合はアクションとリソースの有限セットを宣言します。最小特権およびその他のポリシーのベストプラクティスの詳細については、「ポリシーのベストプラクティス」を参照してください。

最小特権のベストプラクティスは、Greengrass コアにアタッチする AWS IoT ポリシーにも適用されます。

Greengrass コンポーネントで認証情報をハードコードしない

ユーザー定義の Greengrass コンポーネントで認証情報をハードコードしないでください。認証情報をより適切に保護するには:

  • AWS サービスとやり取りするには、[Greengrass core device service role] (Greengrass コアデバイスのサービスロール)で、特定のアクションとリソースに対するアクセス許可を定義します。

  • [secret manager component] (シークレットマネージャーコンポーネント)を使用して認証情報を保存します。または、関数が AWS SDK を使用する場合は、デフォルトの認証情報プロバイダチェーンの認証情報を使用します。

機密情報を記録しない

認証情報やその他の個人を特定できる情報 (PII) のログを記録しないようにしてください。コアデバイスのローカルログへのアクセスにはルートアクセス許可が必要であり、CloudWatch Logs へのアクセスには IAM のアクセス許可が必要ですが、次の防止策を実施することをお勧めします。

  • MQTT トピックパスに機密情報を使用しないでください。

  • AWS IoT Core レジストリのデバイス (モノ) 名、種類、属性に機密情報を使用しないでください。

  • ユーザー定義の Greengrass コンポーネントまたは Lambda 関数に機密情報を記録しないでください。

  • Greengrass リソースの名前と ID に機密情報を使用しないでください。

    • コアデバイス

    • コンポーネント

    • デプロイ

    • Loggers

デバイスのクロックを同期させる

デバイスの時刻を正確に保つことが重要です。X.509 証明書には有効期限の日時があります。デバイスのクロックは、サーバー証明書が現在も有効であることを確認するために使用されます。時間の経過とともにデバイスのクロックがドリフトしたり、バッテリが放電したりする可能性があります。

詳細については、「AWS IoT Core デベロッパーガイド」の「[Keep your device's clock in sync] (デバイスのクロックを同期させる)」ベストプラクティスを参照してください。

暗号スイートの推奨事項

Greengrass はデフォルトで、デバイスで使用可能な最新の TLS Cipher Suites を選択します。デバイス上のレガシー暗号スイートの使用を無効にすることを検討してください。たとえば、CBC 暗号スイートなどです。

詳細については、「Java 暗号化設定」を参照してください。。

以下も参照してください。