You need to upgrade the Pulsar cluster to the following minimum versions (
2.9.5.2, 2.10.4.4, or 3.0.0.3) in order to access this feature. If you want to turn this feature on, please submit a ticket to the support team.API Key v1 vs API Key v2
API Key v2 introduces organization-level authentication to simplify credential management and expand API key usage beyond Pulsar clusters to StreamNative Cloud APIs.Comparison
| Feature | API Key v1 | API Key v2 |
|---|---|---|
| Scope | Instance-level | Organization-level |
| Key management | Separate API keys required per instance | Single API key can be used across the organization |
| Authorization model | Instance-scoped permissions | Role-based access control (RBAC) |
| Pulsar cluster authentication | Supported | Supported |
| StreamNative Cloud API authentication | Not supported (OAuth required) | Supported |
| CLI and Terraform support for Cloud API | Not supported | Planned in upcoming release |
Key improvements in API Key v2
- Organization-level scope – Manage authentication at the organization level instead of per instance
- Simplified access management – No need to create or manage instance-specific API keys
- RBAC-based authorization – Fine-grained permissions without requiring multiple keys
- Expanded authentication coverage – API keys can be used for both Pulsar clusters and StreamNative Cloud APIs
- Future extensibility – Enables upcoming platform security and automation capabilities
Important API Key v2 keys cannot be used with Pulsar clusters that have not been upgraded to support API Key v2.
Migration considerations
- Existing API Key v1 credentials will always continue to work even after the migration.
- Organizations must be upgraded to API Key v2 before new v2 keys can be used.
- Existing clusters may require upgrades to fully support API Key v2 authentication.
Note Support for API key authentication to StreamNative Cloud APIs via snctl and the Terraform provider will be available in a future release.To create and manage API keys in StreamNative Cloud, you can use the following tools: For recommendations on using API keys, see Best Practices for Using API Keys in StreamNative Cloud.
Ownership of API keys
Each API key is associated with a specific [service account][id:service-accounts].- A best practice is to create separate service accounts associated with an API keys for each applications or use case.
- Using API keys associated with a user account is currently not supported yet.
- API keys are immutable and cannot be modified. If you need to change the permissions associated with an API key, you must delete the key and create a new one.
- Access control lists (ACLs) and role bindings are associated with principals, not with API keys. For details, see Authorization and ACLs.
-
Restric access to an application that uses an API key associated with a service account:
- For resource API keys, you can use access control lists (ACLs).
API keys
API Keys are used to control access to specific StreamNative Cloud clusters. Each Cluster API key is valid for one specific Organization. You can view the API keys of your organization by going to the Service Accounts page, and clicking on a Service Account’s name, or by usingsnctl get apikey -O your-org-name.
API keys propagate quickly after creation, usually within a few minutes. If you try to use an API key before propagation completes, authentication failures occur. Depending on workloads, you might need to wait a few minutes more and try again.
Prerequisites
Ensure your Pulsar cluster has been upgraded to the following minimum versions:- 2.9.5.2
- 2.10.4.4
- 3.0.0.3
Create an API key
- StreamNative Console
- snctl
- terraform
To create an API key for a specific service account in StreamNative Cloud Console, follow these steps.
- On the left navigation pane, click Service Accounts.
- On the Service Accounts page, select a specific service account.
You can also click New on the top-right corner and select Create API Key to create the API key for any service account.
- On the API Key page of this service account, click New API Key.
-
Specify the required attributes for the API key.
Field Description Name The name of the API key. Expiration date By default, each API key expires in 30 days. If you want it to be long-lived, you can select No expiration date.Service Account The service account you want to associate the API key with. The one selected in step 2 is auto-populated. Description (optional) The descriptive text to introduce the API key. - Click Confirm.
- Click Copy and close to copy the generated API key and save it in a safe location for future use.
Using API keys to connect to your cluster
After creating an API key in StreamNative Cloud Console, you can use it to authenticate Kafka, Pulsar, and MQTT clients.Kafka Clients
You can use API keys with SASL/PLAIN authentication to connect Kafka clients to StreamNative Cloud clusters. To configure SASL authentication on the clients:-
Configure the JAAS configuration property for each client in
producer.propertiesorconsumer.properties. The login module describes how the clients like producers and consumers can connect to the cluster. Below is an example configuration for a client for the PLAIN mechanism:Use<tenant>/<namespace>asusernameand<API KEY>inpassword. -
Configure the following properties in
producer.propertiesorconsumer.properties:
Pulsar Clients
You can use API keys with JWT authentication to connect Pulsar clients to StreamNative Cloud clusters. For configuring Pulsar clients in different languages to use API keys, you can find examples on “Build Applications > Pulsar Clients”. For more examples of configuring Pulsar clients using API keys, see JWT Authentication in Pulsar documentation.MQTT Clients
You can use API keys aspassword to connect MQTT clients to StreamNative Cloud clusters.
An example is shown below, where <username> can be any string and password is the API key.
Deleting and Revoking API Keys
- StreamNative Console
- snctl
- terraform
To delete or revoke an API key for a specific service account in StreamNative Cloud Console, follow these steps.
- On the left navigation pane, click Service Accounts.
- On the Service Accounts page, select a specific service account.
- On the API Key page of this service account, click the Ellipsis (…) icon in the row of the API key that you want to revoke/delete, and select Revoke or Delete.
- Type the API key’s name to confirm and then click Revoke or Confirm.
- Revoked API keys will be removed from their service accounts in 15 days.
- If an API key gets revoked when being used by Kafka clients, the connection will stay alive. For Pulsar clients, the connection will be terminated in 1 minute.
If an API key is deleted, it will simultaneously be revoked.