

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

# 使用使用者產生之 KMS 金鑰的許可
<a name="permissions-user-key-KMS"></a>

在搭配使用者產生的 KMS 金鑰使用伺服器端加密之前，您必須設定 AWS KMS 金鑰政策，以允許加密串流，以及加密和解密串流記錄。如需 AWS KMS 許可的範例和詳細資訊，請參閱 [AWS KMS API 許可：動作和資源參考](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html)。

**注意**  
使用預設服務金鑰進行加密，不需要應用自訂 IAM 許可。

欲使用由使用者產生的 KMS 主金鑰之前，請確保您的 Kinesis 串流生產者及取用者 (IAM 委託人) 為 KMS 主金鑰政策中的使用者。否則串流的寫入及讀取將會失敗，最終可能造成資料遺失、延遲處理或應用程式故障。您可使用 IAM 政策管理 KMS 金鑰的許可。如需詳細資訊，請參閱[搭配 AWS KMS 使用 IAM 政策](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)。

## Kinesis Data Streams 加密內容
<a name="sse-kms-encryption-context"></a>

當 Amazon Kinesis Data Streams 代表您呼叫 AWS KMS 時，它會將加密內容傳遞至 AWS KMS ，以做為金鑰政策和授權中的授權條件。Kinesis Data Streams 會在所有 AWS KMS 呼叫中使用串流 ARN 做為加密內容。

```
"encryptionContext": {
    "aws:kinesis:arn": "arn:aws:kinesis:{{region}}:{{account-id}}:stream/{{stream-name}}"
}
```

您可以使用加密內容來識別 KMS 金鑰在稽核記錄和日誌中的使用情況。它也會以純文字顯示在日誌中，例如 AWS CloudTrail。

若要將 KMS 金鑰的使用限制在特定串流的 Kinesis Data Streams 請求，請使用 KMS 金鑰政策或 IAM 政策中的 `kms:EncryptionContext:aws:kinesis:arn`條件金鑰。

## 範例生產者許可
<a name="example-producer-permissions"></a>

您的 Kinesis 串流生產者必須具備 `kms:GenerateDataKey` 許可。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "kms:GenerateDataKey"
        ],
        "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    {
        "Effect": "Allow",
        "Action": [
            "kinesis:PutRecord",
            "kinesis:PutRecords"
        ],
        "Resource": "arn:aws:kinesis:*:123456789012:MyStream"
    }
  ]
}
```

------

## 範例取用者許可
<a name="example-consumer-permissions"></a>

您的 Kinesis 串流取用者必須具備 `kms:Decrypt` 許可。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    {
        "Effect": "Allow",
        "Action": [
            "kinesis:GetRecords",
            "kinesis:DescribeStream"
        ],
        "Resource": "arn:aws:kinesis:*:123456789012:MyStream"
    }
  ]
}
```

------

Amazon Managed Service for Apache Flink 和 AWS Lambda 使用角色來取用 Kinesis 串流。請務必為這些消費者所使用的角色新增 `kms:Decrypt` 許可。

## 串流管理員許可
<a name="stream-administrator-permissions"></a>

Kinesis 串流管理員必須已獲授權呼叫 `kms:List*` 和 ```kms:DescribeKey*`。