

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

# 使用 AWS Secrets Manager 访问令牌身份验证
<a name="channel-assembly-access-configuration-access-token"></a>

MediaTailor 支持 S *ecrets Manager 访问令牌身份验证*。通过 AWS Secrets Manager 访问令牌身份验证， MediaTailor使用 AWS Key Management Service (AWS KMS) 客户托管的 AWS Secrets Manager 密钥和您创建、拥有和管理的密钥来对发往您的来源的请求进行身份验证。

在本节中，我们将介绍 Secrets Manager 访问令牌身份验证的工作原理，并提供有关如何配置 Secrets Manager 访问令牌身份验证 step-by-step的信息。你可以在中使用 Secrets Manager 访问令牌身份验证， AWS 管理控制台 也可以通过编程方式使用 AWS APIs。

**Topics**
+ [配置 AWS Secrets Manager 访问令牌身份验证](channel-assembly-access-configuration-access-configuring.md)
+ [与使用 CDN 授权的 MediaPackage 端点集成](channel-assembly-access-configuration-access-token-integrating-emp-cdn-auth.md)
+ [S MediaTailor ecrets Manager 访问令牌身份验证的工作原理](channel-assembly-access-configuration-overview.md)

# 配置 AWS Secrets Manager 访问令牌身份验证
<a name="channel-assembly-access-configuration-access-configuring"></a>

要使用 AWS Secrets Manager 访问令牌身份验证时，请执行以下步骤：

1. 您[创建 AWS Key Management Service 客户管理的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

1. 您[创建了一个 AWS Secrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)。该密钥包含您的访问令牌，该令牌作为加密密钥值存储在 Secrets Manager 中。 MediaTailor 使用 AWS KMS 客户管理的密钥来解密密密钥值。

1. 您可以将 AWS Elemental MediaTailor 源位置配置为使用 Secrets Manager 访问令牌身份验证。

以下部分提供有关如何配置 AWS Secrets Manager 访问令牌身份验证的 step-by-step指导。

**Topics**
+ [步骤 1：创建 AWS KMS 对称的客户托管密钥](#channel-assembly-access-configuration-access-token-how-to-create-kms)
+ [步骤 2：创建 AWS Secrets Manager 密钥](#channel-assembly-access-configuration-access-token-how-to-create-secret)
+ [步骤 3：使用访问令牌身份验证配置 MediaTailor 源位置](#channel-assembly-access-configuration-access-token-how-to-enable-access-token-auth)

## 步骤 1：创建 AWS KMS 对称的客户托管密钥
<a name="channel-assembly-access-configuration-access-token-how-to-create-kms"></a>

您用来 AWS Secrets Manager 以存储在密钥中的形式`SecretString`存储访问令牌。使用您创建、拥有和管理的*AWS KMS 对称客户托管密钥*进行加密。`SecretString` MediaTailor 使用对称的客户托管密钥来简化对密钥的访问（通过授权），并加密和解密密密钥值。

客户托管密钥允许您执行以下任务：
+ 制定和维护关键策略
+ 建立和维护 IAM 策略和授权
+ 启用和禁用密钥策略
+ 轮换加密密钥材料
+ 添加 标签

  有关 Secrets Manager 如何使用 AWS KMS 来保护密钥的信息，请参阅《*AWS Key Management Service 开发者指南》 AWS KMS*中的 “[如何 AWS Secrets Manager 使用](https://docs.aws.amazon.com/kms/latest/developerguide/services-secrets-manager.html)” 主题。

  有关客户托管密钥的更多信息，请参阅*《AWS Key Management Service 开发人员指南》*中的[客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

**注意**  
AWS KMS 使用客户托管密钥需要支付费用有关定价的更多信息，请参阅定[AWS Key Management Service 价](https://aws.amazon.com/kms/pricing/)页面。

您可以使用 AWS 管理控制台 或以编程方式创建 AWS KMS 对称的客户托管密钥。 AWS KMS APIs

### 创建对称的客户托管密钥
<a name="channel-assembly-access-configuration-access-token-create-symmetric-key"></a>

按照*AWS Key Management Service 开发人员指南*中[创建对称客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)的步骤进行操作。

记下关键的 Amazon 资源名称 (ARN)；你需要它。[步骤 2：创建 AWS Secrets Manager 密钥](#channel-assembly-access-configuration-access-token-how-to-create-secret)

### 加密上下文
<a name="channel-assembly-access-configuration-access-token-encryption-context"></a>

*加密上下文*是一组可选的键值对，包含有关数据的其他上下文信息。

Secrets Manager 在加密和解密时包含加密[上下文](https://docs.aws.amazon.com/kms/latest/developerguide/services-secrets-manager.html#asm-encryption-context)。`SecretString`加密上下文包括机密 ARN，它将加密限制在该特定机密范围内。作为一项额外的安全措施，请代表您 MediaTailor 创建 AWS KMS 补助金。 MediaTailor 应用的[GrantConstraints](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html)操作仅允许我们解密与 S *ecrets Manager 加密*上下文中包含的机密 ARN `SecretString` 关联的 ARN。

有关 Secrets Manager 如何使用加密上下文的信息，请参阅*AWS Key Management Service 开发者指南*中的[加密上下文](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)主题。

### 设置密钥策略
<a name="channel-assembly-access-configuration-access-token-key-policy"></a>

密钥政策控制对客户托管密钥的访问。每个客户托管式密钥必须只有一个密钥策略，其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管密钥时，您可以使用默认密钥策略。有关更多信息，请参阅《*AWS Key Management Service 开发人员指南*》中的 [AWS KMS的身份验证和访问控制](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)。

要将您的客户托管密钥与您的 MediaTailor 来源位置资源一起使用，您必须向调用[CreateSourceLocation](https://docs.aws.amazon.com/mediatailor/latest/apireference/API_CreateSourceLocation.html)或使用[UpdateSourceLocation](https://docs.aws.amazon.com/mediatailor/latest/apireference/API_UpdateSourceLocation.html)以下 API 操作的 IAM 委托人授予权限：
+ `kms:CreateGrant`— 向客户托管密钥添加授权。 MediaTailor 为您的客户托管密钥创建授权，允许其使用该密钥创建或更新配置了访问令牌身份验证的来源位置。有关在中使用 Grant [s 的](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)更多信息 AWS KMS，请参阅《*AWS Key Management Service 开发者指南》。*

  这 MediaTailor 允许执行以下操作：
  + 致电`Decrypt`这样它就可以在呼叫时成功检索你的 Secrets Manager 密钥[GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html)。
  + 当源位置被删除或密钥的访问权限被撤销时，请致电`RetireGrant`取消授权。

以下是您可以为其添加的策略声明示例 MediaTailor：

```
{
        "Sid": "Enable MediaTailor Channel Assembly access token usage for the MediaTailorManagement IAM role",
        "Effect": "Allow",
        "Principal": {
        "AWS": "arn:aws:iam::account number:role/MediaTailorManagement"
    },
     "Action": "kms:CreateGrant",
     "Resource": "*",
     "Condition": {
         "StringEquals": {
             "kms:ViaService": "mediatailor.region.amazonaws.com"
        }
    }
}
```

有关在策略中指定权限以及对密钥访问进行故障排除的更多信息，请参阅*《AWS Key Management Service 开发人员指南*》[AWS KMS中的授](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)权。

## 步骤 2：创建 AWS Secrets Manager 密钥
<a name="channel-assembly-access-configuration-access-token-how-to-create-secret"></a>

使用 Secrets Manager 以 AWS KMS 客户托管密钥加密`SecretString`的形式存储您的访问令牌。 MediaTailor使用密钥来解密。`SecretString`有关 Secrets Manager 如何使用 AWS KMS 来保护密钥的信息，请参阅《*AWS Key Management Service 开发者指南》 AWS KMS*中的 “[如何 AWS Secrets Manager 使用](https://docs.aws.amazon.com/kms/latest/developerguide/services-secrets-manager.html)” 主题。

如果您使用源位置来源，并且想使用 S MediaTailor ecret AWS Elemental MediaPackage s Manager 访问令牌身份验证，请按照以下步骤操作[与使用 CDN 授权的 MediaPackage 端点集成](channel-assembly-access-configuration-access-token-integrating-emp-cdn-auth.md)。

你可以使用 Secrets Manager 创建 Secrets Manager 密钥， AWS 管理控制台 也可以通过编程方式使用 Secrets Manager APIs 创建。

### 创建密钥
<a name="channel-assembly-access-configuration-access-token-create-secret"></a>

按照*AWS Secrets Manager 用户指南*中[创建和管理密钥 AWS Secrets Manager的](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)步骤进行操作。

创建密钥时，请记住以下注意事项：
+ [KmsKeyId](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicaRegionType.html#SecretsManager-Type-ReplicaRegionType-KmsKeyId)必须是您在步骤 1 中创建的客户托管密钥的密钥 [ARN](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html)。
+ 您必须提供 [SecretString](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html#SecretsManager-CreateSecret-request-SecretString). `SecretString`应该是有效的 JSON 对象，其中包含包含访问令牌的键和值。例如，\$1” MyAccessTokenIdentifier “: “112233445566"\$1。该值的长度必须介于 8-128 个字符之间。

  使用访问令牌身份验证配置源位置时，需要指定`SecretString`密钥。 MediaTailor 使用密钥查找和检索存储在中的访问令牌`SecretString`。

  记下秘密 ARN 和密钥。`SecretString`当您将来源位置配置为使用访问令牌身份验证时，您将使用它们。

### 附加基于资源的密钥策略
<a name="channel-assembly-access-configuration-access-token-secret-policy"></a>

要允许 MediaTailor 访问密钥值，您必须将基于资源的策略附加到该密钥。有关更多信息，请参阅*AWS Secrets Manager 用户指南*中的向 [Secrets Manager 密钥附加权限策略](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)。

以下是您可以为其添加的策略声明示例 MediaTailor：

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

****  

```
{

    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "mediatailor.amazonaws.com" 
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret-name" 
        } 
    ] 

}
```

------

## 步骤 3：使用访问令牌身份验证配置 MediaTailor 源位置
<a name="channel-assembly-access-configuration-access-token-how-to-enable-access-token-auth"></a>

您可以使用 AWS 管理控制台 或以编程方式配置 Secrets Manager 访问令牌身份验证。 MediaTailor APIs

**使用 Secrets Manager 访问令牌身份验证配置源位置**

按照《*AWS Elemental MediaTailor 用户指南*》[Access configuration](channel-assembly-creating-source-locations.md#access-configuration-console)中的步骤操作。

# 与使用 CDN 授权的 MediaPackage 端点集成
<a name="channel-assembly-access-configuration-access-token-integrating-emp-cdn-auth"></a>

如果您使用 AWS Elemental MediaPackage 源位置来源，则 MediaTailor 可以与使用 CDN 授权的 MediaPackage 端点集成。

要与使用 CDN 授权的 MediaPackage 终端节点集成，请按以下步骤操作。<a name="channel-assembly-access-configuration-access-token-integrating-emp-cdn-auth-procedure"></a>

**要与集成 MediaPackage**

1. 如果您尚未完成《*AWS Elemental MediaPackage 用户指南*》中[设置 CDN 授权](https://docs.aws.amazon.com/mediapackage/latest/ug/cdn-auth-setup.html)中的步骤。

1. 完成[步骤 1：创建 AWS KMS 对称的客户托管密钥](channel-assembly-access-configuration-access-configuring.md#channel-assembly-access-configuration-access-token-how-to-create-kms)中的过程。

1. 修改您在设置 MediaPackage CDN 授权时创建的密钥。使用以下值修改密钥：
   + `KmsKeyId`使用您在中创建的客户托管密钥 ARN 更新。[步骤 1：创建 AWS KMS 对称的客户托管密钥](channel-assembly-access-configuration-access-configuring.md#channel-assembly-access-configuration-access-token-how-to-create-kms)
   + （可选）对于`SecretString`，您可以将 UUID 轮换为新值，也可以使用现有的加密密钥，前提是它是标准 JSON 格式的密钥和值对，例如`{"MediaPackageCDNIdentifier": "112233445566778899"}`。

1. 完成 [附加基于资源的密钥策略](channel-assembly-access-configuration-access-configuring.md#channel-assembly-access-configuration-access-token-secret-policy) 中的步骤。

1. 完成 [步骤 3：使用访问令牌身份验证配置 MediaTailor 源位置](channel-assembly-access-configuration-access-configuring.md#channel-assembly-access-configuration-access-token-how-to-enable-access-token-auth) 中的步骤。

# S MediaTailor ecrets Manager 访问令牌身份验证的工作原理
<a name="channel-assembly-access-configuration-overview"></a>

在创建或更新源位置以使用访问令牌身份验证后，在从您的来源请求源内容清单时，请将访问令牌 MediaTailor 包含在 HTTP 标头中。

以下是如何 MediaTailor 使用 Secrets Manager 访问令牌身份验证进行来源位置来源身份验证的概述：

1. 当您创建或更新使用访问令牌身份验证的 MediaTailor 源位置时， MediaTailor 会向 Secrets Manager 发送[DescribeSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html#SecretsManager-DescribeSecret-request-SecretId)请求以确定与该密 AWS KMS 钥关联的密钥。您在来源位置访问配置中包含机密 ARN。

1. MediaTailor 为客户管理的密钥创建[授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)，以便该密钥 MediaTailor 可以使用该密钥访问和解密存储在中的访问令牌。 SecretString拨款名称将是`MediaTailor-SourceLocation-your AWS 账户 ID-source location name`。

   您可以随时撤销对授予的访问权限，也可以取消 MediaTailor对客户托管密钥的访问权限。有关更多信息，请参阅《AWS Key Management Service API Reference》**中的 [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)。

1. 创建、更新 VOD 源或在程序中使用 VOD 源时， MediaTailor会向源位置发出 HTTP 请求，以检索与源位置中的 VOD 源关联的源内容清单。如果 VOD 源与配置了访问令牌的来源位置相关联，则请求会将访问令牌作为 HTTP 标头值。