

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

# セキュリティの準備
<a name="preparing-security"></a>

このセクションでは、 AWS IoT Device Management Software Package Catalog の主なセキュリティ要件について説明します。

## リソースベースの認証
<a name="resource-based-authorization"></a>

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

**注記**  
パッケージバージョンの API コール ([CreatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html), [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html), [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html) など) の権限をポリシーで付与するようにする場合は、ソフトウェアパッケージとパッケージバージョン ARN の*両方*をポリシーに含める必要があります。ポリシーでソフトウェアパッケージ API コール ([CreatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html)、[UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)、[DeletePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackage.html) など) の権限を付与する場合は、ソフトウェアパッケージ 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 「ジョブによるユーザーとデバイスの保護](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs-security.html)」を参照してください。

例えば、次のような名前のソフトウェアパッケージとパッケージバージョンがあるとします。
+ 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 パッケージバージョンをデプロイするためのジョブ権限
<a name="job-rights-deploy-versions"></a>

セキュリティ上の理由から、パッケージとパッケージバージョンをデプロイする権限を付与し、デプロイが許可されている特定のパッケージとパッケージバージョンに名前を付けることが重要です。そのためには、パッケージバージョンでジョブをデプロイするアクセス許可を付与する 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 予約済み名前付きシャドウを更新するジョブ権限
<a name="job-rights-update-reserved-named-shadow"></a>

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

**注記**  
 AWS IoT ジョブが正常に完了したときに予約された名前付きシャドウをジョブサービスで更新することを選択した場合、API コールは **Device Shadow およびレジストリオペレーション**にカウントされ、コストが発生する可能性があります。詳細については、[AWS IoT Core 料金表](https://aws.amazon.com/iot-core/pricing/)を参照してください。

**[ロールを作成]** オプションを使用すると、生成されるロールの名前は `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:us-east-1: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](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageConfiguration.html) 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 からダウンロードするジョブのアクセス許可
<a name="job-rights-download-job-document"></a>

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

## パッケージバージョンのソフトウェア部品表を更新するアクセス許可
<a name="job-rights-update-sbom"></a>

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

まず、更新されたソフトウェア部品表をバージョニングされた Amazon S3 バケットに配置し、`sboms` パラメータを含む `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` API オペレーションを呼び出します。次に、承認されたプリンシパルが作成した 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>"
                ]
            }
        ]
    }
    ```
+ **ロールのアクセス許可を渡す**: `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` API オペレーションを呼び出す AWS IoT Core ときに IAM ロールを Amazon S3 に渡すアクセス許可を付与するポリシー。
  +   
****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole",
            "s3:GetObject"
          ],
          "Resource": [
            "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 「 サービスにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)」を参照してください。

Amazon S3 バケットの作成とそれへのオブジェクトのアップロードの詳細については、「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」と「[オブジェクトのアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)」を参照してください。