

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

# QLDB 中的串流許可
<a name="streams.perms"></a>

**重要**  
終止支援通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 終止支援為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

建立 Amazon QLDB 串流之前，您必須為 QLDB 提供指定 Amazon Kinesis Data Streams 資源的寫入許可。如果您使用受管 AWS KMS key 客戶進行 Kinesis 串流的伺服器端加密，您還必須提供 QLDB 使用指定對稱加密金鑰的許可。Kinesis Data Streams 不支援[非對稱 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)。

若要提供 QLDB 串流必要的許可，您可以讓 QLDB 擔任具有適當許可政策的 IAM 服務角色。服務角色是服務擔任的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)，可代您執行動作。IAM 管理員可以從 IAM 內建立、修改和刪除服務角色。如需詳細資訊，請參閱《*IAM 使用者指南》*中的[建立角色以委派許可權給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**注意**  
若要在請求日誌串流時將角色傳遞至 QLDB，則您必須擁有針對 IAM 角色資源執行 `iam:PassRole` 動作的許可。這是 QLDB 串流子資源的 `qldb:StreamJournalToKinesis`許可之外的額外許可。  
若要了解如何使用 IAM 控制對 QLDB 的存取，請參閱 [Amazon QLDB 如何與 IAM 搭配使用](security_iam_service-with-iam.md)。如需 QLDB 政策範例，請參閱 [Amazon QLDB 的身分型政策範例](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-stream-to-kinesis)。

在此範例中，您會建立角色，允許 QLDB 代表您將資料記錄寫入 Kinesis 資料串流。如需詳細資訊，請參閱 *IAM 使用者指南*中的[建立角色以委派許可給 AWS 服務服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

如果您是 AWS 帳戶 第一次在 中串流 QLDB 日誌，您必須先執行下列動作，以適當的政策建立 IAM 角色。或者，您可以使用 [QLDB 主控台](streams.create.md#streams.create.con)自動為您建立角色。否則，您可以選擇先前建立的角色。

**Topics**
+ [建立許可政策](#streams.perms.create-policy)
+ [建立 IAM 角色](#streams.perms.create-role)

## 建立許可政策
<a name="streams.perms.create-policy"></a>

完成下列步驟，以建立 QLDB 串流的許可政策。此範例顯示 Kinesis Data Streams 政策，授予 QLDB 將資料記錄寫入您指定的 Kinesis 資料串流的許可。如果適用，此範例也會顯示金鑰政策，允許 QLDB 使用您的對稱加密 KMS 金鑰。

如需 Kinesis Data Streams 政策的詳細資訊，請參閱《[Amazon Kinesis Data Streams 開發人員指南》中的使用 IAM 控制對 Amazon Kinesis Data Streams 資源的存取](https://docs.aws.amazon.com/streams/latest/dev/controlling-access.html)和[使用使用者產生 KMS 金鑰的許可](https://docs.aws.amazon.com/streams/latest/dev/permissions-user-key-KMS.html)。 *Amazon Kinesis * 若要進一步了解 AWS KMS 金鑰政策，請參閱《 *AWS Key Management Service 開發人員指南*》中的[在 中使用金鑰政策 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

**注意**  
您的 Kinesis 資料串流和 KMS 金鑰必須與 QLDB 總帳位於相同的 AWS 區域 和 帳戶中。

**若要使用 JSON 政策編輯器來建立政策**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在左側的導覽欄中，選擇 **Policies** (政策)。

   如果這是您第一次選擇 **Policies (政策)**，將會顯示 **Welcome to Managed Policies (歡迎使用受管政策)** 頁面。選擇 **Get Started (開始使用)**。

1. 在頁面頂端，選擇 **Create policy (建立政策)**。

1. 選擇 **JSON** 標籤。

1. 輸入 JSON 政策文件。
   + 如果您使用客戶受管 KMS 金鑰進行 Kinesis 串流的伺服器端加密，請使用下列範例政策文件。若要使用此政策，請將範例中的 *us-east-1*、*123456789012*、*kinesis-stream-name* 和 *1234abcd-12ab-34cd-56ef-1234567890ab* 取代為您自己的資訊。

     ```
     {
         "Version": "2012-10-17",
         "Statement": [
             {
                 "Sid": "QLDBStreamKinesisPermissions",
                 "Action": [ "kinesis:PutRecord*", "kinesis:DescribeStream", "kinesis:ListShards" ],
                 "Effect": "Allow",
                 "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/kinesis-stream-name"
             },
             {
                 "Sid": "QLDBStreamKMSPermission",
                 "Action": [ "kms:GenerateDataKey" ],
                 "Effect": "Allow",
                 "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
             }
         ]
     }
     ```
   + 否則，請使用下列範例政策文件。若要使用此政策，請將範例中的 *us-east-1*、*123456789012* 和 *kinesis-stream-name* 取代為您自己的資訊。

     ```
     {
         "Version": "2012-10-17",
         "Statement": [
             {
                 "Sid": "QLDBStreamKinesisPermissions",
                 "Action": [ "kinesis:PutRecord*", "kinesis:DescribeStream", "kinesis:ListShards" ],
                 "Effect": "Allow",
                 "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/kinesis-stream-name"
             }
         ]
     }
     ```

1. 選擇**檢閱政策**。
**注意**  
您可以隨時切換 **Visual editor** (視覺化編輯器) 與 **JSON** 標籤。不過，如果您進行更改或在 **Visual editor** (視覺編輯工具) 索引標籤中選擇 **Review policy** (檢閱政策)，IAM 可能會調整您的政策結構以針對視覺編輯工具進行最佳化。如需詳細資訊，請參閱 *IAM 使用者指南*中的[調整政策結構](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure)。

1. 在 **Review policy** (檢閱政策) 頁面上，為您正在建立的政策輸入選用的 **Name** (名稱) 與 **Description** (描述)。檢閱政策 **Summary** (摘要) 來查看您的政策所授予的許可。然後選擇 **Create policy (建立政策)** 來儲存您的工作。

## 建立 IAM 角色
<a name="streams.perms.create-role"></a>

為您的 QLDB 串流建立許可政策之後，您就可以建立 IAM 角色並將政策連接到該角色。

**建立 QLDB 的服務角色 (IAM 主控台）**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在 IAM 主控台的導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 對於 **Trusted entity type** (信任的實體類型)，請選擇 **AWS 服務**。

1. 針對**服務或使用案例**，選擇 **QLDB**，然後選擇 **QLDB** 使用案例。

1. 選擇**下一步**。

1. 選取您在先前步驟中建立的政策旁的方塊。

1. (選用) 設定[許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。這是進階功能，可用於服務角色，而不是服務連結的角色。

   1. 開啟**設定許可界限**區段，然後選擇**使用許可界限來控制角色許可上限**。

      IAM 包含您帳戶中 AWS 受管和客戶受管政策的清單。

   1. 選取用於許可界限的政策。

1. 選擇**下一步**。

1. 輸入角色名稱或角色名稱尾碼，以協助您識別角色的用途。
**重要**  
當您命名角色時，請注意下列事項：  
角色名稱在您的 中必須是唯一的 AWS 帳戶，而且無法依大小寫設為唯一。  
例如，不要同時建立名為 **PRODROLE** 和 **prodrole** 的角色。當角色名稱用於政策或 ARN 的一部分時，角色名稱會區分大小寫，但是當角色名稱在主控台中顯示給客戶時，例如在登入過程中，角色名稱不會區分大小寫。
因為其他實體可能會參考角色，所以在建立角色之後，就無法編輯其名稱。

1. (選用) 在**說明**中，輸入角色的說明。

1. (選用) 若要編輯使用案例和角色許可，請在**步驟 1：選取受信任的實體**或者**步驟 2：新增許可**區段中選擇**編輯**。

1. (選用) 若要協助識別、組織或搜尋角色，請將標籤新增為索引鍵值對。如需在 IAM 中使用標籤的詳細資訊，請參閱《*IAM 使用者指南*》中的[AWS Identity and Access Management 資源的標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

1. 檢閱角色，然後選擇 **Create role** (建立角色)。

下列 JSON 文件是信任政策的範例，允許 QLDB 擔任與其連接特定許可的 IAM 角色。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "qldb.amazonaws.com"
            },
            "Action": [ "sts:AssumeRole" ],
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

**注意**  
此信任政策範例示範如何使用 `aws:SourceArn`和 `aws:SourceAccount`全域條件內容索引鍵來防止*混淆代理人*問題。使用此信任政策，QLDB 只能擔任總帳帳戶中任何 QLDB `123456789012` 串流的角色`myExampleLedger`。  
如需詳細資訊，請參閱[預防跨服務混淆代理人](cross-service-confused-deputy-prevention.md)。

建立 IAM 角色後，返回 QLDB 主控台並重新整理**建立 QLDB 串流**頁面，以便找到您的新角色。