

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 AWS KMS 金鑰啟用物件層級伺服器端加密
<a name="using-kms-keys-for-encryption"></a>

媒體擷取管道和媒體串連管道可以使用 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 呼叫。媒體串連管道將使用相關聯媒體擷取管道的伺服器端加密參數。

若要使用客戶受管金鑰為個別物件啟用 SSE AWS KMS （物件層級 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` 參數指定 IAM 角色來存取 AWS KMS 金鑰和目的地 Amazon S3 儲存貯體。

1. 或者，您可以使用 `SseAwsKeyManagementParams`結構中的 `AwsKmsEncryptionContext` 參數來指定要使用的加密內容，以及增強安全性的 AWS KMS 金鑰成品。

**注意**  
`AwsKmsKeyId` 和 `SinkIamRoleArn` 參數是相互依存的。當兩者都存在且有效時，媒體擷取管道將擔任 角色，並將每個成品放入具有指定 AWS KMS 金鑰的指定 Amazon S3 儲存貯體接收器。[CreateMediaConcatenationPipeline](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaConcatenationPipeline.html) API 呼叫沒有新參數，但如果指定，將使用上述參數。如果您打算串連成品，請確定您的資源組態已如下[Configuration](#using-kms-keys-for-encryption-config)節所述進行設定，並且會隨著時間持續存在。

## Configuration
<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 角色`SinkIamRoleArn`執行您從呼叫 IAM 身分預期的相同動作集。您可以將下列主體新增至 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"
        }
    }
}
```

## 媒體串連實作
<a name="media-concatenation-implementatoin"></a>

如果您打算在媒體擷取後使用媒體串連管道，請參閱 [建置 Amazon Chime SDK 媒體串連管道](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>/*",
    }
    ...
}
...
```