セキュリティの準備 - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

セキュリティの準備

このセクションでは、 AWS IoT Device Management ソフトウェアパッケージカタログの主なセキュリティ要件について説明します。

リソースベースの認証

Software Package Catalog では、リソースベースの認可を使用して、フリートのソフトウェアを更新する際のセキュリティを強化します。つまり、ソフトウェアパッケージとパッケージバージョンに対して create、、delete、、および listアクションを実行する権限を付与し、 Resourcesセクションでデプロイする特定のソフトウェアパッケージとパッケージバージョンを参照する AWS Identity and Access Management (IAM) read updateポリシーを作成する必要があります。予約済みの名前付きシャドウを更新するには、これらの権限も必要です。各エンティティに Amazon リソースネーム (ARN) を含めることで、ソフトウェアパッケージとパッケージバージョンを参照します。

注記

ポリシーがパッケージバージョンAPI呼び出し (CreatePackageVersion、、 などDeletePackageVersion) の権限を付与する場合はUpdatePackageVersion、ソフトウェアパッケージとパッケージバージョンの両方をARNsポリシーに含める必要があります。ポリシーがソフトウェアパッケージAPI呼び出し (CreatePackage、、 などDeletePackage) の権限を付与する場合はUpdatePackage、ポリシーARNにソフトウェアパッケージのみを含める必要があります。

ソフトウェアパッケージとパッケージバージョンをARNs次のように構造化します。

  • ソフトウェアパッケージ: arn:aws:iot:<region>:<accountID>:package/<packageName>/package

  • パッケージバージョン: arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>

注記

このポリシーに含めることができる、その他の関連する権利もあります。例えば、job、、 thinggroupARNに を含めることができますjobtemplate。ポリシーオプションの詳細と完全なリストについては、「 AWS IoT ジョブによるユーザーとデバイスの保護」を参照してください。

例えば、次のような名前のソフトウェアパッケージとパッケージバージョンがあるとします。

  • AWS IoT モノ: myThing

  • パッケージ名: samplePackage

  • バージョン 1.0.0

ポリシーは以下の例のようになります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:createPackage", "iot:createPackageVersion", "iot:updatePackage", "iot:updatePackageVersion" ], "Resource": [ "arn:aws:iot:us-east-1:111122223333:package/samplePackage", "arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/1.0.0" ] }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow" ], "Resource": "arn:aws:iot:us-east-1:111122223333:thing/myThing/$package" } ] }

AWS IoT パッケージバージョンをデプロイするジョブ権限

セキュリティ上の理由から、パッケージとパッケージバージョンをデプロイする権限を付与し、デプロイが許可されている特定のパッケージとパッケージバージョンに名前を付けることが重要です。これを行うには、パッケージバージョンでジョブをデプロイするアクセス許可を付与するIAMロールとポリシーを作成します。ポリシーでは、リソースとしてターゲットパッケージのバージョンを指定する必要があります。

IAM ポリシー

IAM ポリシーは、 Resourceセクションで名前が付けられたパッケージとバージョンを含むジョブを作成する権利を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:CreateJob", "iot:CreateJobTemplate" ], "Resource":[ "arn:aws:iot:*:111122223333:job/<jobId>", "arn:aws:iot:*:111122223333:thing/<thingName>/$package", "arn:aws:iot:*:111122223333:thinggroup/<thingGroupName>", "arn:aws:iot:*:111122223333:jobtemplate/<jobTemplateName>", "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>" ] } ] }
注記

ソフトウェアパッケージとパッケージバージョンをアンインストールするジョブをデプロイする場合は、$null次のようなパッケージバージョンARNが である を承認する必要があります。

arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null

AWS IoT 予約された名前付きシャドウを更新するジョブ権限

ジョブが正常に完了したときに、ジョブがモノの予約名シャドウを更新できるようにするには、IAMロールとポリシーを作成する必要があります。 AWS IoT コンソールでこれを行うには 2 つの方法があります。1 つ目は、コンソールでソフトウェアパッケージを作成するときです。[パッケージ管理の依存関係を有効にする] ダイアログボックスが表示されたら、既存のロールを使用するか、新しいロールを作成するかを選択できます。または、 AWS IoT コンソールで [設定] を選択し、[インデックス作成の管理] を選択し、次に [デバイスパッケージとバージョンのインデックス作成の管理] を選択します。

注記

AWS IoT ジョブが正常に完了したときに予約された名前付きシャドウをジョブサービスに更新させることを選択した場合、API呼び出しは Device Shadow およびレジストリオペレーションにカウントされ、コストが発生する可能性があります。詳細については、AWS IoT Core の料金を参照してください。

[ロールを作成] オプションを使用すると、生成されるロールの名前は aws-iot-role-update-shadows で始まり、次のポリシーが含まれています。

ロールのセットアップ

アクセス許可

アクセス許可ポリシーにより、モノのシャドウへのクエリと更新を行う権限が付与されます。リソースの $packageパラメータは、予約された名前付きシャドウをARNターゲットにします。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:DescribeEndpoint", "Resource": "" }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow" ], "Resource": [ "arn:aws:iot:<regionCode>:111122223333:thing/<thingName>/$package" ] } ] }
信頼関係

アクセス許可ポリシーに加えて、エンティティがロールを引き継いで予約済みの名前付きシャドウを更新できるように、ロールと AWS IoT Core の信頼関係も必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

ユーザーポリシーの設定

iam:PassRole permission

最後に、 UpdatePackageConfiguration API オペレーションを呼び出す AWS IoT Core ときに ロールを に渡すアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "iot:UpdatePackageConfiguration" ], "Resource": "arn:aws:iam::111122223333:role/<roleName>" } ] }

AWS IoT Amazon S3 からダウンロードするジョブのアクセス許可

ジョブドキュメントは Amazon S3 に保存されます。 AWS IoT Jobs 経由でディスパッチするときに、このファイルを参照します。ファイル () をダウンロードする権限を AWS IoT Jobs に提供する必要がありますs3:GetObject。また、Amazon S3 と Jobs の間に信頼関係を設定する必要があります。 AWS IoT これらのポリシーを作成する手順については、「ジョブの管理」の「署名付きURLs」を参照してください。 https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html

パッケージバージョンのソフトウェア部品表を更新するアクセス許可

Draft、、またはDeprecatedライフサイクル状態のパッケージバージョンのソフトウェア部品表を更新するには、Amazon S3 で新しいソフトウェア部品表を検索しPublished、 でパッケージバージョンを更新するための AWS Identity and Access Management ロールとポリシーが必要です AWS IoT Core。

まず、更新されたソフトウェア部品表をバージョニングされた Amazon S3 バケットに配置し、 sbomsパラメータを含む UpdatePackageVersionAPIオペレーションを呼び出します。次に、承認されたプリンシパルが作成したIAMロールを引き受け、Amazon S3 で更新されたソフトウェア部品表を見つけ、ソフトウェアパッケージカタログ AWS IoT Core の でパッケージ検証を更新します。

この更新を実行するには、次のポリシーが必要です。

ポリシー

  • 信頼ポリシー IAMロールを引き受ける承認されたプリンシパルとの信頼関係を確立し、Amazon S3 のバージョニングされたバケットから更新されたソフトウェア部品表を見つけ、 のパッケージバージョンを更新できるようにします AWS IoT Core。

    • { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    • { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  • アクセス許可ポリシー : ソフトウェア部品表がパッケージバージョン用に保存されている Amazon S3 バージョンバケットにアクセスし、 でパッケージバージョンを更新するポリシー AWS IoT Core。

    • { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1" ] } ] }
    • { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:UpdatePackageVersion" ], "Resource": [ "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>" ] } ] }
  • ロールのアクセス許可を渡す: UpdatePackageVersionAPIオペレーションを呼び出す AWS IoT Core ときにIAM、ロールを Amazon S3 に渡すアクセス許可を付与するポリシー。

    • { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "s3:GetObject" ], "arn:aws:s3:::awsexamplebucket1" } ] }
    • { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "iot:UpdatePackageVersion" ], "Resource": "arn:aws:iam::111122223333:role/<roleName>" } ] }
注記

Deleted ライフサイクル状態に移行したパッケージバージョンでは、ソフトウェア部品表を更新することはできません。

AWS サービスのIAMロールの作成の詳細については、AWS 「サービス にアクセス許可を委任するロールの作成」を参照してください。

Amazon S3 バケットの作成とオブジェクトのアップロードの詳細については、「バケットの作成」と「オブジェクトのアップロード」を参照してください。