AWS IoT ルールに必要なアクセスを付与する - AWS IoT Core

AWS IoT ルールに必要なアクセスを付与する

IAM ロールは、各ルールからアクセスできる AWS リソースを制御するために使用します。ルールを作成するには、必要な AWS リソースへのアクセスを許可するポリシーを指定した IAM ロールを作成する必要があります。AWS IoT は、ルールの実行時にこのロールを引き受けます。

必要なアクセスを AWS IoT ルールに付与する IAM ロール および AWS IoT ポリシーを作成するには (AWS CLI)

  1. 次の信頼ポリシードキュメントを iot-role-trust.json という名前のファイルに保存します。このポリシーでは、ロールを適用するアクセス許可が AWS IoT に付与されます。

    この例には、「混乱した代理」問題から保護するためのグローバル条件コンテキストキーが含まれています。AWS IoT ルールでは、aws:SourceArnarn:aws:iot:region:account-id:* の形式に従う必要があります。region がお客様の AWS IoT リージョンと一致し、account-id がお客様のカスタマーアカウント ID と一致することを確認してください。

    { "Version":"2012-10-17", "Statement":[{ "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:iot:us-east-1:123456789012:*" } } }] }

    create-role コマンドを使用し、iot-role-trust.json ファイルを指定して IAM ロールを作成します。

    aws iam create-role --role-name my-iot-role --assume-role-policy-document file://iot-role-trust.json

    このコマンドの出力は以下のようになります。

    { "Role": { "AssumeRolePolicyDocument": "url-encoded-json", "RoleId": "AKIAIOSFODNN7EXAMPLE", "CreateDate": "2015-09-30T18:43:32.821Z", "RoleName": "my-iot-role", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/my-iot-role" } }
  2. 次の JSON を my-iot-policy.json という名前のファイルに保存します。

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "dynamodb:*", "Resource": "*" }] }

    この JSON は、DynamoDB への管理者アクセス権を AWS IoT に付与するポリシードキュメントの例です。

    create-policy コマンドを使用して、ロールの引き受け時に AWS リソースへのアクセス権を AWS IoT に付与し、my-iot-policy.json ファイルを渡します。

    aws iam create-policy --policy-name my-iot-policy --policy-document file://my-iot-policy.json

    AWS のポリシーで AWS IoT サービスへのアクセスを許可する方法については、「AWS IoT ルールの作成」を参照してください。

    create-policy コマンドの出力には、ポリシーの ARN が含められます。このポリシーをロールにアタッチする必要があります。

    { "Policy": { "PolicyName": "my-iot-policy", "CreateDate": "2015-09-30T19:31:18.620Z", "AttachmentCount": 0, "IsAttachable": true, "PolicyId": "ZXR6A36LTYANPAI7NJ5UV", "DefaultVersionId": "v1", "Path": "/", "Arn": "arn:aws:iam::123456789012:policy/my-iot-policy", "UpdateDate": "2015-09-30T19:31:18.620Z" } }
  3. ポリシーをロールにアタッチするには、attach-role-policy コマンドを使用します。

    aws iam attach-role-policy --role-name my-iot-role --policy-arn "arn:aws:iam::123456789012:policy/my-iot-policy"