

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

# 開啟 MSK 佈建叢集的公有存取權
<a name="public-access"></a>

Amazon MSK 可讓您選擇開啟對執行 Apache Kafka 2.6.0 或更新版本之 MSK 佈建叢集代理程式的公開存取。基於安全性考量，您無法在建立 MSK 叢集時開啟公開存取。但是，您可以更新現有叢集使其可公開存取。您也可以建立新叢集，然後對其進行更新，使其可公開存取。

您可以開啟 MSK 叢集的公有存取，無需額外費用，但標準 AWS 資料傳輸成本適用於傳入和傳出叢集的資料傳輸。如需此定價的詳細資訊，請參閱 [Amazon EC2 隨需定價](https://aws.amazon.com/ec2/pricing/on-demand/)。

 具有雙堆疊網路類型的 Amazon MSK 佈建叢集支援 IPv4 和 IPv6 連線以進行公開存取。在叢集上啟用公有存取時，相同的 IPv6 引導字串會自動適用於預設和公有存取連線。您現有的 IPv4 引導字串將繼續用於 IPv4 連線。請注意，如果叢集上未啟用公有存取，IPv6 引導字串將不會具有公有存取功能。如需詳細資訊，請參閱設定 Amazon MSK 叢集的雙堆疊網路類型。

**注意**  
如果您使用 SASL/SCRAM 或 mTLS 存取控制方法，您必須先為叢集設定 Apache Kafka ACLs。然後，更新叢集的組態，將 `allow.everyone.if.no.acl.found` 屬性設定為 false。如需有關更新叢集組態的資訊，請參閱[中介裝置組態操作](msk-configuration-operations.md)。

若要開啟 MSK 佈建叢集的公有存取權，請確定叢集符合下列所有條件：
+ 與叢集相關聯的子網路必須是公開的。每個公有子網路都有與其相關聯的公有 IPv4 地址，公有 IPv4 地址的價格如 [Amazon VPC 定價頁面](https://aws.amazon.com/vpc/pricing/)所示。這表示子網路必須具有相關聯的路由表，並連接網際網路閘道。如需有關如何建立和連接網際網路閘道的資訊，請參閱《*Amazon* [VPC 使用者指南》中的使用網際網路閘道啟用 VPC 網際網路存取](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)。
+ 未經身分驗證的存取控制必須關閉，且必須開啟下列至少其中一個存取控制方法：SASL/IAM、SASL/SCRAM、mTLS。如需有關如何更新叢集存取控制方法的詳細資訊，請參閱[更新 Amazon MSK 叢集的安全設定](msk-update-security.md)。
+ 必須開啟叢集內的加密。建立叢集時，預設為「開啟」。對於建立時已關閉的叢集，無法開啟叢集內加密功能。因此，對於在叢集內加密關閉的情況下建立的叢集，無法開啟公開存取。
+ 代理程式和用戶端之間的純文字流量必須關閉。如需有關如何在此項開啟時將其關閉的詳細資訊，請參閱[更新 Amazon MSK 叢集的安全設定](msk-update-security.md)。
+ 如果您使用的是 IAM 存取控制，而且想要套用授權政策或更新您的授權政策，請參閱 [IAM 存取控制](iam-access-control.md)。如需有關 Apache Kafka ACL 的詳細資訊，請參閱 [Apache Kafka ACL](msk-acls.md)。

確保 MSK 叢集符合上述條件後，您可以使用 AWS 管理主控台 AWS CLI、 或 Amazon MSK API 來開啟公有存取。開啟對叢集的公開存取後，您可以為其取得公用引導代理程式字串。如需有關取得叢集引導代理程式的詳細資訊，請參閱[取得 Amazon MSK 叢集的引導代理程式](msk-get-bootstrap-brokers.md)。

**重要**  
除了開啟公開存取之外，請確定叢集的安全群組具有傳入 TCP 規則，允許從 IP 地址進行公開存取。建議您盡可能嚴格設定這些規則。如需有關安全群組和傳入規則的詳細資訊，請參閱《Amazon VPC 使用者指南》中的 [VPC 的安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。如需連接埠號碼，請參閱[連接埠資訊](port-info.md)。如需有關變更叢集安全群組的說明，請參閱[變更 Amazon MSK 叢集的安全群組](change-security-group.md)。

**注意**  
如果您使用下列指示開啟公開存取，但仍無法存取該叢集，請參閱[無法存取已開啟公開存取的叢集](troubleshooting.md#public-access-issues)。

**使用主控台開啟公開存取**

1. 登入 AWS 管理主控台，並在 [https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/)：// 開啟 Amazon MSK 主控台。

1. 在叢集清單中，選擇您要開啟公開存取的叢集。

1. 選擇**屬性**索引標籤，然後尋找**網路設定**區段。

1. 選擇**編輯公開存取**。

**使用 開啟公有存取 AWS CLI**

1. 執行下列 AWS CLI 命令，將 *ClusterArn* 和 *Current-Cluster-Version* 取代為 ARN 和目前版本的叢集。若要尋找叢集的目前版本，請使用 [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) 操作或 [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html) AWS CLI 命令。範例版本為`KTVPDKIKX0DER`。

   ```
   aws kafka update-connectivity --cluster-arn ClusterArn --current-version Current-Cluster-Version --connectivity-info '{"PublicAccess": {"Type": "SERVICE_PROVIDED_EIPS"}}'
   ```

   此 `update-connectivity` 命令的輸出如以下 JSON 範例所示。

   ```
   {
       "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2",
       "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"
   }
   ```
**注意**  
若要關閉公有存取，請使用類似的 AWS CLI 命令，但請改用下列連線資訊：  

   ```
   '{"PublicAccess": {"Type": "DISABLED"}}'
   ```

1. 如要取得 `update-connectivity` 操作的結果，請執行下列命令，使用您在 `update-connectivity` 命令輸出中取得的 ARN 取代 *ClusterOperationArn*。

   ```
   aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn
   ```

   此 `describe-cluster-operation` 命令的輸出如以下 JSON 範例所示。

   ```
   {
       "ClusterOperationInfo": {
           "ClientRequestId": "982168a3-939f-11e9-8a62-538df00285db",
           "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2",
           "CreationTime": "2019-06-20T21:08:57.735Z",
           "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef",
           "OperationState": "UPDATE_COMPLETE",
           "OperationType": "UPDATE_CONNECTIVITY",
           "SourceClusterInfo": {
               "ConnectivityInfo": {
                   "PublicAccess": {
                       "Type": "DISABLED"
                   }
               }
           },
           "TargetClusterInfo": {
               "ConnectivityInfo": {
                   "PublicAccess": {
                       "Type": "SERVICE_PROVIDED_EIPS"
                   }
               }
           }
       }
   }
   ```

   如果 `OperationState` 具有值 `UPDATE_IN_PROGRESS`，請稍候一段時間，然後再次執行 `describe-cluster-operation` 命令。

**使用 Amazon MSK API 開啟公開存取**
+ 若要使用 API 來開啟或關閉對叢集的公開存取，請參閱 [UpdateConnectivity](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-connectivity.html#UpdateConnectivity)。

**注意**  
基於安全考量，Amazon MSK 不允許公開存取 Apache ZooKeeper 或 KRaft 控制器節點。