翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
このセクションでは、AWS IoT Device Management Software Package Catalog の主なセキュリティ要件について説明します。
リソースベースの認証
Software Package Catalog では、リソースベースの認可を使用して、フリートのソフトウェアを更新する際のセキュリティを強化します。つまり、ソフトウェアパッケージとパッケージバージョンに対して、create
、read
、update
、delete
、list
のアクションを実行する権限を付与する AWS Identity and Access Management (IAM) ポリシーを作成し、Resources
セクションでデプロイする特定のソフトウェアパッケージとパッケージバージョンを参照する必要があります。予約済みの名前付きシャドウを更新するには、これらの権限も必要です。各エンティティに Amazon リソースネーム (ARN) を含めることで、ソフトウェアパッケージとパッケージバージョンを参照できます。
注記
パッケージバージョンの API コール (CreatePackageVersion, UpdatePackageVersion, DeletePackageVersion など) の権限をポリシーに付与する場合は、ソフトウェアパッケージとパッケージバージョン ARN の両方をポリシーに含める必要があります。ポリシーでソフトウェアパッケージ API コール (CreatePackage、UpdatePackage、DeletePackage など) の権限を付与する場合は、ソフトウェアパッケージ ARN のみをポリシーに含める必要があります。
ソフトウェアパッケージとパッケージバージョン ARN を次のように構成します。
ソフトウェアパッケージ:
arn:aws:iot:
<region>
:<accountID>
:package/<packageName>
/package
パッケージバージョン:
arn:aws:iot:
<region>
:<accountID>
:package/<packageName>
/version/<versionName>
注記
このポリシーに含めることができる、その他の関連する権利もあります。例えば、job
、thinggroup
、jobtemplate
に ARN を含めることができます。ポリシーオプションの詳細と一覧については、「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
で始まり、次のポリシーが含まれています。
ロールのセットアップ
- アクセス許可
-
アクセス許可ポリシーにより、モノのシャドウへのクエリと更新を行う権限が付与されます。リソース ARN の
$package
パラメータは、予約済みの名前付きシャドウを対象としています。{ "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 アクセス許可
-
最後に、 UpdatePackageConfiguration API オペレーションを呼び出すときに AWS IoT Core にロールを渡すアクセス許可が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "iot:UpdatePackageConfiguration" ], "Resource": "arn:aws:iam::
111122223333
:role/<roleName>
" } ] }
Amazon S3 からダウンロードする AWS IoT のジョブのアクセス許可
ジョブドキュメントは Amazon S3 に保存されます。AWS IoT ジョブ経由でディスパッチするときは、このファイルを参照します。ファイル (s3:GetObject
) をダウンロードする権限を AWS IoT ジョブに提供する必要があります。また、Amazon S3 と AWS IoT ジョブの間に信頼関係を設定する必要があります。これらのポリシーを作成する手順については、「ジョブを管理する」の「署名付き URL」を参照してください。
パッケージバージョンのソフトウェア部品表を更新するアクセス許可
Draft
、Published
または Deprecated
ライフサイクル状態のパッケージバージョンのソフトウェア部品表を更新するには、Amazon S3 で新しいソフトウェア部品表を検索し、 でパッケージバージョンを更新するための AWS Identity and Access Management ロールとポリシーが必要ですAWS IoT Core。
まず、更新されたソフトウェア部品表をバージョニングされた Amazon S3 バケットに配置し、sboms
パラメータを含む UpdatePackageVersion
API オペレーションを呼び出します。次に、承認されたプリンシパルが作成した IAM ロールを引き受け、Amazon S3 で更新されたソフトウェア部品表を検索し、Software Package Catalog の 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>
" ] } ] }
-
-
ロールのアクセス許可を渡す:
UpdatePackageVersion
API オペレーションを呼び出すときに IAM ロールを Amazon S3 と AWS IoT Core に渡すアクセス許可を付与するポリシー。-
{ "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 バケットの作成とそれへのオブジェクトのアップロードの詳細については、「バケットの作成」と「オブジェクトのアップロード」を参照してください。