本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
访问控制
授予 AWS IoT 控制它需要的访问权限
使用 IAM 角色控制每条规则有权访问的 AWS 资源。在创建规则之前,您必须使用允许访问所需 AWS 资源的策略创建 IAM 角色。 AWS IoT 在实施规则时扮演这个角色。
完成以下步骤创建 IAM 角色和 AWS IoT 授予 AWS IoT 控制它需要的访问权限 (AWS CLI).
-
将以下授予角色代入 AWS IoT 权限的信任策略文档保存到名为的文件中
iot-role-trust.json。-
{ "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:rule/rulename" } } } ] }
使用 create-role 命令,指定
iot-role-trust.json文件,创建 IAM 角色:aws iam create-role --role-namemy-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" } } -
将以下 JSON 保存到名为
my-iot-policy.json的文件中。-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "*" } ] }
此 JSON 是一个示例策略文档,用于向 AWS IoT 管理员授予对 DynamoDB 的访问权限。
在担任角色后,使用 create- p AWS IoT olicy 命令授予对 AWS 资源的访问权限,并传入
my-iot-policy.json文件:aws iam create-policy --policy-namemy-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" } } -
使用 attach-role-policy 命令将您的策略附加到角色:
aws iam attach-role-policy --role-namemy-iot-role--policy-arn "arn:aws:iam::123456789012:policy/my-iot-policy"
撤消规则引擎访问权限
要立即撤消规则引擎访问权限,请执行以下操作:
将 HTTP 操作流量限制在规则引擎 IPv6 范围内
按源地址限制入站流量的终端节点必须允许下表中您所在地区的范围。这适用于 HTTP 操作端点,这些终端节点是您可以配置为只能通过 IPv6 访问的唯一目的地。对于其他操作,规则引擎通过 IPv4 连接到双栈目的地,因此没有允许的范围。
这些范围仅在规则引擎通过 IPv6 连接到您的终端节点时适用,当您的终端节点发布 AAAA 记录但没有 A 记录时,就会发生这种情况。没有等效的 IPv4 范围,因此按源地址限制规则引擎流量需要只能通过 IPv6 访问的端点。
每个范围仅用于规则引擎操作,并且不会更改。其他地区的范围将在可用时添加到此表中。有关通过 IPv6 接收数据的步骤,请参阅网络访问。
注意
此表中未列出的区域没有规则引擎 IPv6 范围。
| Region | IPv6 地址范围 |
|---|---|
| us-east-1 | 2600:1f33:8000::/48 |
| us-east-2 | 2600:1f33:6000::/48 |
| us-west-1 | 2600:1f33:c000::/48 |
| us-west-2 | 2600:1f33:4000::/48 |
| ap-east-1 | 2406:da33:e000::/48 |
| ap-northeast-1 | 2406:da33:4000::/48 |
| ap-northeast-2 | 2406:da33:2000::/48 |
| ap-south-1 | 2406:da33:a000::/48 |
| ap-southeast-1 | 2406:da33:8000::/48 |
| ap-southeast-2 | 2406:da33:c000::/48 |
| ap-southeast-5 | 2406:da33:800::/48 |
| ca-central-1 | 2600:1f33:1000::/48 |
| eu-central-1 | 2a05:d033:4000::/48 |
| eu-north-1 | 2a05:d033:6000::/48 |
| eu-south-1 | 2a05:d033:a000::/48 |
| eu-south-2 | 2a05:d033:1000::/48 |
| eu-west-1 | 2a05:d033:8000::/48 |
| eu-west-2 | 2a05:d033:c000::/48 |
| eu-west-3 | 2a05:d033:2000::/48 |
| il-central-1 | 2a05:d033:5000::/48 |
| sa-east-1 | 2600:1f33:e000::/48 |
| us-gov-east-1 | 2600:1f33:5000::/48 |
| us-gov-west-1 | 2600:1f33:2000::/48 |
以下示例将入站流量限制在该us-east-1范围内。将其替换为您所在地区的范围。
一个 API Gateway 资源策略,它允许使用规则引擎并拒绝其他所有内容:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*" }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*", "Condition": { "NotIpAddress": { "aws:SourceIp": ["2600:1f33:8000::/48"] } } } ] }
对于负载均衡器后面或 Amazon EC2 上的终端节点,请向安全组添加一条入站规则,允许您所在地区的端口 443 上的 TCP 流量。