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 暗号化設定
以下も参照してください。
-
「AWS IoT デベロッパーガイド」の「AWS IoT Core でのセキュリティのベストプラクティス」
-
「AWS のモノのインターネット - 公式ブログ」に掲載の「産業における IoT ソリューションにおける 10 のセキュリティゴールデンルール
」