

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

# 为 Amazon Chime SDK 会议配置网络
<a name="network-config"></a>

当您将 Amazon Chime SDK 集成到客户端应用程序中时，该 SDK 会连接到其后端服务，以发送和接收音频、视频、内容共享和数据消息。如果用户的网络阻止了 Amazon Chime SDK 服务的流量，其使用该服务的能力将会受到影响。网络管理员可以使用这些信息重新配置其网络，以允许访问 Amazon Chime SDK 服务。

**注意**  
配置网络时，必须默认启用 DNS（EDNS0）扩展机制。这可以确保主机信息的大小与 UDP 数据包的大小一致，以使您的应用程序能够访问 Amazon Chime SDK 服务。

**Topics**
+ [

## 配置媒体和信令
](#media-signaling)
+ [

## 配置 Amazon Voice Focus
](#voice-focus-config)
+ [

## 配置回声抑制
](#echo-reduction)
+ [

## 配置背景替换和背景模糊
](#config-blur)
+ [

## 配置浏览器内容安全策略
](#configure-browser-policy)
+ [

# Amazon Chime IDs 软件开发工具包的使用 AppKeys 和租户
](app-keys-tenant-ids.md)

## 配置媒体和信令
<a name="media-signaling"></a>

Amazon Chime SDK 音频、视频和内容尽可能使用用户数据报协议 (UDP) 传输。如果 UDP 被阻止，Amazon Chime SDK 会尝试为双向媒体传输建立传输层安全性协议 (TLS) 连接。Amazon Chime SDK 信令和数据消息使用传输控制协议 (TCP) 和连接。 WebSocket 

下图显示了一个典型的网络，其中包含运行 Amazon Chime SDK 的应用程序。

![\[配置为运行 Amazon Chime SDK 应用程序的网络，在 SDK 和会议之间进行双向通信。\]](http://docs.aws.amazon.com/zh_cn/chime-sdk/latest/dg/images/net-config-diagram.png)


Amazon Chime SDK 针对媒体和信令使用以下目标和端口。


| 域 | IPv4 子网 | IPv6 子网 | 端口 | 
| --- | --- | --- | --- | 
| \$1.chime.aws | 99.77.128.0/18 | 2600:f0f 0:4100:: /40 | TCP:443 UDP:3478 | 

此子网是 [AWS IP 地址范围](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html)内的 `CHIME_MEETINGS` 服务。

## 配置 Amazon Voice Focus
<a name="voice-focus-config"></a>

适用于 iOS 和 Android 的 Amazon Chime SDK 客户端库包括 Amazon Voice Focus 模块。用于从亚马逊 JavaScript 下载亚马逊语音焦点模块的 Amazon Chime SDK 客户端库。 CloudFront适用于 Windows 的 Amazon Chime SDK 客户端库不支持 Voice Focus。

Amazon Voice Focus 使用以下目标和端口。


| 域 | 端口 | 
| --- | --- | 
| \$1.sdkassets.chime.aws | TCP:443 | 

此子网是 [AWS IP 地址范围](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html)内的 `CLOUDFRONT` 服务。

## 配置回声抑制
<a name="echo-reduction"></a>

用于从亚马逊 JavaScript 下载回声减少模块的 Amazon Chime SDK 客户端库。 CloudFront

回声抑制使用以下目标和端口。


| 域 | 端口 | 
| --- | --- | 
| \$1.sdkassets.chime.aws | TCP:443 | 

此子网是 [AWS IP 地址范围](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html)内的 `CLOUDFRONT` 服务。

## 配置背景替换和背景模糊
<a name="config-blur"></a>

用于从亚马逊 JavaScript 下载背景替换和模糊模块的 Amazon Chime SDK 客户端库。 CloudFront

背景替换和背景模糊使用以下目标和端口。


| 域 | 端口 | 
| --- | --- | 
| \$1.sdkassets.chime.aws | TCP:443 | 

此子网是 [AWS IP 地址范围](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html)内的 `CLOUDFRONT` 服务。

## 配置浏览器内容安全策略
<a name="configure-browser-policy"></a>

使用适用的 Amazon Chime SDK 客户端库构建应用程序时 JavaScript，需要在应用程序中配置浏览器内容安全策略。有关更多信息，请参阅上的《[内容安全策略指南》](https://aws.github.io/amazon-chime-sdk-js/modules/contentsecurity_policy.html) GitHub。

# Amazon Chime IDs 软件开发工具包的使用 AppKeys 和租户
<a name="app-keys-tenant-ids"></a>

您可以使用 AppKeys 和租户IDs 来限制*从网络*访问特定应用程序的 Amazon Chime SDK WebRTC 媒体会话。

开发人员使用 Amazon Chime SDK 创建通过 UDP 发送和接收实时视频的应用程序。应用程序用户需要对 [https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html) 子网的 UDP 访问权限。组织（网络所有者）可以使用 AppKeys 和租户IDs 将来自其网络的访问权限限制为仅允许特定应用程序的WebRTC媒体会话。

**示例 1：使用 AppKeys**  
如果 App-A 和 App-B 使用 Amazon Chime SDK，则组织可以允许 App-A 从其网络访问 WebRTC 媒体会话，但阻止 App-B 及使用 Amazon Chime SDK 的任何其他应用程序。Organizations 可以使用 App-A AppKey 和 HTTPS 代理来做到这一点。更多信息，请参阅该主题后面的 [限制对特定应用程序的访问](#limit-app-access)。

**示例 2：使用 AppKeys 和租户 IDs**  
如果 App-A 公开可用并被许多客户使用，组织可能希望仅当其用户参与会话时才允许 App-A 从其网络访问 WebRTC 媒体会话，并阻止访问所有其他 App-A 会话。组织可以通过使用应用程序 AppKey、组织的 TenanTid 和 HTTPS 代理来做到这一点。更多信息，请参阅该主题后面的 [限制对特定租户的访问](#limit-tenant-access)。

要使用 AppKeys 和租户IDs，您必须拥有允许向请求添加 HTTPS 标头的 HTTPS 代理服务器。下图显示了租户IDs 的工作原理。 AppKeys 

![\[该图显示了租户如何 AppKeys IDs 控制应用程序和租户对WebRTC会话的访问。\]](http://docs.aws.amazon.com/zh_cn/chime-sdk/latest/dg/images/app-key-diagram.png)


在图中，App-A 有租户 A-1 和 A-2，App-B 有租户 B-1 和 B-2。在这种情况下， AppKey 仅允许App-A连接到WebRTC媒体会话，而租户ID仅允许租户A-1加入该会话。

**Topics**
+ [

## 限制对特定应用程序的访问
](#limit-app-access)
+ [

## 限制对特定租户的访问
](#limit-tenant-access)
+ [

## HTTPS 标头示例
](#header-examples)

## 限制对特定应用程序的访问
<a name="limit-app-access"></a>

A *AppKey*是 Amazon Chime 为每个账户创建的一致且唯一的 256 位值。 AWS 如果您没有 AppKey，可以向 Amazon Support 申请一个。如果您有多个 AWS 账户，则可以 AppKey 申请所有账户的通用账户。

**注意**  
您可以安全地 AppKeys 公开共享您的信息，并允许其他组织限制来自其网络的访问。

Amazon Chime SDK 会 AppKey 根据用于创建会话的 AWS 账户 ID 自动将每个 WebRTC 媒体会话与关联起来。要限制*从您的网络*访问特定应用程序，请执行以下操作：

1. 通过 HTTPS 代理服务器将所有出站请求路由到 `CHIME_MEETINGS` 子网。

1. 配置代理服务器，向 `CHIME_MEETINGS` 子网的所有出站请求添加以下标头：

   `X-Amzn-Chime-App-Keys:` *comma-separated list of allowed AppKeys*.

   例如，`X-Amzn-Chime-App-Keys:AppKey-A,AppKey-B,AppKey-C`允许与这些应用程序关联的应用程序 AppKeys 访问子网。

Amazon Chime SDK 会检查入站 WebRTC 媒体会话连接的 `X-Amzn-Chime-App-Keys` 标头并应用以下逻辑：

1. 如果标`X-Amzn-Chime-App-Keys`头存在并且包含会话的标头 AppKey，请接受连接。

1. 如果标`X-Amzn-Chime-App-Keys`头存在但不包括会话的标头 AppKey，则以 403 错误拒绝连接。

1. 如果 `X-Amzn-Chime-App-Keys` 标头不存在，则接受连接。如果用户能够从组织网络外部访问应用程序，他们也可以访问该会话。

## 限制对特定租户的访问
<a name="limit-tenant-access"></a>

*TenantID* 是由开发人员创建的不透明标识符。请记住以下关于租户的信息IDs：
+ 不能保证租户IDs 在应用程序之间是唯一的，因此您必须 AppKey 为每个 TenantId 列表指定一个。
+ 租户IDs 对大小写敏感。根据开发人员的规定准确输入。
+ 一个组织可以限制对多个应用程序的访问权限，但只能IDs为其中一些应用程序指定租户。没有租户的应用程序IDs 可以连接到所有WebRTC媒体会话。

要将媒体会话与租户关联IDs，开发者必须先将`TenantIds`房产和租户列表添加IDs 到 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeeting.html) 或 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeetingWithAttendees.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeetingWithAttendees.html) 请求。

例如：

`CreateMeeting(..., TenantIds : [ tenantId1, tenantId2 ] )`

要在特定应用程序中限制从组织网络访问其 WebRTC 媒体会话，执行以下操作：

1. 按照[限制对特定应用程序的访问](#limit-app-access)中的步骤操作。

1. 将 HTTPS 代理服务器配置为在出站连接上添加 `X-Amzn-Chime-Tenants` 标头。包括 AppKeys 和租户的列表IDs，分隔如以下示例所示：`X-Amzn-Chime-Tenants: AppKey-A:tenantId-A-1,tenantId-A-2;AppKey-B:tenantId-B-1,tenantId-B-2`

Amazon Chime SDK 会检查入站 WebRTC 媒体会话连接的 `X-Amzn-Chime-Tenants` 标头并应用以下逻辑：
+ 如果标头包含该会话的 `AppKey:tenantId`，则接受连接。
+ 如果标头包含会话的 `AppKey`，但与 `tenantId` 不匹配，则以 403 错误拒绝连接。
+ 如果标头*不*包含会话的 `AppKey`，则接受连接。
+ 如果标头包含会话 `AppKey`，但会话并无至少一个受允许的 `tenantId`，则以 403 错误拒绝连接。这可能是开发人员的错误。
+ 如果标头不存在，则接受连接。如果用户能够从组织网络外部访问应用程序，他们也可以访问所有会话。

## HTTPS 标头示例
<a name="header-examples"></a>

以下示例显示了在 HTTPS 标头IDs 中使用 AppKeys 和租户的一些方法。

**一个应用程序只有一个租户**  
`X-Amzn-Chime-App-Keys: AppKey`  
`X-Amzn-Chime-Tenants: AppKey:orgId`  
用户只能在指定应用程序中访问组织的 WebRTC 媒体会话。已阻止所有其他的应用程序。

**一个应用程序有两个租户**  
`X-Amzn-Chime-App-Keys: AppKey`  
`X-Amzn-Chime-Tenants: AppKey:engineeringId,salesId`  
用户只能在指定应用程序中访问工程和销售的媒体会话。已阻止所有其他的应用程序。

**两个应用程序，一个仅限租户使用**  
`X-Amzn-Chime-App-Keys: AppKey1,AppKey2`  
`X-Amzn-Chime-Tenants: AppKey1:orgId`  
用户只能在应用程序 1 中访问组织的媒体会话，而在应用程序 2 中可以访问任何会话。已阻止所有其他的应用程序。