

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

# 使用密钥启用对象级服务器端加 AWS KMS 密
<a name="using-kms-keys-for-encryption"></a>

Media Capture Pipeline 和 Media Concatenation Pipeline 可以使用 AWS Key Management Service (AWS KMS) 客户托管密钥为 Amazon S3 存储桶中的单个对象启用服务器端加密 (SSE)。要对此进行配置，必须使用 [CreateMediaCapturePipeline](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html)API 调用。媒体连接管道将使用关联媒体捕获管道中的服务器端加密参数。

要使用您的 AWS KMS 客户托管密钥为单个对象（对象级 SSE）启用 SSE，您必须在 [CreateMediaCapturePipeline](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaCapturePipeline.html)API 调用`SinkIamRoleArn`期间提供`SseAwsKeyManagementParams`结构和：

1. 使用`SseAwsKeyManagementParams`结构中的`AwsKmsKeyId`参数来指定 AWS KMS 密钥。您可以使用密钥的 ID、ARN 或别名来指定密钥 ID。

1. 使用`SinkIamRoleArn`参数指定访问 AWS KMS 密钥和接收器 Amazon S3 存储桶的 IAM 角色。

1. 或者，您可以使用`SseAwsKeyManagementParams`结构中的`AwsKmsEncryptionContext`参数来指定要与密 AWS KMS 钥构件一起使用的加密上下文，以增强安全性。

**注意**  
`AwsKmsKeyId`和`SinkIamRoleArn`参数是相互依赖的。当两者都存在且有效时，Media Capture Pipeline 将担任该角色，并使用指定的密钥将每个项目放入指定的 Amazon S3 存储桶接收器中。 AWS KMS [CreateMediaConcatenationPipeline](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaConcatenationPipeline.html)API 调用没有新参数，但如果指定了上述参数，则会使用上述参数。如果您计划连接工件，请确保您的资源配置按以下[配置](#using-kms-keys-for-encryption-config)部分所述进行设置，并且随着时间的推移保持不变。

## 配置
<a name="using-kms-keys-for-encryption-config"></a>

`SinkIamRoleArn`必须拥有与委托人相同的权限和访问权限才能将项目放入 Amazon S3 存储桶。有关 Amazon S3 存储桶中预期的默认权限的更多信息，请参阅为 Amazon [Chime SDK 媒体捕获管道创建 Amazon S3 存储桶](https://docs.aws.amazon.com/chime-sdk/latest/dg/create-s3-bucket.html)。要为单个对象启用 SSE，您的 Amazon S3 存储桶必须允许使用指定的 IAM 角色执行您期望从调用 IAM 身份执行的相同操作集。`SinkIamRoleArn`您可以通过在 Amazon S3 存储桶权限策略中添加以下委托人来实现这一目标。

```
...
"Principal": {
    ...
    "AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>;:role/<SINK_IAM_ROLE_NAME>"
    ...
},
...
```

`AwsKmsKeyId`应指向允许执行的`SinkIamRoleArn`密钥`GenerateDataKey`。如果要使用 Media Concatenation Pipeline，则 AWS KMS 密钥还应允许使用该操作。`Decrypt`请参阅以下示例。

**注意**  
资源设置为使用通配符`“*”`，在这种 AWS KMS 密钥策略的上下文中，通配符表示 “自身”。

```
{
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>:role/<YOUR_CUSTOMER_ROLE_ID>"
    },
    "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
    ],
    "Resource": "*"
}
```

该`SinkIamRoleArn`角色必须具有信任关系，允许服务承担该角色。请参阅以下示例。

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": "mediapipelines.chime.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "<YOUR_ACCOUNT_ID>"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:chime:*:<YOUR_ACCOUNT_ID>:*"
        }
    }
}
```

媒体捕获管道`SinkIamRoleArn`应具有以下最低权限策略。请参阅以下示例。

```
{
    "Effect": "Allow",
    "Action": "kms:GenerateDataKey",
    "Resource": "arn:aws:kms:<KMS_KEY_REGION>:<KMS_KEY_ACCOUNT_ID>:key/<MS_KEY_ID>",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "<YOUR_ACCOUNT_ID>"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:chime:*:<YOUR_ACCOUNT_ID>:*"
        }
    }
},
{
    "Effect": "Allow",
    "Action": ["s3:PutObject", "s3:PutObjectAcl"],
    "Resource": "arn:aws:s3:::<YOUR_DEDICATED_KMS_BUCKET_ID>/*",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "<YOUR_ACCOUNT_ID>"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:chime:*:<YOUR_ACCOUNT_ID>:*"
        }
    }
}
```

此外，必须允许呼叫者`SinkIamRoleArn`进入该服务。如果呼叫者没有此类权限，则应明确添加该权限。请参阅以下示例。

```
{
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": "<SINK_IAM_ROLE_ARN>",
    "Condition": {
        "ArnLike": {
            "iam:AssociatedResourceArn": "arn:aws:chime:*:<YOUR_ACCOUNT_ID>:media-pipeline/*"
        },
        "StringEquals": {
            "iam:PassedToService": "mediapipelines.chime.amazonaws.com"
        }
    }
}
```

## 媒体串联实现
<a name="media-concatenation-implementatoin"></a>

如果您计划在 Media Captenation Pipeline 之后使用媒体连接管道，请参阅[构建 Amazon Chime 软件开发工具包媒体连接管道](create-concat-pipe-steps.md)以了解所需的权限。要使管道使用对象级 SSE 的 AWS KMS 密钥，必须扩展密 AWS KMS 钥和 Amazon S3 存储桶的`SinkIamRoleArn`权限（允许的操作）。请参阅以下示例。

```
...
{
    ...
    {
        ...
        "Action": ["kms:GenerateDataKey","kms:Decrypt"]
        "Resource": "arn:aws:kms:<KMS_KEY_REGION>:<KMS_KEY_ACCOUNT_ID>:key/<KMS_KEY_ID>",
        ...
    }
    ...
    {
        "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket"],
        "Resource": "arn:aws:s3:::<YOUR_DEDICATED_KMS_BUCKET_ID>/*",
    }
    ...
}
...
```