Greengrass サービスロール - AWS IoT Greengrass

AWS IoT Greengrass Version 1 は、2023 年 6 月 30 日に延長ライフフェーズに入りました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日以降、 AWS IoT Greengrass V1 は機能、機能強化、バグ修正、またはセキュリティパッチを提供する更新をリリースしません。で実行されるデバイスは中断 AWS IoT Greengrass V1 されず、引き続き運用され、クラウドに接続されます。への移行 AWS IoT Greengrass Version 2を強くお勧めします。これにより、重要な新機能が追加され、追加のプラットフォーム がサポートされます

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

Greengrass サービスロール

Greengrass サービスロールは、ユーザーに代わって AWS のサービスからリソースへのアクセスを AWS IoT Greengrass に許可する AWS Identity and Access Management (IAM) サービスロールです。これにより、AWS IoT Greengrass は AWS Lambda 関数を取得したり、AWS IoT シャドウを管理するなど、重要なタスクを実行できます。

リソースへのアクセスを AWS IoT Greengrass に許可するには、Greengrass サービスロールを AWS アカウント に関連付けて、AWS IoT Greengrass を信頼されたエンティティに指定する必要があります。ロールには AWSGreengrassResourceAccessRolePolicy 管理ポリシーまたはお使いの AWS IoT Greengrass の機能に同等のアクセス許可を定義するカスタムポリシーを含める必要があります。このポリシーは AWS によって維持され、AWS IoT Greengrass が AWS リソースにアクセスするために使用する一連のアクセス許可を定義します。

AWS リージョン 全体で同じ Greengrass サービスロールを再利用できますが、AWS IoT Greengrass を使用するすべての AWS リージョン で、お客様のアカウントにそのロールを関連付ける必要があります。現在の AWS アカウント とリージョンにサービスロールが存在しない場合、グループのデプロイは失敗します。

以下のセクションでは、AWS Management Console または AWS CLI で Greengrass サービスロールを作成および管理する方法について説明します。

注記

サービスレベルのアクセスを承認するサービスロールに加えて、グループロールを AWS IoT Greengrass グループに割り当てることができます。グループロールとは、グループ内の Lambda 関数とコネクタが AWS のサービスにアクセスする方法をコントロールする個別の IAM ロールです。

Greengrass サービスロールの管理 (コンソール)

AWS IoT コンソールを使用すると、Greengrass サービスロールを簡単に管理できます。例えば、Greengrass グループを作成またはデプロイすると、コンソールでは、現在選択されている AWS リージョン の Greengrass サービスロールに、お客様の AWS アカウント がアタッチされているかどうかが確認されます。アタッチされていない場合、コンソールによるサービスロールの作成および設定が可能です。詳細については、「Greengrass サービスロールを作成する (コンソール)」を参照してください。

AWS IoT コンソールは以下のロール管理タスクに使用できます。

注記

コンソールにサインインするユーザーには、サービスロールを表示、作成、または変更するためのアクセス許可が必要です。

 

Greengrass サービスロールを見つける (コンソール)

以下の手順を使用して、現在の AWS リージョン で AWS IoT Greengrass が使用しているサービスロールを見つけます。

  1. AWS IoT コンソール のナビゲーションペインから、[Settings] (設定) を選択します。

  2. [Greengrass service role (Greengrass サービスロール)] セクションまでスクロールして、サービスロールとそのポリシーを表示します。

    サービスロールが表示されない場合は、コンソールによるサービスロールの作成また設定が可能です。詳細については、「Greengrass サービスロールを作成する」を参照してください。

 

Greengrass サービスロールを作成する (コンソール)

コンソールによるデフォルトの Greengrass サービスロールの作成と設定が可能です。このロールには以下のプロパティがあります。

プロパティ
名前 Greengrass_ServiceRole
信頼されたエンティティ AWS service: greengrass
ポリシー AWSGreengrassResourceAccessRolePolicy
注記

Greengrass デバイスセットアップがサービスロールを作成する場合、ロール名は GreengrassServiceRole_random-string です。

AWS IoT コンソールから Greengrass グループを作成またはデプロイすると、コンソールでは、現在選択されている AWS リージョン の AWS アカウント に、Greengrass サービスロールが関連付けられているかどうかが確認されます。関連付けられていない場合、コンソールでは、AWS のサービスに対してお客様に代わって読み書きすることを AWS IoT Greengrass に許可するように求められます。

許可を付与すると、コンソールでは、AWS アカウント に Greengrass_ServiceRole という名前のロールがあるかどうかの確認が行われます。

  • そのロールがある場合、コンソールで、そのサービスロールが現在の AWS リージョン の AWS アカウント にアタッチされます。

  • そのロールがない場合、コンソールで、デフォルトの Greengrass サービスロールが作成され、現在の AWS リージョン の AWS アカウント にアタッチされます。

注記

カスタムロールポリシーを使用してサービスロールを作成する場合は、IAM コンソールを使用してロールを作成または変更します。詳細については、「IAM ユーザーガイド」の「AWS サービスにアクセス許可を委任するロールの作成」または「ロールの修正」を参照してください。使用する機能およびリソースの AWSGreengrassResourceAccessRolePolicy マネージドポリシーと同等のアクセス許可が、ロールによって付与されることを確認します。また、aws:SourceArnaws:SourceAccount のグローバル条件コンテキストキーを信頼ポリシーに加えることで、「混乱した代理」によるセキュリティ上の問題への対策にすることをお勧めします。条件コンテキストキーを使用すると、指定したアカウントと Greengrass ワークスペースからのリクエストのみを許可するようにアクセスを制限できます。「混乱した代理」問題の詳細については、「サービス間の混乱した代理の防止」を参照してください。

サービスロールを作成する場合は、AWS IoT コンソールに戻り、ロールをグループにアタッチします。これは、グループの [Settings] (設定) ページにある [Greengrass service role] (Greengrass サービスロール) で行えます。

 

Greengrass サービスロールを変更する (コンソール)

以下の手順を使用して、コンソールで現在選択されている AWS リージョン の AWS アカウント にアタッチする別の Greengrass サービスロールを選択します。

  1. AWS IoT コンソール のナビゲーションペインから、[Settings] (設定) を選択します。

  2. [Greengrass service role] (Greengrass サービスロール) で、[Change role] (ロールの変更) を選択します。

    [Update Greengrass service role] (Greengrass サービスロールを更新) ダイアログボックスが開き、AWS IoT Greengrass を信頼するエンティティとして定義する AWS アカウント の IAM ロールが表示されます。

  3. アタッチする Greengrass サービスロールを選択します。

  4. [Attach role] (ロールをアタッチする) を選択します。

注記

コンソールによるデフォルトの Greengrass サービスロールの作成を許可するには、リストからロールを選択する代わりに [Create role for me (ロールの作成を許可)] を選択します。Greengrass_ServiceRole という名前のロールが AWS アカウント にある場合、[Create role for me] (自分のロールを作成) リンクは表示されません。

 

Greengrass サービスロールをデタッチする (コンソール)

以下の手順を使用して、コンソールで現在選択されている AWS リージョン の AWS アカウント から Greengrass サービスロールをデタッチします。これにより、現在の AWS リージョン の AWS のサービスに対する AWS IoT Greengrass の許可が取り消されます。

重要

サービスロールをデタッチすると、アクティブなオペレーションが中断される場合があります。

  1. AWS IoT コンソール のナビゲーションペインから、[Settings] (設定) を選択します。

  2. [Greengrass service role] (Greengrass サービスロール) で、[Detach role] (ロールのデタッチ) を選択します。

  3. 確認ダイアログボックスで、[Detach] (デタッチ) を選択します。

注記

ロールが不要になった場合は、IAM コンソールで削除できます。詳細については、IAM ユーザーガイドの「ロールまたはインスタンスプロファイルを削除する」を参照してください。

他のロールで、AWS IoT Greengrass にお客様のリソースへのアクセスを許可している可能性があります。ユーザーに代わってアクセス権限を引き受けることを AWS IoT Greengrass に許可するロールをすべて見つけるには、IAM コンソールの [Roles] (ロール) ページにある [Trusted entities] (信頼済みエンティティ) 列で、[AWS service: greengrass] ( サービス: greengrass) を含むロールを探します。

Greengrass サービスロールの管理 (CLI)

次の手順では、AWS CLI がインストールされていて AWS アカウント ID を使用するように設定されていることを前提としています。詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS コマンドラインインターフェイスのインストール」と「AWS CLI の設定」を参照してください。

AWS CLI は以下のロール管理タスクに使用できます。

 

Greengrass サービスロールを取得する (CLI)

以下の手順を使用して、Greengrass サービスロールが AWS リージョン 内の AWS アカウント に関連付けられているかどうか調べます。

  • サービスロールを取得します。region を AWS リージョン に置き換えます (例:us-west-2)。

    aws Greengrass get-service-role-for-account --region region

    Greengrass サービスロールが既にアカウントに関連付けられている場合、以下のロールメタデータが返されます。

    { "AssociatedAt": "timestamp", "RoleArn": "arn:aws:iam::account-id:role/path/role-name" }

    ロールメタデータが返されない場合は、サービスロールを作成し (存在しない場合)、AWS リージョン 内でアカウントに関連付ける必要があります。

 

Greengrass サービスロールを作成する (CLI)

次のステップを使用してロールを作成し、AWS アカウント に関連付けます。

IAM サービスを使用して、サービスロールを作成するには
  1. AWS IoT Greengrass にロールの引き受けを許可する信頼ポリシーを設定したロールを作成します。この例では、Greengrass_ServiceRole という名前のロールを作成しますが、別の名前を使用できます。また、aws:SourceArnaws:SourceAccount のグローバル条件コンテキストキーを信頼ポリシーに加えることで、「混乱した代理」によるセキュリティ上の問題への対策にすることをお勧めします。条件コンテキストキーを使用すると、指定したアカウントと Greengrass ワークスペースからのリクエストのみを許可するようにアクセスを制限できます。「混乱した代理」問題の詳細については、「サービス間の混乱した代理の防止」を参照してください。

    Linux, macOS, or Unix
    aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region:account-id:*" } } } ] }'
    Windows command prompt
    aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"greengrass.amazonaws.com\"},\"Action\":\"sts:AssumeRole\",\"Condition\":{\"ArnLike\":{\"aws:SourceArn\":\"arn:aws:greengrass:region:account-id:*\"},\"StringEquals\":{\"aws:SourceAccount\":\"account-id\"}}}]}"
  2. 出力のロールメタデータからロールの ARN をコピーします。ARN を使用して、ロールをアカウントに関連付けます。

  3. AWSGreengrassResourceAccessRolePolicy ポリシーをロールにアタッチします。

    aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
AWS アカウント にサービスロールを関連付ける
  • ロールとアカウントを関連付けます。role-arn をサービスロール ARN と置き換え、region を AWS リージョン (us-west-2 など) と置き換えます。

    aws greengrass associate-service-role-to-account --role-arn role-arn --region region

    成功すると、以下のレスポンスが返されます。

    { "AssociatedAt": "timestamp" }

 

Greengrass サービスロールを削除する (CLI)

次のステップを使用して、Greengrass サービスロールの関連付けを AWS アカウント から解除します。

  • アカウントからサービスロールの関連付けを解除します。region を AWS リージョン に置き換えます (例:us-west-2)。

    aws greengrass disassociate-service-role-from-account --region region

    成功すると、以下のレスポンスが返されます。

    { "DisassociatedAt": "timestamp" }
    注記

    意の AWS リージョン で使用していない場合は、サービスロールを削除する必要があります。最初に、delete-role-policy を使用して AWSGreengrassResourceAccessRolePolicy 管理ポリシーをロールからデタッチし、次に delete-role を使用してロールを削除します。詳細については、IAM ユーザーガイドの「ロールまたはインスタンスプロファイルを削除する」を参照してください。

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