

# IVS 中的非预期内容和观看者
<a name="undesired-content"></a>

恶意用户可能会试图在您的平台上重新流式传输非预期内容（例如职业体育比赛）。这种流式传输可以显著增加您的应用程序提供的直播视频数量以及相关成本，而不会增加您的业务价值。除了为您提供停止活动流的控制措施外，Amazon IVS 还提供资源，从一开始就帮助检测和防止此类行为。

## 正在检测非预期内容
<a name="undesired-content-detect"></a>

### 异常检测
<a name="undesired-content-anomaly-detection"></a>

您可以检测并提醒流式传输某些非预期内容时出现收视率异常峰值的情况。（一旦检测到峰值，就可以采取[停止流并重置流密钥](#undesired-content-stop-stream)中提到的步骤，如下所述。）

您可使用 Amazon CloudWatch 创建警报，这些警报可以在特定情况下发送提醒；例如，在您的收视率出现峰值时。Amazon IVS 会自动向 Amazon CloudWatch 报告所有通道的并发视图（CCV）指标，因此您只需设置警报即可。要设置基于 CCV 的异常检测警报，请执行以下步骤：

1. 通过以下网址打开 Amazon CloudWatch 控制台：[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在左侧导航栏中，依次选择**警报**和**所有警报**。

1. 在页面右上角，选择**创建警报**。

1. 选择**选择指标**。在*指标*下，依次选择 **IVS** 和**全部**，然后选中 **ConcurrentViews** 旁边的复选框。

1. 在右下角，选择**选择指标**。随即打开 4 步警报创建向导。

1. 向导：在**步骤 1：指定指标和条件**中，指定以下设置：

   1. **统计数据** = **最大值**

   1. **时间** = **1 分钟**

   1. **阈值类型** = **异常检测**

   1. **每当并发视图为...** = **大于该范围**

   1. **异常检测阈值** = **3**

      此阈值是初始建议值。您可能需要根据典型的流量模式和需求选择不同的值。使用较小值可以更仔细地观察您的指标；使用较大值可减少警报。

   1. 选择**下一步**。

1. 向导：在**步骤 2：配置操作**中，选择一个现有 SNS 主题或创建一个新 SNS 主题，把电子邮件发送到您指定的地址。要创建发送电子邮件的主题，请选择**创建新主题**，提供主题名称，输入您的电子邮件地址，然后选择**创建主题**。选择**下一步**继续。

1. 向导：在**步骤 3：添加名称和描述**中，为警报添加名称和可选描述，然后选择**下一步**。

1. 向导：在**步骤 4：预览和创建**中，验证信息是否正确，然后选择**创建警报**。

1. 您的警报已创建。如果出现提示，请按照相关说明确认 SNS 订阅。

有关更多信息，请参阅：

1. [监控 Amazon IVS 低延迟直播功能](stream-health.md)

1. [根据异常检测创建 CloudWatch 告警](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/Create_Anomaly_Detection_Alarm.html)

### 自定义内容审核
<a name="undesired-content-custom-moderation"></a>

您可以探索自定义内容审核解决方案，通过图像识别检测非预期内容。Amazon IVS 能够[自动将 Amazon IVS 实时流录制到 Amazon S3](record-to-s3.md)，包括生成用于此类解决方案的缩略图。

考虑以下其他检测和预防技术：
+ [使用 Amazon Rekognition 进行 Amazon IVS 审核](https://github.com/aws-samples/amazon-ivs-moderation-with-record-to-s3-web-demo/)的演示展示了如何将 IVS 自动录制到 S3 与 Amazon Rekognition 结合使用来审核实时内容。
+ [为您的 Amazon IVS 视频流添加 Hive 内容审核](https://aws.amazon.com/blogs/media/add-hive-content-moderation-to-your-amazon-ivs-video-streams/)
+ [《使用 AI/ML 内容审核创建更安全的在线社区》](https://dev.to/aws/creating-safer-online-communities-with-aiml-content-moderation-1bn)是一篇关于在 IVS 应用程序中使用 Amazon Rekognition 的博客文章。

## 阻止非预期内容和观看者
<a name="undesired-content-prevent"></a>

### 停止流并重置流密钥
<a name="undesired-content-stop-stream"></a>

如果您检测到某个通道被用来流式传输非预期内容，则可以使用 Amazon IVS 控制台关闭该流：

1. 打开 [Amazon IVS 控制台](https://console.aws.amazon.com/ivs)。（您还可通过 [Amazon 管理控制台](https://console.aws.amazon.com/)访问 Amazon IVS 控制台。）

1. 如有必要，从导航栏中，使用**选择区域**下拉菜单选择托管该通道的区域。

1. 选择要停止的流正在运行的通道。

1. 在通道页面上，向下导航到**实时流**部分，然后选择**停止流**。

即使您停止流，广播者也可以在该通道上重启流。为防止这种情况，请重置流密钥；这样可以防止广播者在未事先获取新的流密钥的情况下重启流。要重置流密钥，请执行以下操作：
+ 还在通道页面上时，向下导航到**流配置**部分，然后选择**重置流密钥**。

您也可以通过编程方式停止流并重置（删除/创建）流密钥。请参阅 [Amazon IVS Low-Latency Streaming API Reference](https://docs.aws.amazon.com/ivs/latest/LowLatencyAPIReference/Welcome.html)。

根据应用程序发放流密钥的方式，您可能需要采取进一步措施来防止获取任何新的流密钥。

### 使用私有通道
<a name="undesired-content-private-channels"></a>

在很多情况下，只需将播放 URL 嵌入第三方网站中，就能将非预期内容流式传输给平台外的大量受众。防止这种行为的最佳解决方案是 Amazon IVS 私有通道。通过使用私有通道，您可以将播放受众限制为具有有效播放令牌的观众。播放令牌用于验证播放应用程序中的观众，从而妨碍非预期平台的收视率。此外，您还可以启用源强制功能，防止观众在未托管在您的域上的网站上观看直播。您还可以通过启用严格的源强制功能来扩展此保护以覆盖常见的流式处理应用程序。

请注意，您可以获得私有通道和身份验证的保护，而无需强制用户创建和/或登录正式账户。您的播放应用程序只需在幕后匿名获取令牌即可。您仍然可以利用源强制功能。

要了解有关私有通道的更多信息，请参阅：
+ *IVS 低延迟流式传输用户指南*中的[设置私有通道](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/private-channels.html)。在该文档中，要了解有关源强制功能的更多信息，请参阅 [Generate and Sign IVS Playback Tokens](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/private-channels-generate-tokens.html)。
+ [使用 Amazon IVS 为已授权的实时流播放创建私有通道](https://dev.to/aws/creating-a-private-channel-for-authorized-live-stream-playback-with-amazon-ivs-2mdl)（博客文章）

### 使用播放限制策略
<a name="undesired-content-restriction-policies"></a>

如果您不想使用[私有通道](#undesired-content-private-channels)，您仍然可以利用播放限制策略从一些相同的保护措施中受益。这些策略允许您在公有通道上启用 GeoBlocking 和源强制等功能。您可以使用 IVS 控制台或 API 来创建播放限制策略，然后将该策略的 ARN 附加到您的通道。

#### 控制台说明（播放限制策略）
<a name="console-playback-restrictions"></a>

1. 创建播放限制策略

   1. [打开 Amazon IVS 控制台](https://console.aws.amazon.com/ivs)。在左侧导航窗格中，选择**播放安全性 > 播放限制策略**。

   1. 选择**创建策略**。

   1. （可选）为策略命名。

   1. （可选）切换**严格源强制**（参见以下说明）。

   1. 指定**允许的国家/地区**和**允许的来源**。

   1. 选择**创建策略**。

1. 附加此策略至新的或现有通道

   1. 创建新通道或编辑现有通道。

   1. 在（**创建通道**或**更新通道**窗口的）**限制播放**部分中，选择**启用播放限制**。

   1. 从**播放限制策略**下拉列表中，选择您在步骤 1 中创建的策略。

   1. 选择**创建通道**（用于新通道）或**保存**（更新现有通道）。

**关于严格源强制的说明**：这是一个可选设置，可用于加强使用允许源指定的源限制。默认情况下，源限制仅适用于多变体播放列表。如果启用了严格源限制，则服务器将强制要求请求源与所有播放请求（包括多变体播放列表、变体播放列表和片段）的策略匹配。这意味着所有客户端（包括非浏览器客户端）都必须在每个请求中提供有效的源请求标头。使用 `setOrigin` 方法在 IVS iOS 和 Android 回放器 SDK 中设置标头。除 iOS Safari 之外，它会在 Web 浏览器中自动设置。对于 iOS Safari，您需要将 `crossorigin="anonymous"` 添加到视频元素，以确保发送源请求标头。示例：`<video crossorigin="anonymous"></video>`。

**关于 IP 地址和国家/地区之间映射的说明：**IVS 使用第三方数据库来确定用户的位置。IP 地址和国家/地区之间映射的准确性因区域而异。根据最近的测试，整体准确性为 99.8%。如果 IVS 无法确定用户的位置，则 IVS 将提供用户请求的内容。

#### CLI 说明（播放限制策略）
<a name="cli-playback-restrictions"></a>

1. 创建播放限制策略。见下列。*对于 `allowed-countries` 和 `allowed-origins` 字段，将以下示例值替换为实际值，或者根据您的用例删除一个或两个字段。*

   ```
   aws ivs create-playback-restriction-policy --name test-playback-restriction-policy --enable-strict-origin-enforcement --allowed-countries "US","JP" --allowed-origins "https://example1.com","https://*.example2.com"
   ```

   此时将返回新的播放限制策略。有关其字段，请参阅《IVS Low-Latency Streaming API Reference》**中的 [PlaybackRestrictionPolicy](https://docs.aws.amazon.com//ivs/latest/LowLatencyAPIReference/API_PlaybackRestrictionPolicy.html)。

1. 将新策略附加到通道。对于现有通道，运行 `update-channel` 并传入上一步中创建的播放限制策略的 ARN：

   ```
   aws ivs update-channel --arn "arn:aws:ivs:us-west-2:123456789012:channel/abcdABCDefgh" --playback-restriction-policy-arn "arn:aws:ivs:us-west-2:123456789012:playback-restriction-policy/abcdABCDefgh"
   ```

   对于新通道，请在[创建通道](create-channel-cli.md)时添加 `--playback-restriction-policy-arn` 声明。