Blog

MSK PrivateLink: Secure Kafka Connectivity and Cost

Kafka private connectivity becomes difficult at the exact moment the platform becomes useful. A single application in the same VPC as the brokers is straightforward. A shared Kafka platform serving producers, consumers, Flink jobs, connectors, and partner accounts is not. Clients need bootstrap endpoints, then they must reach the broker endpoints advertised by Kafka metadata. Security teams want private paths, while FinOps wants to know why a "private" connection now appears as multiple hourly and per-GB line items.

Amazon MSK multi-VPC private connectivity, powered by AWS PrivateLink, exists for that problem. It lets Kafka clients in different VPCs and AWS accounts connect privately to an MSK cluster while keeping traffic on the AWS network, without forcing every VPC into peering, Transit Gateway, or public bootstrap endpoints. That is valuable. It is also not a magic tunnel that erases Kafka listener design, authentication, DNS, ownership, or cost allocation.

MSK PrivateLink connectivity path from client VPC through managed VPC connection to MSK brokers.

Why Kafka private connectivity is hard

Kafka is not a single HTTP endpoint hidden behind a normal application load balancer. A client first connects to bootstrap servers, receives cluster metadata, and then opens connections to the relevant broker leaders. Apache Kafka's advertised.listeners configuration publishes the listener addresses clients should use, and the Kafka documentation notes that those addresses may differ from the bind interfaces in IaaS environments.

This creates a practical constraint: every address the client learns from Kafka metadata must be reachable from the client network. If the bootstrap path is private but advertised broker endpoints resolve to names or IPs that only work inside the cluster VPC, the client still fails. If the endpoint works for one account but not another, the root cause is often DNS, routing, or authentication rather than Kafka itself.

The usual alternatives each carry trade-offs:

  • VPC peering can work for a small number of VPCs, but it requires non-overlapping CIDRs and careful route-table management.
  • Transit Gateway centralizes routing, but it adds another network product to operate, secure, and charge back.
  • Public endpoints reduce routing work, but many regulated or internal data platforms cannot put Kafka connectivity on an internet-facing path.
  • Self-managed endpoint services give control, but the team now owns the PrivateLink service implementation, broker mapping, endpoint lifecycle, and failure behavior.

MSK PrivateLink is attractive because it packages much of this into a managed workflow. The Kafka platform still needs a connectivity contract that covers who may connect, which authentication scheme is used, how clients discover endpoints, where data flows, and how the bill is allocated.

AWS documents the feature as "multi-VPC private connectivity" for Amazon MSK. It enables Apache Kafka clients hosted in different VPCs and AWS accounts to connect to an MSK cluster through PrivateLink. AWS also states that the feature simplifies cross-account access with MSK cluster policies, allowing the cluster owner to grant other accounts permission to establish private connectivity.

That changes the network operating model. The client VPC can connect privately to the MSK cluster without broad routing between two VPCs. Overlapping IP ranges become less of a blocker than they are with peering. The MSK cluster owner can enable private connectivity for selected authentication schemes, and the client-side account can create a managed VPC connection for its clients.

The feature is especially relevant when Kafka has become a shared service:

ScenarioWhy MSK PrivateLink helpsWhat still needs design
Cross-account producer teamsEach application account can connect without full VPC peering to the cluster VPC.Account authorization, client IAM or ACL strategy, and chargeback tags.
Central platform clusterThe Kafka team can expose private connectivity as a product interface.Bootstrap distribution, DNS conventions, and support boundaries.
Overlapping CIDRsPrivateLink avoids the route-table conflict common in peering designs.Subnet and Availability Zone alignment still matter.
Security-controlled workloadsTraffic can stay on AWS private networking instead of public endpoints.Private connectivity is not a substitute for Kafka authentication and authorization.

AWS lists concrete requirements and limitations. Multi-VPC private connectivity requires Apache Kafka 2.7.1 or higher, supports IAM, TLS, and SASL/SCRAM authentication, does not support unauthenticated clusters, is not supported for t3.small, and is limited to accounts within the same AWS Region. Clients also need the same number of client subnets as cluster subnets and matching Availability Zone IDs.

Cost and routing questions to verify

The safest way to estimate MSK PrivateLink cost is to separate the cost model into layers. Amazon MSK pricing states that when private connectivity is enabled, customers pay an hourly rate for each cluster and authentication scheme that has private connectivity turned on, plus a per-GB data processing charge through private connectivity. The same MSK pricing page says customers also pay standard AWS PrivateLink charges for the Amazon MSK managed VPC connections used by clients. AWS PrivateLink pricing separately states that VPC endpoints are billed for each hour they remain provisioned in each Availability Zone, and that data processing charges apply for each GB processed through the VPC endpoint.

That means "MSK PrivateLink cost" is usually not one number. It is a sum of the MSK feature charge, the VPC endpoint charge, per-GB processing, and any standard AWS data transfer that applies nearby. Amazon MSK pricing also says broker replication traffic is not charged, while standard AWS data transfer charges apply for data transferred in and out of MSK clusters. Do not treat the broker replication rule as a blanket exemption for every client or replication path.

Private connectivity cost checklist for MSK PrivateLink projects.

Endpoint cost

Start with the fixed portion. How many clusters will enable private connectivity? How many authentication schemes will be enabled on each cluster? How many client VPCs and Availability Zones will hold managed VPC connections? One production cluster and one consumer account behave differently from dozens of application accounts across three AZs.

Then estimate the variable portion using workload traffic, not cluster size. Producer ingress, consumer egress, connector traffic, stream processing reads, migration replication, and replay jobs can all increase processed GB. AWS's MSK pricing example for multi-VPC private connectivity counts total processed throughput through private connectivity. That is the right mental model: count data paths, not only data written.

DNS and bootstrap

PrivateLink improves reachability, but Kafka clients still need correct bootstrap and broker metadata behavior. A mature rollout should define how client teams obtain bootstrap strings, which DNS names they use, whether private hosted zones are involved, and how changes are communicated. The worst version is a copied endpoint with no owner.

Kafka client teams also need the right security protocol settings. If the cluster uses IAM, SASL/SCRAM, or mTLS, the client configuration must match the listener and authentication scheme exposed through MSK private connectivity. AWS requires Kafka ACLs for SASL/SCRAM or mTLS access-control methods and points IAM users to IAM access control policies. Network privacy does not replace principal-level authorization.

Cross-account access

Cross-account access is where MSK PrivateLink earns much of its value and much of its governance complexity. The cluster owner attaches a cluster policy to allow another account to create private connectivity. The client-side account then creates the managed VPC connection and configures client permissions. That split is clean architecturally, but it needs a workflow.

At minimum, define who approves additional accounts, who owns revocation, how environments are separated, and how endpoint spend is tagged. Security teams should review both sides: the cluster policy that allows connectivity and the Kafka-level permissions that determine what connected principals can do. FinOps should review both sides because the cluster owner, endpoint owner, and application team may not be the same cost center.

MSK PrivateLink is a connectivity model for reaching an MSK service boundary from other VPCs. A VPC-native BYOC model changes the boundary itself. In a BYOC deployment, the Kafka-compatible data plane runs in the customer's cloud account and VPC, so producers and consumers can often use the same network patterns they use for internal services. That does not make PrivateLink irrelevant. It changes when it is needed.

The distinction is easier to see as a responsibility boundary:

Comparison of MSK PrivateLink and BYOC network boundaries.

With MSK, the service is managed by AWS and the client estate may be distributed across accounts. PrivateLink exposes private broker connectivity across those account and VPC boundaries. With a BYOC Kafka-compatible platform, the data plane can be placed inside the customer-controlled account boundary from the start. If the applications that need Kafka are already inside that account or connected through existing private networks, the design question shifts from "How do we privately reach the managed service VPC?" to "How do we govern an internal data plane and its storage, IAM, observability, and lifecycle?"

This is where AutoMQ enters the evaluation naturally. AutoMQ is a Kafka-compatible cloud-native streaming platform built around Shared Storage architecture: brokers are designed to be stateless while durable data is stored in object storage through its S3Stream storage layer. In AutoMQ Cloud BYOC mode, AutoMQ documentation describes resources as deployed in the user's cloud account or VPC, with data remaining in the user's VPC. For teams asking PrivateLink questions, that boundary can matter as much as broker cost because it affects who controls the network path, where data-plane resources live, and how private access aligns with existing AWS controls.

The right conclusion is not "BYOC replaces PrivateLink." If most Kafka clients live outside the managed service boundary, MSK PrivateLink is a strong managed connectivity option. If the platform strategy is to keep the Kafka data plane inside a customer-owned VPC and align it with internal IAM, network, and storage policy, compare BYOC before PrivateLink becomes a permanent dependency.

How AutoMQ fits secure AWS deployments

AutoMQ should be evaluated as an architecture option, not as a drop-in network toggle. Its useful angle for this topic is the combination of Kafka protocol compatibility, shared object-storage-backed persistence, and BYOC placement. Existing Kafka clients, Kafka Connect, and Kafka Streams remain relevant, while the deployment boundary can be arranged around a customer-controlled cloud account.

For security and platform teams, the review becomes concrete:

  • Can the data plane run in the same AWS account, VPC, or private network boundary as the applications that produce and consume events?
  • Can storage use customer-controlled object storage and encryption policies?
  • Can Kafka authentication, ACLs, and TLS/mTLS expectations be preserved?
  • Can the control path be separated from the business data path, with telemetry and operational access reviewed explicitly?
  • Does the architecture reduce the need for cross-account Kafka data paths, or does the organization still need PrivateLink for some consumers?

Those questions are more useful than a generic managed-service comparison. MSK PrivateLink solves a real access problem when Kafka is outside the client VPC. BYOC changes the placement of the Kafka service itself. In a large AWS estate, both patterns can coexist: PrivateLink for shared service exposure, BYOC for teams that need stronger data-plane ownership, and peering or Transit Gateway where routing is already standardized.

Decision checklist

Use MSK PrivateLink when the main problem is private cross-VPC or cross-account access to an existing MSK cluster, especially when overlapping CIDRs or route-table complexity make peering unattractive. It is a clean fit for central MSK platform teams that want a managed, AWS-native connectivity mechanism and can operationalize cluster policies, authentication schemes, endpoint lifecycle, and chargeback.

Revisit the architecture when the networking project is a symptom of a larger platform mismatch. If most producers and consumers are outside the cluster boundary, if PrivateLink charges grow with each additional tenant, if DNS and endpoint distribution become operational work, or if security teams want the Kafka data plane and storage fully inside a customer-controlled environment, compare the connectivity model against a VPC-native BYOC deployment.

The practical decision is not ideological. It is a map of data paths, owners, and billable meters. Draw the producer and consumer flows first. Mark every account boundary. Add authentication and DNS. Then add hourly and per-GB pricing terms. Once that map is honest, the choice between MSK PrivateLink, Transit Gateway, peering, self-managed Kafka, or AutoMQ BYOC becomes much less mysterious.

For teams evaluating Kafka-compatible BYOC architecture on AWS, the next useful step is to review AutoMQ's architecture and BYOC documentation alongside the MSK PrivateLink pricing worksheet, not after it. Network topology is not an afterthought in Kafka. It is part of the platform contract.

FAQ

Not exactly. AWS PrivateLink is the underlying AWS networking technology for private connectivity to services through VPC endpoints. Amazon MSK multi-VPC private connectivity is an MSK feature powered by PrivateLink that packages the workflow for connecting Kafka clients in other VPCs or accounts to an MSK cluster.

No. AWS states that MSK multi-VPC private connectivity supports IAM, TLS, and SASL/SCRAM and does not support unauthenticated clusters. Private networking controls reachability; Kafka authentication and authorization still control who the client is and what it can do.

Verify MSK private connectivity hourly charges per cluster and authentication scheme, MSK private connectivity data processing per GB, standard AWS PrivateLink endpoint hourly charges per AZ, PrivateLink data processing per GB, and any surrounding AWS data transfer that applies. Use current regional AWS pricing pages before publishing a cost estimate.

AWS documents MSK multi-VPC private connectivity as a single-Region feature and says it is not supported across AWS Regions. Cross-Region Kafka designs usually involve replication, separate clusters, and standard cross-region data transfer considerations.

Consider AutoMQ BYOC when the goal is not only to privately reach MSK, but to place the Kafka-compatible data plane inside the customer's cloud account and VPC. That can simplify some network boundaries for workloads already inside the same environment, while still requiring normal review of authentication, encryption, operations, and any external client access.

References

Newsletter

Subscribe for the latest on cloud-native streaming data infrastructure, product launches, technical insights, and efficiency optimizations from the AutoMQ team.

Join developers worldwide who leverage AutoMQ's Apache 2.0 licensed platform to simplify streaming data infra. No spam, just actionable content.

I'm not a robot
reCAPTCHA

Never submit confidential or sensitive data (API keys, passwords, credit card numbers, or personal identification information) through this form.