View a markdown version of this page

使用启用对象级服务器端加密 AWS KMS 键 - Amazon Chime SDK

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

使用启用对象级服务器端加密 AWS KMS 键

媒体捕获管道和媒体合并管道可以使用 AWS Key Management Service (AWS KMS) 客户管理的密钥为 Amazon S3 存储桶中的单个对象启用服务器端加密 (SSE)。要对此进行配置,必须使用 CreateMediaCapturePipeline API 调用。媒体合并管道将使用关联媒体捕获管道中的服务器端加密参数。

要使用您的 AWS KMS 客户管理密钥为单个对象(对象级 SSE)启用 SSE,您必须在 CreateMediaCapturePipeline API 调用SinkIamRoleArn期间提供SseAwsKeyManagementParams结构和:

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

  2. 使用SinkIamRoleArn参数指定用于访问 AWS KMS 密钥和 Amazon S3 存储桶的 IAM 角色。

  3. 或者,您可以使用SseAwsKeyManagementParams结构中的AwsKmsEncryptionContext参数来指定加密上下文以及 AWS KMS 密钥构件以增强安全性。

注意

AwsKmsKeyIdSinkIamRoleArn参数是相互依赖的。当两者都存在且有效时,媒体捕获管道将担任该角色并使用指定密钥将每个项目放入指定的 Amazon S3 存储桶中。 AWS KMS CreateMediaConcatenationPipelineAPI 调用没有新参数,但如果指定,将使用上述参数。如果您计划串联对象,请确保您的资源配置按照下一节中的说明进行设置,并且在一配置段时间内保持不变。

配置

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

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

AwsKmsKeyId应该指向允许执行的SinkIamRoleArn密钥GenerateDataKey。如果要使用媒体串联管道,则 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" } } }

媒体串联的实现

如果您计划在 Media Capture 之后使用媒体合并管道,请参阅构建 Amazon Chime SDK 媒体串联管道以了解所需的权限。要使管道使用对象级 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>/*", } ... } ...