

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

# 安全性
<a name="kvswebrtc-security"></a>

云安全 AWS 是重中之重。作为 AWS 客户，您将受益于专为满足大多数安全敏感型组织的要求而构建的数据中心和网络架构。

安全是双方共同承担 AWS 的责任。[责任共担模式](https://aws.amazon.com/compliance/shared-responsibility-model/)将其描述为云*的* 安全性和云*中* 的安全性：
+ **云安全** — AWS 负责保护在 AWS 云中运行 AWS 服务的基础架构。 AWS 还为您提供可以安全使用的服务。作为 [AWS 合规性计划](https://aws.amazon.com/compliance/programs/)的一部分，我们的安全措施的有效性定期由第三方审计员进行测试和验证。要了解适用于 Kinesis Video Streams 的合规性计划，请参阅[合规性计划范围内的AWS 服务](https://aws.amazon.com/compliance/services-in-scope/)。
+ **云端安全**-您的责任由您使用的 AWS 服务决定。您还需要对其他因素负责，包括您的数据的敏感性、您组织的要求以及适用的法律法规。

本文档可帮助您了解在 WebRTC 中使用 Amazon Kinesis Video Streams 时如何应用分担责任模型。以下主题向您展示了如何使用 WebRTC 配置 Amazon Kinesis Video Streams，以实现您的安全和合规目标。您还将学习如何使用其他 AWS 服务，这些服务可以帮助您通过 WebRTC 资源监控和保护您的 Amazon Kinesis Video Streams。

**Topics**
+ [使用 WebRTC 资源控制对亚马逊 Kinesis Video Streams 的访问权限 AWS Identity and Access Management](kvswebrtc-how-iam.md)
+ [Amazon Kinesis Video Streams with WebRTC 的合规性验证](SERVICE-compliance.md)
+ [使用 WebRTC 实现亚马逊 Kinesis Video Streams 的弹性](kvswebrtc-disaster-recovery-resiliency.md)
+ [使用 WebRTC 实现 Kinesis Video Streams 中的基础设施安全](kvswebrtc-infrastructure-security.md)
+ [使用 WebRTC 实现亚马逊 Kinesis Video Streams 的安全最佳实践](kvswebrtc-security-best-practices.md)
+ [WebRTC 加密](kvswebrtc-encryption.md)

# 使用 WebRTC 资源控制对亚马逊 Kinesis Video Streams 的访问权限 AWS Identity and Access Management
<a name="kvswebrtc-how-iam"></a>

通过将 AWS Identity and Access Management (IAM) 与 Amazon Kinesis Video Streams 与 WebRTC 配合使用，您可以控制组织中的用户是否可以使用具有 WebRTC API 操作的特定 Kinesis Video Streams 执行任务，以及他们是否可以使用特定资源。 AWS 

有关 IAM 的更多信息，请参阅以下文档：
+ [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/)
+ [IAM 入门](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html)
+ [IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)

**Topics**
+ [策略语法](#policy-syntax)
+ [API 操作](#kinesis-using-iam-actions)
+ [亚马逊资源名称 (ARNs)](#kinesis-using-iam-arn-format)
+ [向其他 IAM 账户授予访问 Kinesis 视频流的权限](#how-iam-crossaccount)
+ [策略示例](#how-iam-policies)

## 策略语法
<a name="policy-syntax"></a>

IAM 策略是包含一个或多个语句的 JSON 文档。每个语句的结构如下：

```
{
  "Statement":[{
    "Effect":"effect",
    "Action":"action",
    "Resource":"arn",
    "Condition":{
      "condition":{
        "key":"value"
        }
      }
    }
  ]
}
```

组成语句的各个元素如下：
+ **Effect：**此 *effect* 可以是 `Allow` 或 `Deny`。在默认情况下，IAM 用户没有使用资源和 API 操作的许可，因此，所有请求均会被拒绝。显式允许将覆盖默认规则。显式拒绝将覆盖任何允许。
+ **Action**：*action* 是对其授予或拒绝权限的特定 API 操作。
+ **Resource**：受操作影响的资源。要在语句中指定资源，您需要使用其 Amazon 资源名称（ARN）。
+ **条件**：条件是可选的。它们可以用于控制策略生效的时间。

在创建和管理 IAM policy 时，您可能希望使用 [IAM Policy 生成器](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-generator)和 [IAM Policy Simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html)。

## API 操作
<a name="kinesis-using-iam-actions"></a>

在 IAM 策略语句中，您可以从支持 IAM 的任何服务中指定任何 API 操作。对于 Kinesis Video Streams with WebRTC，使用以下前缀为 API 操作命名：`kinesisvideo:`。例如：`kinesisvideo:CreateSignalingChannel`、`kinesisvideo:ListSignalingChannels` 和 `kinesisvideo:DescribeSignalingChannel`。

要在单个语句中指定多项操作，请使用逗号将它们隔开，如下所示：

```
"Action": ["kinesisvideo:action1", "kinesisvideo:action2"]
```

您也可以使用通配符指定多项操作。例如，您可以指定名称以单词“Get”开头的所有操作，如下所示：

```
"Action": "kinesisvideo:Get*"
```

要指定所有 Kinesis Video Streams 操作，请按如下方式使用星号 (\$1) 通配符：

```
"Action": "kinesisvideo:*"
```

有关 Kinesis Video Streams API 操作的完整列表，请参阅 [https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Reference.html](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Reference.html)。

## 亚马逊资源名称 (ARNs)
<a name="kinesis-using-iam-arn-format"></a>

每个 IAM 政策声明都适用于您使用其指定的资源 ARNs。

请对 Kinesis Video Streams 使用以下 ARN 资源格式：

```
arn:aws:kinesisvideo:region:account-id:channel/channel-name/code
```

例如：

```
"Resource": arn:aws:kinesisvideo::*:111122223333:channel/my-channel/0123456789012
```

您可以使用获取频道的 ARN。[DescribeSignalingChannel](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html)

## 向其他 IAM 账户授予访问 Kinesis 视频流的权限
<a name="how-iam-crossaccount"></a>

您可能需要向其他 IAM 账户授予对 Kinesis Video Streams with WebRTC 信令通道执行操作的权限。服务角色是由一项服务担任、代表您执行操作的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

## 策略示例
<a name="how-iam-policies"></a>

以下策略示例演示如何控制用户对 Kinesis Video Streams with WebRTC 通道的访问。

**Example 1：允许用户从任何信令通道获取数据**  
此策略允许用户或组对任何 `DescribeSignalingChannel` 信令通道执行 `GetSignalingChannelEndpoint`、`ListSignalingChannels` 和 `ListTagsForResource` 操作。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:Describe*",
                "kinesisvideo:Get*",
                "kinesisvideo:List*"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example 2：允许用户创建信令通道**  
此策略允许用户或组执行 `CreateSignalingChannel` 操作。  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:CreateSignalingChannel"          
            ],
            "Resource": "*"
        }
    ]
}
```

**Example 3：允许用户访问所有 Kinesis Video Streams 和 Kinesis Video Streams with WebRTC 的资源**  
此策略允许用户或组对任何资源执行任何 Kinesis Video Streams 操作。此策略适用于管理员。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesisvideo:*",
            "Resource": "*"
        }
    ]
}
```

**Example 4：允许用户从特定信令通道获取数据**  
此策略允许用户或组从特定信令通道获取数据。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesisvideo:DescribeSignalingChannel",
            "Resource": "arn:aws:kinesisvideo:us-west-2:123456789012:channel/channel_name/0123456789012"
        }
    ]
}
```

# Amazon Kinesis Video Streams with WebRTC 的合规性验证
<a name="SERVICE-compliance"></a>

要了解是否属于特定合规计划的范围，请参阅AWS 服务 “[按合规计划划分的范围](https://aws.amazon.com/compliance/services-in-scope/)” ”，然后选择您感兴趣的合规计划。 AWS 服务 有关一般信息，请参阅[AWS 合规计划AWS](https://aws.amazon.com/compliance/programs/)。

您可以使用下载第三方审计报告 AWS Artifact。有关更多信息，请参阅中的 “[下载报告” 中的 “ AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)。

您在使用 AWS 服务 时的合规责任取决于您的数据的敏感性、贵公司的合规目标以及适用的法律和法规。有关您在使用时的合规责任的更多信息 AWS 服务，请参阅[AWS 安全文档](https://docs.aws.amazon.com/security/)。

# 使用 WebRTC 实现亚马逊 Kinesis Video Streams 的弹性
<a name="kvswebrtc-disaster-recovery-resiliency"></a>

 AWS 全球基础设施是围绕 AWS 区域 可用区构建的。 AWS 区域 提供多个物理分隔和隔离的可用区，这些可用区通过低延迟、高吞吐量和高度冗余的网络连接。您可以利用可用区设计和运行在可用区之间无中断地自动实现故障转移的应用程序和数据库。与传统的单个或多个数据中心基础设施相比，可用区具有更高的可用性、容错能力和可扩展性。

有关 AWS 区域 和可用区的更多信息，请参阅[AWS 全球基础设施](https://aws.amazon.com/about-aws/global-infrastructure/)。

# 使用 WebRTC 实现 Kinesis Video Streams 中的基础设施安全
<a name="kvswebrtc-infrastructure-security"></a>

作为一项托管服务，Kinesis Video Streams（包括其WebRTC功能）受 AWS 亚马逊网络[服务：](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf)安全流程概述白皮书中描述的全球网络安全程序的保护。

您可以使用 AWS 已发布的 API 调用通过网络访问 Kinesis Video Streams。客户端必须支持传输层安全性（TLS）1.2 或更高版本。我们建议使用 TLS 1.3 或更高版本。客户端还必须支持具有完全向前保密（PFS）的密码套件，例如 Ephemeral Diffie-Hellman（DHE）或 Elliptic Curve Ephemeral Diffie-Hellman（ECDHE）。大多数现代系统（如 Java 7 及更高版本）都支持这些模式。

此外，必须使用访问密钥 ID 和与 IAM 主体关联的秘密访问密钥来对请求进行签名。或者，您可以使用 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html)（AWS STS）生成临时安全凭证来对请求进行签名。

# 使用 WebRTC 实现亚马逊 Kinesis Video Streams 的安全最佳实践
<a name="kvswebrtc-security-best-practices"></a>

Amazon Kinesis Video Streams（包含其 WebRTC 功能）提供了您在开发和实施自己的安全策略时需要考虑的许多安全功能。以下最佳实践是一般指导原则，并不代表完整安全解决方案。这些最佳实践可能不适合环境或不满足环境要求，请将其视为有用的考虑因素而不是惯例。

有关远程设备的安全最佳实践，请参阅[设备代理的安全最佳实践](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-DetectMetricsMessagesBestPract.html)。

## 实施最低权限访问
<a name="security-best-practices-privileges"></a>

在授予权限时，您可以决定谁获得哪些 Kinesis Video Streams 资源的哪些权限。您可以对这些资源启用希望允许的特定操作。因此，您应仅授予执行任务所需的权限。实施最低权限访问对于减小安全风险以及可能由错误或恶意意图造成的影响至关重要。

例如，向 Kinesis Video Streams 发送数据的创建者仅需要 `PutMedia`、`GetStreamingEndpoint` 和 `DescribeStream`。请勿向创建者应用程序授予所有操作 (`*`) 或其他操作（例如 `GetMedia`）的权限。

有关更多信息，请参阅 [Apply least-privilege permissions](https://docs.aws.amazon.com//IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。

## 使用 IAM 角色
<a name="security-best-practices-roles"></a>

创建者和客户端应用程序必须具有有效的凭证来访问 Kinesis 视频流。您不应将 AWS 证书直接存储在客户端应用程序或 Amazon S3 存储桶中。这些是不会自动轮换的长期凭证，如果它们受到损害，可能会对业务产生重大影响。

相反，您应该使用 IAM 角色来管理创建器和客户端应用程序的临时凭证以访问 Kinesis 视频流。在使用角色时，您不必使用长期凭证来访问其他资源。

有关更多信息，请参阅 *IAM 用户指南*中的以下主题：
+ [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)
+ [角色的常见场景：用户、应用程序和服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios.html)

## CloudTrail 用于监控 API 调用
<a name="security-best-practices-cloudtrail"></a>

带有 WebRTC 的 Kinesis Video Streams AWS CloudTrail与一项服务集成，该服务提供用户、角色或服务在使用 WebRTC 的 AWS Kinesis Video Streams 中采取的操作的记录。

使用收集的信息 CloudTrail，您可以确定使用WebRTC向Kinesis Video Streams发出的请求、发出请求的IP地址、谁提出请求、何时发出请求以及其他详细信息。

有关更多信息，请参阅 [使用记录 API 调用 AWS CloudTrail](kvswebrtc-monitoring-ct.md)。

# WebRTC 加密
<a name="kvswebrtc-encryption"></a>

端到端加密是带有 WebRTC 的 Amazon Kinesis Video Streams 的必备功能，Kinesis Video Streams 在包括信令和媒体或数据流在内的所有组件上都强制使用端到端加密。无论通信是 peer-to-peer通过 Kinesis Video Streams Video Streams TURN 端点还是中继，所有 WebRTC 通信都通过标准化加密协议进行安全加密。

使用安全 Websockets (WSS) 交换信令消息，使用数据报传输层安全 (DTLS) 对数据流进行加密，媒体流使用安全实时传输协议 (SRTP) 进行加密。