

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

# IAM 存取控制
<a name="iam-access-control"></a>

適用於 Amazon MSK 的 IAM 存取控制可讓您處理 MSK 叢集的身分驗證和授權。這樣，您就對身分驗證和授權分別使用不同的機制。例如，當用戶端嘗試寫入至您的叢集時，Amazon MSK 會使用 IAM 來檢查該用戶端是否為已驗證的身分，以及是否已獲授權可對您的叢集進行生產。

IAM 存取控制適用於 Java 和非 Java 用戶端，包括使用 Python、Go、JavaScript 和 .NET 編寫的 Kafka 用戶端。非 Java 用戶端的 IAM 存取控制適用於 Kafka 2.7.1 版或更新版本的 MSK 叢集。

為了讓 IAM 存取控制得以運作，Amazon MSK 會對 Apache Kafka 的原始程式碼進行輕微修改。這些修改不會對您的 Apache Kafka 使用產生明顯差異。Amazon MSK 會記錄存取事件以便您稽核。

您可以針對使用 IAM 存取控制的 MSK 叢集調用 Apache Kafka ACL API。不過，Apache Kafka ACLs不會影響 IAM 身分的授權。您必須使用 IAM 政策來控制 IAM 身分的存取。

**重要考量**  
當您搭配 MSK 叢集使用 IAM 存取控制時，請記住下列重要考量事項：  
IAM 存取控制不適用於 Apache ZooKeeper 節點。如需有關如何控制節點存取權的詳細資訊，請參閱[控制對 Amazon MSK 叢集中 Apache ZooKeeper 節點的存取](zookeeper-security.md)。
如果您的叢集使用 IAM 存取控制，則 `allow.everyone.if.no.acl.found` Apache Kafka 設定將無作用。
您可以針對使用 IAM 存取控制的 MSK 叢集調用 Apache Kafka ACL API。不過，Apache Kafka ACLs不會影響 IAM 身分的授權。您必須使用 IAM 政策來控制 IAM 身分的存取。

# Amazon MSK 的 IAM 存取控制運作方式
<a name="how-to-use-iam-access-control"></a>

若要使用 Amazon MSK 的 IAM 存取控制，請執行下列步驟，這些主題中會詳細說明這些步驟：
+ [建立使用 IAM 存取控制的 Amazon MSK 叢集](create-iam-access-control-cluster-in-console.md) 
+ [設定 IAM 存取控制的用戶端](configure-clients-for-iam-access-control.md)
+ [建立 IAM 角色的授權政策](create-iam-access-control-policies.md)
+ [取得 IAM 存取控制的引導代理程式](get-bootstrap-brokers-for-iam.md)

# 建立使用 IAM 存取控制的 Amazon MSK 叢集
<a name="create-iam-access-control-cluster-in-console"></a>

本節說明如何使用 AWS 管理主控台、 API 或 AWS CLI 來建立使用 IAM 存取控制的 Amazon MSK 叢集。如需有關如何啟用現有叢集的 IAM 存取控制的資訊，請參閱[更新 Amazon MSK 叢集的安全設定](msk-update-security.md)。

**使用 AWS 管理主控台 建立使用 IAM 存取控制的叢集**

1. 開啟位於 [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/) 的 Amazon MSK 主控台。

1. 選擇 **Create Cluster** (建立叢集)。

1. 選擇**使用自訂設定建立叢集**。

1. 在**身分驗證**區段中，選擇 **IAM 存取控制**。

1. 完成其餘工作流程以建立叢集。

**使用 API 或 AWS CLI 建立使用 IAM 存取控制的叢集**
+ 若要建立啟用 IAM 存取控制的叢集，請使用 [CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster) API 或 [create-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/create-cluster.html) CLI 命令，並為 `ClientAuthentication` 參數傳遞下列 JSON：`"ClientAuthentication": { "Sasl": { "Iam": { "Enabled": true } }`。

# 設定 IAM 存取控制的用戶端
<a name="configure-clients-for-iam-access-control"></a>

若要讓用戶端能夠與使用 IAM 存取控制的 MSK 叢集通訊，您可以使用下列其中一種機制：
+ 使用 SASL\$1OAUTHBEARER 機制的非 Java 用戶端組態
+ 使用 SASL\$1OAUTHBEARER 機制或 AWS\$1MSK\$1IAM 機制的 Java 用戶端組態

## 使用 SASL\$1OAUTHBEARER 機制來設定 IAM
<a name="configure-clients-for-iam-access-control-sasl-oauthbearer"></a>

1. 使用下列 Python Kafka 用戶端範例編輯 client.properties 組態檔案。其他語言的組態變更也與其類似。

   ```
   from kafka import KafkaProducer
   from kafka.errors import KafkaError
   from kafka.sasl.oauth import AbstractTokenProvider
   import socket
   import time
   from aws_msk_iam_sasl_signer import MSKAuthTokenProvider
   
   class MSKTokenProvider():
       def token(self):
           token, _ = MSKAuthTokenProvider.generate_auth_token('<my AWS 區域>')
           return token
   
   tp = MSKTokenProvider()
   
   producer = KafkaProducer(
       bootstrap_servers='<myBootstrapString>',
       security_protocol='SASL_SSL',
       sasl_mechanism='OAUTHBEARER',
       sasl_oauth_token_provider=tp,
       client_id=socket.gethostname(),
   )
   
   topic = "<my-topic>"
   while True:
       try:
           inp=input(">")
           producer.send(topic, inp.encode())
           producer.flush()
           print("Produced!")
       except Exception:
           print("Failed to send message:", e)
   
   producer.close()
   ```

1. 下載所選組態語言的協助程式庫，並遵循該語言程式庫首頁*入門*一節中的指示。
   + JavaScript：[https://github.com/aws/aws-msk-iam-sasl-signer-js\$1getting-started](https://github.com/aws/aws-msk-iam-sasl-signer-js#getting-started)
   + Python：[https://github.com/aws/aws-msk-iam-sasl-signer-python\$1get-started](https://github.com/aws/aws-msk-iam-sasl-signer-python#get-started)
   + Go：[https://github.com/aws/aws-msk-iam-sasl-signer-go\$1getting-started](https://github.com/aws/aws-msk-iam-sasl-signer-go#getting-started)
   + .NET：[https://github.com/aws/aws-msk-iam-sasl-signer-net\$1getting-started](https://github.com/aws/aws-msk-iam-sasl-signer-net#getting-started)
   + JAVA：可透過 [https://github.com/aws/aws-msk-iam-auth/releases](https://github.com/aws/aws-msk-iam-auth/releases) jar 檔案獲得 Java 的 SASL\$1OAUTHBEARE 支援

## 使用 MSK 自訂 AWS\$1MSK\$1IAM 機制來設定 IAM
<a name="configure-clients-for-iam-access-control-msk-iam"></a>

1. 將以下內容新增到 `client.properties` 檔案。使用用戶端信任存放區檔案的完整路徑取代 *<PATH\$1TO\$1TRUST\$1STORE\$1FILE>*。
**注意**  
如果您不想使用特定憑證，可以從 `client.properties` 檔案中移除 `ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>`。如果您沒有為 `ssl.truststore.location` 指定值，Java 程序會使用預設憑證。

   ```
   ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>
   security.protocol=SASL_SSL
   sasl.mechanism=AWS_MSK_IAM
   sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;
   sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
   ```

   若要使用您為 AWS 登入資料建立的具名設定檔，`awsProfileName="your profile name";`請在用戶端組態檔案中包含 。如需具名設定檔的相關資訊，請參閱 AWS CLI 文件中的[具名設定檔](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)。

1. 下載最新的穩定版 [aws-msk-iam-auth](https://github.com/aws/aws-msk-iam-auth/releases) JAR 文件，並將其放置在類路徑中。如果您使用 Maven，請新增以下依賴項，根據需要調整版本號：

   ```
   <dependency>
       <groupId>software.amazon.msk</groupId>
       <artifactId>aws-msk-iam-auth</artifactId>
       <version>1.0.0</version>
   </dependency>
   ```

Amazon MSK 用戶端外掛程式已在 Apache 2.0 授權下開放原始碼。

# 建立 IAM 角色的授權政策
<a name="create-iam-access-control-policies"></a>

將授權政策連接至對應用戶端的 IAM 角色。在授權政策中，您可以指定角色要允許或拒絕的動作。如果您的用戶端位於 Amazon EC2 執行個體上，請將授權政策與該 Amazon EC2 執行個體的 IAM 角色建立關聯。或者，您可以將用戶端設定為使用命名設定檔，然後將授權政策與該命名設定檔的角色建立關聯。[設定 IAM 存取控制的用戶端](configure-clients-for-iam-access-control.md) 說明如何設定用戶端以使用命名設定檔。

如需有關建立 IAM 政策的詳細資訊，請參閱[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

以下是名為 MyTestCluster 之叢集的授權政策範例。若要了解 `Action` 和 `Resource` 元素的語意，請參閱[IAM 授權政策動作和資源的語意](kafka-actions.md)。

**重要**  
您對 IAM 政策所做的變更會立即反映在 IAM API 與 AWS CLI 中。不過，政策變更可能需要一點時間才會生效。在大多數情況下，政策變更會在一分鐘內生效。有時網路狀況可能會增加延遲。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:111122223333:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:group/MyTestCluster/*"
            ]
        }
    ]
}
```

------

若要了解如何使用對應常見 Apache Kafka 使用案例的動作元素 (例如產生和使用資料) 建立政策，請參閱[用戶端授權政策的常見使用案例](iam-access-control-use-cases.md)。

對於 Kafka 2.8.0 及以上版本，**WriteDataIdempotently** 許可已棄用 ([KIP-679](https://cwiki.apache.org/confluence/display/KAFKA/KIP-679%3A+Producer+will+enable+the+strongest+delivery+guarantee+by+default))。預設為 `enable.idempotence = true`。因此，對於 Kafka 2.8.0 版和更新版本，IAM 不提供與 Kafka ACLs相同的功能。僅提供該主題的`WriteData`存取權，就無法`WriteDataIdempotently`存取該主題。當 `WriteData` 提供給 **ALL** 主題時，這不會影響案例。在這種情況下，`WriteDataIdempotently` 是允許的。這是因為 IAM 邏輯實作的差異，以及 Kafka ACLs的實作方式。此外，以冪等方式寫入主題也需要存取 `transactional-ids`。

若要解決此問題，建議您使用類似下列政策的政策。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster",
                "kafka-cluster:WriteDataIdempotently"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/TestTopic",
                "arn:aws:kafka:us-east-1:123456789012:transactional-id/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*"
            ]
        }
    ]
}
```

------

在這種情況下，`WriteData` 允許寫入 `TestTopic`，同時 `WriteDataIdempotently` 允許等冪寫入叢集。此政策也會新增對所需`transactional-id`資源的存取權。

由於 `WriteDataIdempotently` 是叢集層級許可，您無法在主題層級使用它。如果 `WriteDataIdempotently` 受限於主題層級，則此政策將無法運作。

# 取得 IAM 存取控制的引導代理程式
<a name="get-bootstrap-brokers-for-iam"></a>

請參閱 [取得 Amazon MSK 叢集的引導代理程式](msk-get-bootstrap-brokers.md)。

# IAM 授權政策動作和資源的語意
<a name="kafka-actions"></a>

**注意**  
對於執行 Apache Kafka 3.8 版或更新版本的叢集，IAM 存取控制支援 WriteTxnMarkers API 來終止交易。對於執行 3.8 之前 Kafka 版本的叢集，IAM 存取控制不支援內部叢集動作，包括 WriteTxnMarkers。對於這些舊版，若要終止交易，請使用 SCRAM 或 mTLS 身分驗證搭配適當的 ACLs，而非 IAM 身分驗證。

本節說明您可以在 IAM 授權政策中使用的動作和資源元素的語義。如需政策範例，請參閱 [建立 IAM 角色的授權政策](create-iam-access-control-policies.md)。

## 授權政策動作
<a name="actions"></a>

下表列出在 Amazon MSK 使用 IAM 存取控制時，可包含在授權政策中的動作。當您在授權政策中加入來自表格*動作*資料欄中的動作時，您還必須加入*必要動作*資料欄中的對應動作。


| Action | Description | 必要的動作 | 必要的資源 | 適用於無伺服器叢集 | 
| --- | --- | --- | --- | --- | 
| kafka-cluster:Connect | 准許與叢集連線並進行身分驗證。 | 無 | 叢集 | 是 | 
| kafka-cluster:DescribeCluster | 准許描述叢集的各方面，相當於 Apache Kafka 的 DESCRIBE CLUSTER ACL。 |  `kafka-cluster:Connect`  | 叢集 | 是 | 
| kafka-cluster:AlterCluster | 准許改變叢集的各方面，相當於 Apache Kafka 的 ALTER CLUSTER ACL。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeCluster`  | 叢集 | 否 | 
| kafka-cluster:DescribeClusterDynamicConfiguration | 准許描述叢集的動態組態，相當於 Apache Kafka 的 DESCRIBE\$1CONFIGS CLUSTER ACL。 |  `kafka-cluster:Connect`  | 叢集 | 否 | 
| kafka-cluster:AlterClusterDynamicConfiguration | 准許改變叢集的動態組態，相當於 Apache Kafka 的 ALTER\$1CONFIGS CLUSTER ACL。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration`  | 叢集 | 否 | 
| kafka-cluster:WriteDataIdempotently | 准許在叢集上等冪寫入資料，相當於 Apache Kafka 的 IDEMPOTENT\$1WRITE CLUSTER ACL。 |  `kafka-cluster:Connect` `kafka-cluster:WriteData`  | 叢集 | 是 | 
| kafka-cluster:CreateTopic | 准許在叢集上建立主題，相當於 Apache Kafka 的 CREATE CLUSTER/TOPIC ACL。 |  `kafka-cluster:Connect`  | 主題 | 是 | 
| kafka-cluster:DescribeTopic | 准許描述叢集上的主題，相當於 Apache Kafka 的 DESCRIBE TOPIC ACL。 |  `kafka-cluster:Connect`  | 主題 | 是 | 
| kafka-cluster:AlterTopic | 准許改變叢集上的主題，相當於 Apache Kafka 的 ALTER TOPIC ACL。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | 主題 | 是 | 
| kafka-cluster:DeleteTopic | 准許刪除叢集上的主題，相當於 Apache Kafka 的 DELETE TOPIC ACL。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | 主題 | 是 | 
| kafka-cluster:DescribeTopicDynamicConfiguration | 准許描述叢集上主題的動態組態，相當於 Apache Kafka 的 DESCRIBE\$1CONFIGS TOPIC ACL。 |  `kafka-cluster:Connect`  | 主題 | 是 | 
| kafka-cluster:AlterTopicDynamicConfiguration | 准許改變叢集上主題的動態組態，相當於 Apache Kafka 的 ALTER\$1CONFIGS TOPIC ACL。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration`  | 主題 | 是 | 
| kafka-cluster:ReadData | 准許讀取叢集上主題的資料，相當於 Apache Kafka 的 READ TOPIC ACL。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterGroup`  | 主題 | 是 | 
| kafka-cluster:WriteData | 准許寫入叢集上主題的資料，相當於 Apache Kafka 的 WRITE TOPIC ACL。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | 主題 | 是 | 
| kafka-cluster:DescribeGroup | 准許描述叢集上的群組，相當於 Apache Kafka 的 DESCRIBE GROUP ACL。 |  `kafka-cluster:Connect`  | 群組 | 是 | 
| kafka-cluster:AlterGroup | 准許加入叢集上的群組，相當於 Apache Kafka 的 READ GROUP ACL。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeGroup`  | 群組 | 是 | 
| kafka-cluster:DeleteGroup | 准許刪除叢集上的群組，相當於 Apache Kafka 的 DELETE GROUP ACL。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeGroup`  | 群組 | 是 | 
| kafka-cluster:DescribeTransactionalId | 准許描述叢集上的交易 ID，相當於 Apache Kafka 的 DESCRIBE TRANSACTIONAL\$1ID ACL。 |  `kafka-cluster:Connect`  | transactional-id | 是 | 
| kafka-cluster:AlterTransactionalId | 准許改變叢集上的交易 ID，相當於 Apache Kafka 的 WRITE TRANSACTIONAL\$1ID ACL。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTransactionalId` `kafka-cluster:WriteData`  | transactional-id | 是 | 

您可以在動作中的冒號後面使用星號 (\$1) 萬用字元任意次數。範例如下。
+ `kafka-cluster:*Topic` 代表 `kafka-cluster:CreateTopic`、`kafka-cluster:DescribeTopic`、`kafka-cluster:AlterTopic`、和 `kafka-cluster:DeleteTopic`。它不包括 `kafka-cluster:DescribeTopicDynamicConfiguration` 或 `kafka-cluster:AlterTopicDynamicConfiguration`。
+ `kafka-cluster:*` 代表所有許可。

## 授權政策資源
<a name="msk-iam-resources"></a>

下表顯示將 IAM 存取控制用於 Amazon MSK 時，可在授權政策中使用的四種資源類型。您可以從 取得叢集 Amazon Resource Name (ARN)， AWS 管理主控台 或使用 [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) API 或 [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html) AWS CLI 命令。然後，您可以使用叢集 ARN 來建構主題、群組和交易 ID ARN。若要在授權政策中指定資源，請使用該資源的 ARN。


| 資源 | ARN 格式 | 
| --- | --- | 
| 叢集 | arn:aws:kafka:region:account-id:cluster/cluster-name/cluster-uuid | 
| 主題 | arn:aws:kafka:region:account-id:topic/cluster-name/cluster-uuid/topic-name | 
| Group | arn:aws:kafka:region:account-id:group/cluster-name/cluster-uuid/group-name | 
| 交易 ID | arn:aws:kafka:region:account-id:transactional-id/cluster-name/cluster-uuid/transactional-id | 

您可以在 ARN 中的 `:cluster/`、`:topic/`、`:group/`、`:transactional-id/` 後隨時使用星號 (\$1) 萬用字元任意次數。以下是使用星號 (\$1) 萬用字元表示多種資源的範例：
+ `arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/*`：任何名為 MyTestCluster 的叢集中的所有主題，不論叢集的 UUID 為何。
+ `arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*_test`：名稱以 "\$1test" 結尾的所有主題，所屬叢集名稱是 MyTestCluster，叢集 UUID 是 abcd1234-0123-abcd-5678-1234abcd-1。
+ `arn:aws:kafka:us-east-1:0123456789012:transactional-id/MyTestCluster/*/5555abcd-1111-abcd-1234-abcd1234-1`：您帳戶中名為 MyTestCluster 的叢集的所有化身中交易 ID 為 5555abcd-1111-ABCD-1234-ABCD1234-1 的所有交易。這表示，如果您建立名為 MyTestCluster 的叢集並將其刪除，然後以相同的名稱建立另一個叢集，您可以使用此資源 ARN 來代表這兩個叢集上的相同交易 ID。但是，您無法存取已刪除的叢集。

# 用戶端授權政策的常見使用案例
<a name="iam-access-control-use-cases"></a>

下表中的第一個資料欄顯示一些常見的使用案例。若要授權用戶端執行指定的使用案例，請在用戶端的授權政策中包含該使用案例所需的動作，然後將 `Effect` 設定為 `Allow`。

如需有關 Amazon MSK 上所有 IAM 存取控制動作的相關資訊，請參閱[IAM 授權政策動作和資源的語意](kafka-actions.md)。

**注意**  
根據預設，動作會被拒絕。您必須明確允許要授權用戶端執行的每個動作。


****  

| 使用案例 | 必要的動作 | 
| --- | --- | 
| 管理員 |  `kafka-cluster:*`  | 
| 建立主題 |  `kafka-cluster:Connect` `kafka-cluster:CreateTopic`  | 
| 產生資料 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData`  | 
| 取用資料 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:DescribeGroup` `kafka-cluster:AlterGroup` `kafka-cluster:ReadData`  | 
| 等冪產生資料 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData` `kafka-cluster:WriteDataIdempotently`  | 
| 交易產生資料 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData` `kafka-cluster:DescribeTransactionalId` `kafka-cluster:AlterTransactionalId`  | 
| 說明叢集的組態 |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration`  | 
| 更新叢集的組態 |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration` `kafka-cluster:AlterClusterDynamicConfiguration`  | 
| 說明主題的組態 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration` | 
| 更新主題的組態 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration` `kafka-cluster:AlterTopicDynamicConfiguration`  | 
| 改變主題 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterTopic`  | 