

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立 AWS IoT TwinMaker 影片播放器政策
<a name="tm-video-policy"></a>

以下是政策範本，其中包含 Grafana 中 AWS 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 和 IoT SiteWise，以提供完整的影片播放體驗。若要避免未經授權存取與 AWS IoT TwinMaker 工作區無關的資源，請將條件新增至工作區儀表板角色的 IAM 政策。

## 縮小 GET 許可的範圍
<a name="scope-down-GET-permissions"></a>

您可以透過標記資源來縮小 Amazon Kinesis Video Streams 和 AWS IoT SiteWise 資產的存取範圍。您可能已經根據 workspaceId AWS IoT TwinMaker 標記 AWS IoT SiteWise 相機資產，以啟用影片上傳請求功能，請參閱[從邊緣主題上傳影片](https://docs.aws.amazon.com//iot-twinmaker/latest/guide/dashboard-IAM-role.html#tagging-camera-assets)。您可以使用相同的標籤鍵/值對來限制對 AWS IoT SiteWise 資產的 GET 存取，也可以用相同的方式標記 Kinesis Video Streams。

然後，您可以將此條件新增至 中的 kinesisvideo 和 iotsitewise 陳述式`{{YourWorkspaceId}}DashboardPolicy`：

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

### 實際使用案例：將攝影機分組
<a name="use-cases"></a>

在此案例中，您擁有大量攝影機，可監控在工廠中製作 Cookie 的程序。Cookie Batter 的批次是在 Batter Room 中製作，Batter 在 Freezer Room 中凍結，而 Cookie 在 Baking Room 中製作。這些房間中都有攝影機，而不同的運算子團隊會分別監控每個程序。您希望每個運算子群組都獲得各自房間的授權。為 Cookie 工廠建置數位分身時，會使用單一工作區，但攝影機許可需要依房間範圍。

您可以根據攝影機群組的 groupingId 標記攝影機群組，以達成此許可分離。在此案例中，groupingIds 是 BatterRoom、FreezerRoom 和 BakingRoom。每個房間中的攝影機都連接到 Kinesis Video Streams，並且應該有一個標籤：Key = `EdgeConnectorForKVS`，Value = `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}}*"
    } 
  }
},
...
```

這些陳述式會限制串流影片播放和 AWS IoT SiteWise 屬性歷史記錄對群組中特定資源的存取。是由您的使用案例`{{groupingId}}`所定義。在我們的案例中，它是 roomId。

## Scope down AWS IoT SiteWise BatchPutAssetPropertyValue 許可
<a name="scope-down-BatchPutAssetPropertyValue"></a>

提供此許可會開啟[影片播放器中的影片上傳請求功能](https://docs.aws.amazon.com//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}}*"
    } 
  }
},
...
```

透過使用此政策，使用者可以針對 AWS IoT SiteWise 攝影機資產上的任何屬性呼叫 BatchPutAssetPropertyValue。您可以在陳述式的條件中指定特定 propertyId 來限制授權。

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

Grafana 中的影片播放器面板會將資料擷取至名為 VideoUploadRequest 的測量屬性，以開始將影片從邊緣快取上傳至 Kinesis Video Streams。在 AWS IoT SiteWise 主控台中尋找此屬性的 propertyId。若要修改 `{{YourWorkspaceId}}DashboardPolicy`，請使用下列政策陳述式：

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

此陳述式會將擷取資料限制為已標記 AWS IoT SiteWise 攝影機資產的特定屬性。如需詳細資訊，請參閱 [AWS IoT SiteWise 如何使用 IAM](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/security_iam_service-with-iam.html)。