コアデバイスが AWS サービスとやり取りできるように認証する - AWS IoT Greengrass

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

コアデバイスが AWS サービスとやり取りできるように認証する

AWS IoT Greengrass コアデバイスは、 AWS IoT Core 認証情報プロバイダーを使用して サービスへの AWS 呼び出しを承認します。 AWS IoT Core 認証情報プロバイダーを使用すると、デバイスは X.509 証明書を一意のデバイス ID として使用して AWS リクエストを認証できます。これにより、 AWS アクセスキー ID とシークレットアクセスキーを AWS IoT Greengrass コアデバイスに保存する必要がなくなります。詳細については、「 AWS IoT Core デベロッパーガイド」の「 AWS サービスへの直接呼び出しの承認」を参照してください。

AWS IoT Greengrass Core ソフトウェアを実行するときに、コアデバイスが必要とする AWS リソースをプロビジョニングすることを選択できます。これには、コアデバイスが AWS IoT Core 認証情報プロバイダーを通じて引き受ける AWS Identity and Access Management (IAM) ロールが含まれます。--provision true 引数を使用して、コアデバイスが一時的な AWS 認証情報を取得できるようにするロールとポリシーを設定します。この引数は、この IAM AWS IoT ロールを指すロールエイリアスも設定します。使用する IAM ロールと AWS IoT ロールエイリアスの名前を指定できます。これらの他の名前パラメータなしで --provision true を指定した場合、Greengrass コアデバイスは次のデフォルトリソースを作成して使用します。

  • IAM ロール: GreengrassV2TokenExchangeRole

    この役割には、GreengrassV2TokenExchangeRoleAccess という名前のポリシーと、credentials.iot.amazonaws.com がロールを継承することができる信頼関係があります。ポリシーには、コアデバイスに対する最低限のアクセス許可が含まれます。

    重要

    このポリシーには、S3 バケット内のファイルへのアクセスは含まれません。コアデバイスが S3 バケットからコンポーネントアーティファクトを取得できるように、ロールにアクセス許可を追加する必要があります。詳細については、「コンポーネントのアーティファクトの S3 バケットへのアクセスを許可する」を参照してください。

  • AWS IoT ロールエイリアス: GreengrassV2TokenExchangeRoleAlias

    このロールエイリアスは IAM ロールを参照します。

詳細については、「ステップ 3: AWS IoT Greengrass Core ソフトウェアをインストールする」を参照してください。

既存のコアデバイスにロールエイリアスを設定することもできます。設定するには、Greengrass nucleus コンポーネントiotRoleAlias 設定パラメータを設定します。

この IAM ロールの一時的な AWS 認証情報を取得して、カスタムコンポーネントで AWS オペレーションを実行できます。詳細については、「AWS サービスとやり取り」を参照してください。

コアデバイスに対するサービスロールのアクセス許可

このロールにより、次のサービスがロールを継承できます。

  • credentials.iot.amazonaws.com

AWS IoT Greengrass Core ソフトウェアを使用してこのロールを作成する場合、次のアクセス許可ポリシーを使用して、コアデバイスが に接続してログを送信できるようにします AWS。ポリシーの名前は、デフォルトで Access で終わる IAM ロールの名前になります。例えば、デフォルトの IAM ロール名を使用した場合には、このポリシーの名前は GreengrassV2TokenExchangeRoleAccess になります。

Greengrass nucleus v2.5.0 and later
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
v2.4.x
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:DescribeCertificate", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
Earlier than v2.4.0
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:DescribeCertificate", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "iot:Connect", "iot:Publish", "iot:Subscribe", "iot:Receive", "s3:GetBucketLocation" ], "Resource": "*" } ] }

コンポーネントのアーティファクトの S3 バケットへのアクセスを許可する

コアデバイスのロールは、デフォルトではコアデバイスが S3 バケットにアクセスすることを許可しません。S3 バケットにアーティファクトを持つコンポーネントをデプロイするには、コアデバイスがコンポーネントアーティファクトをダウンロードすることを許可する s3:GetObject アクセス許可を追加する必要があります。コアデバイスに新しいポリシーを追加することで、このアクセス許可を付与できます。

Amazon S3 のコンポーネントアーティファクトへのアクセスを許可するポリシーを追加するには
  1. component-artifact-policy.json という名前のファイルを作成して、次の JSON をファイルにコピーします。このポリシーは、S3 バケット内のすべてのファイルへのアクセスを許可します。DOC-EXAMPLE-BUCKET を S3 バケットの名前に置き換えて、コアデバイスにアクセスを許可します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
  2. 次のコマンドを実行して、component-artifact-policy.json のポリシードキュメントからポリシーを作成します。

    Linux or Unix
    aws iam create-policy \ --policy-name MyGreengrassV2ComponentArtifactPolicy \ --policy-document file://component-artifact-policy.json
    Windows Command Prompt (CMD)
    aws iam create-policy ^ --policy-name MyGreengrassV2ComponentArtifactPolicy ^ --policy-document file://component-artifact-policy.json
    PowerShell
    aws iam create-policy ` --policy-name MyGreengrassV2ComponentArtifactPolicy ` --policy-document file://component-artifact-policy.json

    出力のポリシーメタデータから、ポリシーの Amazon リソースネーム (ARN) をコピーします。この ARN を使用して、次の手順で、このポリシーをコアデバイスのロールにアタッチします。

  3. 次のコマンドを実行して、ポリシーをコアデバイスのロールにアタッチします。GreengrassV2TokenExchangeRole を AWS IoT Greengrass Core ソフトウェアの実行時に指定したロールの名前に置き換えます。その後、ポリシー ARN を、前のステップで書き留めた ARN に置き換えます。

    Linux or Unix
    aws iam attach-role-policy \ --role-name GreengrassV2TokenExchangeRole \ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
    Windows Command Prompt (CMD)
    aws iam attach-role-policy ^ --role-name GreengrassV2TokenExchangeRole ^ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
    PowerShell
    aws iam attach-role-policy ` --role-name GreengrassV2TokenExchangeRole ` --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

    コマンドに出力がない場合は成功したことを意味しており、コアデバイスがこの S3 バケットにアップロードしたアーティファクトにアクセスできるようになります。