

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建 Amazon IoT TwinMaker 视频播放器政策
<a name="tm-video-policy"></a>

以下是一个策略模板，其中包含在 Grafana 中使用 Amazon IoT TwinMaker 插件所需的所有视频权限：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*",
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iottwinmaker:Get*",
                "iottwinmaker:List*"
            ],
            "Resource": [
                "arn:aws:iottwinmaker:{{us-east-1}}:{{111122223333}}:workspace/{{workspaceId}}",
                "arn:aws:iottwinmaker:{{us-east-1}}:{{111122223333}}:workspace/{{workspaceId}}/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iottwinmaker:ListWorkspaces",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:GetDataEndpoint",
                "kinesisvideo:GetHLSStreamingSessionURL"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iotsitewise:GetAssetPropertyValue",
                "iotsitewise:GetInterpolatedAssetPropertyValues"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iotsitewise:BatchPutAssetPropertyValue"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "aws:ResourceTag/EdgeConnectorForKVS": "*{{workspaceId}}*"
                }
            }
        }
    ]
}
```

------

有关完整策略的更多信息，请参阅 [创建 IAM 策略](dashboard-IAM-role.md#IAM-policy) 主题中的**所有视频权限**策略模板。

## 缩小访问资源的权限范围
<a name="scope-down-access"></a>

Grafana 中的视频播放器面板直接调用 Kinesis Video Streams SiteWise 和 IoT，以提供完整的视频播放体验。为避免未经授权访问与您的 Amazon IoT TwinMaker 工作空间无关的资源，请在工作空间控制面板角色的 IAM 策略中添加条件。

## 缩小 GET 权限范围
<a name="scope-down-GET-permissions"></a>

您可以通过标记资源来缩小对您的 Amazon Kinesis Video Streams Amazon IoT SiteWise 和资产的访问范围。您可能已经基于 Amazon IoT TwinMaker WorkspaceID 为 Amazon IoT SiteWise 相机资产添加了标签，以启用视频上传请求功能，请参阅[从边缘上传视频主题](https://docs.amazonaws.cn//iot-twinmaker/latest/guide/dashboard-IAM-role.html#tagging-camera-assets)。你可以使用相同的标签键值对来限制对 Amazon IoT SiteWise 资产的 GET 访问权限，也可以用同样的方式标记你的 Kinesis Video Streams。

然后，您可以将此条件添加到 `{{YourWorkspaceId}}DashboardPolicy` 中的 kinesisvideo 和 iotsitewise 语句：

```
"Condition": {
  "StringLike": {
    "aws:ResourceTag/EdgeConnectorForKVS": "*{{workspaceId}}*"
  } 
}
```

### 真实生活用例：对摄像头进行分组
<a name="use-cases"></a>

在此场景中，您有大量的摄像头监视工厂烘焙饼干的过程。成批的饼干面糊在面糊室制作，面糊在冷冻室冷冻，饼干在烘焙室烘烤。每个房间都有摄像头，不同的操作员团队分别监视每个过程。您希望每组操作员都获得各自工作间的授权。在为饼干厂构建数字孪生时，使用的是单个工作区，但摄像头权限需要按工作间划分范围。

您可以通过根据摄像头组的 GroupingId 标记摄像头组来实现这种权限分离。在这种情况下，GroupingID 为 BatterRoom FreezerRoom、和。 BakingRoom每个房间的摄像头都连接到 Kinesis Video Streams，并且应该有一个键为 `EdgeConnectorForKVS`、值为 `BatterRoom` 的标签。该值可以是由以下任何字符分隔的分组列表：`. : + = @ _ / -`

要修改 `{{YourWorkspaceId}}DashboardPolicy`，请使用以下策略语句：

```
...,
{
  "Effect": "Allow",
  "Action": [
    "kinesisvideo:GetDataEndpoint",
    "kinesisvideo:GetHLSStreamingSessionURL"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "aws:ResourceTag/EdgeConnectorForKVS": "*{{groupingId}}*"
    } 
  }
},
{
  "Effect": "Allow",
  "Action": [
    "iotsitewise:GetAssetPropertyValue",
    "iotsitewise:GetInterpolatedAssetPropertyValues"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "aws:ResourceTag/EdgeConnectorForKVS": "*{{groupingId}}*"
    } 
  }
},
...
```

这些语句限制了对分组中特定资源的流媒体视频播放和 Amazon IoT SiteWise 属性历史记录访问权限。`{{groupingId}}` 由您的用例定义。在我们的场景中，它将是 RoomID。

## 范围缩小 Amazon IoT SiteWise BatchPutAssetPropertyValue 权限
<a name="scope-down-BatchPutAssetPropertyValue"></a>

提供此权限可开启[视频播放器中的视频上传请求功能](https://docs.amazonaws.cn//iot-twinmaker/latest/guide/dashboard-IAM-role.html#tagging-camera-assets)。上传视频时，您可以指定一个时间范围，并在 Grafana 控制面板上选择**提交**来提交请求。

要授予 iotsitewise: BatchPutAssetPropertyValue 权限，请使用默认策略：

```
...,
{
  "Effect": "Allow",
  "Action": [
    "iotsitewise:BatchPutAssetPropertyValue"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "aws:ResourceTag/EdgeConnectorForKVS": "*{{workspaceId}}*"
    } 
  }
},
...
```

通过使用此政策，用户可以调 BatchPutAssetPropertyValue 用 Amazon IoT SiteWise 相机资产上的任何属性。您可以通过在语句的条件中指定特定 PropertyID 来限制对它的授权。

```
{
  ...
  "Condition": {
    "StringEquals": {
      "iotsitewise:propertyId": "{{propertyId}}"
    } 
  }
  ...
}
```

Grafana 中的 “视频播放器” 面板将数据提取到 VideoUploadRequest名为的测量属性中，以启动将视频从边缘缓存上传到 Kinesis Video Streams 的操作。在控制台中找到该属性的属性 ID。 Amazon IoT SiteWise 要修改 `{{YourWorkspaceId}}DashboardPolicy`，请使用以下策略语句：

```
...,
{
  "Effect": "Allow",
  "Action": [
    "iotsitewise:BatchPutAssetPropertyValue"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "aws:ResourceTag/EdgeConnectorForKVS": "*{{workspaceId}}*"
    },
    "StringEquals": {
      "iotsitewise:propertyId": "{{VideoUploadRequestPropertyId}}"
    }
  }
},
...
```

此语句将摄取数据限制在已标记的 Amazon IoT SiteWise 摄像头资产的特定属性。有关更多信息，请参阅[Amazon IoT SiteWise 如何与 IAM 结合使用](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/security_iam_service-with-iam.html)。