

# IVS 聊天功能中的身份和访问管理
<a name="security-iam"></a>

AWS Identity and Access Management（IAM）是一项 AWS 服务，可以帮助账户管理员安全地控制对 AWS 资源的访问。请参阅《*IVS Low-Latency Streaming User Guide*》中的 [Identity and Access Management in IVS](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/security-iam.html)。

## 受众
<a name="security-iam-audience"></a>

如何使用 IAM 因您可以在 Amazon IVS 中执行的操作而异。请参阅《IVS Low-Latency Streaming User Guide**》中的 [Audience](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/security-iam.html#security-iam-audience)。

## Amazon IVS 如何与 IAM 配合使用
<a name="security-iam-how-ivs-works"></a>

在您发出 Amazon IVS API 请求之前，您必须创建一个或多个 IAM*身份*（用户、组和角色）和 IAM*策略*，然后向身份附加策略。传播权限最多需要几分钟时间；在此之前，API 请求会被拒绝。

要简要了解 Amazon IVS 如何与 IAM 结合使用，请参阅《IAM 用户指南》中的 [与 IAM 配合使用的 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)**。

## 身份
<a name="security-iam-identities"></a>

您可以创建 IAM 身份，以便为向您的 AWS 账户中的人员和进程提供身份验证。IAM 组是 IAM 用户的集合，可以将其作为一个单位进行管理。请参阅《IAM 用户指南》中的[身份（用户、组和角色）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)。

## 策略
<a name="security-iam-policies"></a>

策略是由*元素*组成的 JSON 权限策略文档。请参阅《IVS Low-Latency Streaming User Guide**》中的 [Policies](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/security-iam.html#security-iam-policies)。

Amazon IVS 聊天功能支持三个元素：
+ **操作**：Amazon IVS 聊天功能的策略操作在操作前使用 `ivschat` 前缀。例如，要授予某人使用 Amazon IVS 聊天功能 `CreateRoom` API 方法创建 Amazon IVS 聊天室的权限，您应针对此人员将 `ivschat:CreateRoom` 操作纳入其策略中。策略语句必须包含 `Action` 或 `NotAction` 元素。
+ **资源**：Amazon IVS 聊天室资源采用以下 [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 格式：

  ```
  arn:aws:ivschat:${Region}:${Account}:room/${roomId}
  ```

  例如，要在语句中指定 `VgNkEJgOVX9N` 聊天室，请使用以下 ARN：

  ```
  "Resource": "arn:aws:ivschat:us-west-2:123456789012:room/VgNkEJgOVX9N"
  ```

  无法对特定资源执行某些 Amazon IVS 聊天功能操作，例如，用于创建资源的操作。在这些情况下，您必须使用通配符 (`*`)：

  ```
  "Resource":"*"
  ```
+ **条件**：Amazon IVS 聊天功能支持部分全局条件键：`aws:RequestTag`、`aws:TagKeys` 和 `aws:ResourceTag`。

在策略中，您可以使用变量作为占位符。例如，只有在使用用户的 IAM 用户名标记 IAM 用户时，您才能为其授予访问资源的权限。请参阅 *IAM 用户指南*中的[变量和标签](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)。

Amazon IVS 提供 AWS 托管式策略，可用于向身份授予一组预配置的权限（只读或完全访问权限）。您可以选择使用托管式策略，而不是下面所示的基于身份的策略。有关详细信息，请参阅 [Managed Policies for Amazon IVS Chat](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/security-iam-awsmanpol.html)。

## 基于 Amazon IVS 标签的授权
<a name="security-iam-authorization"></a>

您可以将标签附加到 Amazon IVS 聊天功能资源，或者在请求中将标签传递给 Amazon IVS 聊天功能。要基于标签控制访问，您需要使用 `aws:ResourceTag/key-name`、`aws:RequestTag/key-name` 或 `aws:TagKeys` 条件键在策略的条件元素中提供标签信息。有关标记 Amazon IVS 聊天功能资源的更多信息，请参阅 [IVS Chat API Reference](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/Welcome.html) 中的“Tagging”。

## 角色
<a name="security-iam-roles"></a>

请参阅《IAM 用户指南》中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)和[临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。

*IAM 角色*是 AWS 账户中具有特定权限的实体。

Amazon IVS 支持使用*临时安全凭证*。您可以使用临时凭证进行联合身份登录，担任 IAM 角色或担任跨账户角色。您可以调用 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) API 操作（如 `AssumeRole` 或 `GetFederationToken`）以获取临时安全凭证。

## 特权访问和非特权访问
<a name="security-iam-privileged-access"></a>

API 资源具有特权访问权限。非特权播放访问权限可通过私有通道进行设置；请参阅 [Setting Up IVS Private Channels](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/private-channels.html)。

## 使用策略的最佳实践
<a name="security-iam-policy-best-practices"></a>

请参阅 [IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)中的 *IAM 最佳实践*。

基于身份的策略非常强大。它们确定某个人是否可以创建、访问或删除您账户中的 Amazon IVS 资源。这些操作可能会使 AWS 账户产生成本。请遵循以下建议：
+ **授予最低权限** – 创建自定义策略时，仅授予执行任务所需的许可。最开始只授予最低权限，然后根据需要授予其他权限。这样做比起一开始就授予过于宽松的权限而后再尝试收紧权限来说更为安全。具体而言，预留 `ivschat:*` 供管理员访问使用；请勿在应用程序中使用它。
+ **为敏感操作启用多重身份验证（MFA）**– 为了提高安全性，要求 IAM 用户使用 MFA 访问敏感资源或 API 操作。
+ **使用策略条件来增强安全性** – 在切实可行的范围内，定义基于身份的策略在哪些情况下允许访问资源。例如，您可编写条件来指定请求必须来自允许的 IP 地址范围。您也可以编写条件，以便仅允许指定日期或时间范围内的请求，或者要求使用 SSL 或 MFA。

## 基于身份的策略示例
<a name="security-iam-policy-examples"></a>

### 使用 Amazon IVS 控制台
<a name="security-iam-policy-examples-console"></a>

要访问 Amazon IVS 控制台，您必须具有最低权限集，以允许您列出和查看有关 AWS 账户中 Amazon IVS 聊天功能资源的详细信息。如果创建比必需的最低权限更为严格的基于身份的策略，对于附加了该策略的实体，控制台将无法按预期正常运行。为确保对 Amazon IVS 控制台的访问权限，请将以下策略附加到身份（参阅《IAM 用户指南》中的[添加和删除 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)）。

以下策略的各个部分提供了对以下内容的访问权限：
+ 所有 Amazon IVS 聊天功能 API 操作
+ 您的 Amazon IVS 聊天功能[服务限额](service-quotas.md)
+ 列出 Lambdas 并为所选 Lambda 添加权限以进行 Amazon IVS Chat 审核
+ Amazon Cloudwatch 用于获取聊天会话的指标

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": "ivschat:*",
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "servicequotas:ListServiceQuotas"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "cloudwatch:GetMetricData"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "lambda:AddPermission",
        "lambda:ListFunctions"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

## Amazon IVS Chat 基于资源的策略
<a name="security-chat-policy-examples"></a>

您必须向 Amazon IVS Chat 服务授予权限才能调用 Lambda 资源来审查消息。为此，请按照 [将基于资源的策略用于 AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)（在《AWS Lambda 开发人员指南》**）中的说明操作并填写以下指定的字段。

要控制对 Lambda 资源的访问，您可以使用基于以下前提的条件：
+ `SourceArn` – 我们的示例策略使用通配符（`*`），允许账户中的所有房间调用 Lambda。或者，您也可以在账户中指定一个房间，仅允许该房间调用 Lambda。
+ `SourceAccount` – 在以下示例策略中，AWS 账户 ID 为 `123456789012`。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Principal": {
            "Service": "ivschat.amazonaws.com"
         },
         "Action": [
            "lambda:InvokeFunction"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:lambda:us-west-2:123456789012:function:name",
         "Condition": {
            "StringEquals": {
               "AWS:SourceAccount": "123456789012"
            },
            "ArnLike": {
               "AWS:SourceArn": "arn:aws:ivschat:us-west-2:123456789012:room/*"
            }
         }
      }
   ]
}
```

------

## 问题排查
<a name="security-iam-troubleshooting"></a>

有关诊断和修复在使用 Amazon IVS 聊天功能和 IAM 时可能遇到的常见问题，请参阅《IVS Low-Latency Streaming User Guide**》中的 [ Troubleshooting](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/security-iam.html#security-iam-troubleshooting)。