pulumi-aiven 6.30.0a1734412023__py3-none-any.whl → 6.30.0a1734637105__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pulumi-aiven might be problematic. Click here for more details.

@@ -0,0 +1,210 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from . import _utilities
16
+
17
+ __all__ = [
18
+ 'GetAlloydbomniUserResult',
19
+ 'AwaitableGetAlloydbomniUserResult',
20
+ 'get_alloydbomni_user',
21
+ 'get_alloydbomni_user_output',
22
+ ]
23
+
24
+ @pulumi.output_type
25
+ class GetAlloydbomniUserResult:
26
+ """
27
+ A collection of values returned by getAlloydbomniUser.
28
+ """
29
+ def __init__(__self__, access_cert=None, access_key=None, id=None, password=None, pg_allow_replication=None, project=None, service_name=None, type=None, username=None):
30
+ if access_cert and not isinstance(access_cert, str):
31
+ raise TypeError("Expected argument 'access_cert' to be a str")
32
+ pulumi.set(__self__, "access_cert", access_cert)
33
+ if access_key and not isinstance(access_key, str):
34
+ raise TypeError("Expected argument 'access_key' to be a str")
35
+ pulumi.set(__self__, "access_key", access_key)
36
+ if id and not isinstance(id, str):
37
+ raise TypeError("Expected argument 'id' to be a str")
38
+ pulumi.set(__self__, "id", id)
39
+ if password and not isinstance(password, str):
40
+ raise TypeError("Expected argument 'password' to be a str")
41
+ pulumi.set(__self__, "password", password)
42
+ if pg_allow_replication and not isinstance(pg_allow_replication, bool):
43
+ raise TypeError("Expected argument 'pg_allow_replication' to be a bool")
44
+ pulumi.set(__self__, "pg_allow_replication", pg_allow_replication)
45
+ if project and not isinstance(project, str):
46
+ raise TypeError("Expected argument 'project' to be a str")
47
+ pulumi.set(__self__, "project", project)
48
+ if service_name and not isinstance(service_name, str):
49
+ raise TypeError("Expected argument 'service_name' to be a str")
50
+ pulumi.set(__self__, "service_name", service_name)
51
+ if type and not isinstance(type, str):
52
+ raise TypeError("Expected argument 'type' to be a str")
53
+ pulumi.set(__self__, "type", type)
54
+ if username and not isinstance(username, str):
55
+ raise TypeError("Expected argument 'username' to be a str")
56
+ pulumi.set(__self__, "username", username)
57
+
58
+ @property
59
+ @pulumi.getter(name="accessCert")
60
+ def access_cert(self) -> str:
61
+ """
62
+ The access certificate for the servie user.
63
+ """
64
+ return pulumi.get(self, "access_cert")
65
+
66
+ @property
67
+ @pulumi.getter(name="accessKey")
68
+ def access_key(self) -> str:
69
+ """
70
+ The access certificate key for the service user.
71
+ """
72
+ return pulumi.get(self, "access_key")
73
+
74
+ @property
75
+ @pulumi.getter
76
+ def id(self) -> str:
77
+ """
78
+ The provider-assigned unique ID for this managed resource.
79
+ """
80
+ return pulumi.get(self, "id")
81
+
82
+ @property
83
+ @pulumi.getter
84
+ def password(self) -> str:
85
+ """
86
+ The password of the service user.
87
+ """
88
+ return pulumi.get(self, "password")
89
+
90
+ @property
91
+ @pulumi.getter(name="pgAllowReplication")
92
+ def pg_allow_replication(self) -> bool:
93
+ """
94
+ Allows replication. For the default avnadmin user this attribute is required and is always `true`.
95
+ """
96
+ return pulumi.get(self, "pg_allow_replication")
97
+
98
+ @property
99
+ @pulumi.getter
100
+ def project(self) -> str:
101
+ """
102
+ The name of the project this resource belongs to. To set up proper dependencies please refer to this variable as a reference. Changing this property forces recreation of the resource.
103
+ """
104
+ return pulumi.get(self, "project")
105
+
106
+ @property
107
+ @pulumi.getter(name="serviceName")
108
+ def service_name(self) -> str:
109
+ """
110
+ The name of the service that this resource belongs to. To set up proper dependencies please refer to this variable as a reference. Changing this property forces recreation of the resource.
111
+ """
112
+ return pulumi.get(self, "service_name")
113
+
114
+ @property
115
+ @pulumi.getter
116
+ def type(self) -> str:
117
+ """
118
+ The service user account type, either primary or regular.
119
+ """
120
+ return pulumi.get(self, "type")
121
+
122
+ @property
123
+ @pulumi.getter
124
+ def username(self) -> str:
125
+ """
126
+ The name of the service user for this service. To set up proper dependencies please refer to this variable as a reference. Changing this property forces recreation of the resource.
127
+ """
128
+ return pulumi.get(self, "username")
129
+
130
+
131
+ class AwaitableGetAlloydbomniUserResult(GetAlloydbomniUserResult):
132
+ # pylint: disable=using-constant-test
133
+ def __await__(self):
134
+ if False:
135
+ yield self
136
+ return GetAlloydbomniUserResult(
137
+ access_cert=self.access_cert,
138
+ access_key=self.access_key,
139
+ id=self.id,
140
+ password=self.password,
141
+ pg_allow_replication=self.pg_allow_replication,
142
+ project=self.project,
143
+ service_name=self.service_name,
144
+ type=self.type,
145
+ username=self.username)
146
+
147
+
148
+ def get_alloydbomni_user(project: Optional[str] = None,
149
+ service_name: Optional[str] = None,
150
+ username: Optional[str] = None,
151
+ opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetAlloydbomniUserResult:
152
+ """
153
+ Gets information about an Aiven for AlloyDB Omni service user.
154
+
155
+ **This resource is in the beta stage and may change without notice.** Set
156
+ the `PROVIDER_AIVEN_ENABLE_BETA` environment variable to use the resource.
157
+
158
+
159
+ :param str project: The name of the project this resource belongs to. To set up proper dependencies please refer to this variable as a reference. Changing this property forces recreation of the resource.
160
+ :param str service_name: The name of the service that this resource belongs to. To set up proper dependencies please refer to this variable as a reference. Changing this property forces recreation of the resource.
161
+ :param str username: The name of the service user for this service. To set up proper dependencies please refer to this variable as a reference. Changing this property forces recreation of the resource.
162
+ """
163
+ __args__ = dict()
164
+ __args__['project'] = project
165
+ __args__['serviceName'] = service_name
166
+ __args__['username'] = username
167
+ opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
168
+ __ret__ = pulumi.runtime.invoke('aiven:index/getAlloydbomniUser:getAlloydbomniUser', __args__, opts=opts, typ=GetAlloydbomniUserResult).value
169
+
170
+ return AwaitableGetAlloydbomniUserResult(
171
+ access_cert=pulumi.get(__ret__, 'access_cert'),
172
+ access_key=pulumi.get(__ret__, 'access_key'),
173
+ id=pulumi.get(__ret__, 'id'),
174
+ password=pulumi.get(__ret__, 'password'),
175
+ pg_allow_replication=pulumi.get(__ret__, 'pg_allow_replication'),
176
+ project=pulumi.get(__ret__, 'project'),
177
+ service_name=pulumi.get(__ret__, 'service_name'),
178
+ type=pulumi.get(__ret__, 'type'),
179
+ username=pulumi.get(__ret__, 'username'))
180
+ def get_alloydbomni_user_output(project: Optional[pulumi.Input[str]] = None,
181
+ service_name: Optional[pulumi.Input[str]] = None,
182
+ username: Optional[pulumi.Input[str]] = None,
183
+ opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetAlloydbomniUserResult]:
184
+ """
185
+ Gets information about an Aiven for AlloyDB Omni service user.
186
+
187
+ **This resource is in the beta stage and may change without notice.** Set
188
+ the `PROVIDER_AIVEN_ENABLE_BETA` environment variable to use the resource.
189
+
190
+
191
+ :param str project: The name of the project this resource belongs to. To set up proper dependencies please refer to this variable as a reference. Changing this property forces recreation of the resource.
192
+ :param str service_name: The name of the service that this resource belongs to. To set up proper dependencies please refer to this variable as a reference. Changing this property forces recreation of the resource.
193
+ :param str username: The name of the service user for this service. To set up proper dependencies please refer to this variable as a reference. Changing this property forces recreation of the resource.
194
+ """
195
+ __args__ = dict()
196
+ __args__['project'] = project
197
+ __args__['serviceName'] = service_name
198
+ __args__['username'] = username
199
+ opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
200
+ __ret__ = pulumi.runtime.invoke_output('aiven:index/getAlloydbomniUser:getAlloydbomniUser', __args__, opts=opts, typ=GetAlloydbomniUserResult)
201
+ return __ret__.apply(lambda __response__: GetAlloydbomniUserResult(
202
+ access_cert=pulumi.get(__response__, 'access_cert'),
203
+ access_key=pulumi.get(__response__, 'access_key'),
204
+ id=pulumi.get(__response__, 'id'),
205
+ password=pulumi.get(__response__, 'password'),
206
+ pg_allow_replication=pulumi.get(__response__, 'pg_allow_replication'),
207
+ project=pulumi.get(__response__, 'project'),
208
+ service_name=pulumi.get(__response__, 'service_name'),
209
+ type=pulumi.get(__response__, 'type'),
210
+ username=pulumi.get(__response__, 'username')))
@@ -256,7 +256,7 @@ class GetClickhouseResult:
256
256
  @pulumi.getter(name="serviceIntegrations")
257
257
  def service_integrations(self) -> Sequence['outputs.GetClickhouseServiceIntegrationResult']:
258
258
  """
259
- Integrations with other services. Service integrations are only applied at service creation.
259
+ Service integrations to specify when creating a service. Not applied after initial service creation
260
260
  """
261
261
  return pulumi.get(self, "service_integrations")
262
262
 
@@ -47,7 +47,7 @@ class GetExternalIdentityResult:
47
47
  @pulumi.getter(name="externalServiceName")
48
48
  def external_service_name(self) -> str:
49
49
  """
50
- The name of the external service. The possible values are `github`.
50
+ The name of the external service. The possible value is `github`.
51
51
  """
52
52
  return pulumi.get(self, "external_service_name")
53
53
 
@@ -109,7 +109,7 @@ def get_external_identity(external_service_name: Optional[str] = None,
109
109
  the `PROVIDER_AIVEN_ENABLE_BETA` environment variable to use the resource.
110
110
 
111
111
 
112
- :param str external_service_name: The name of the external service. The possible values are `github`.
112
+ :param str external_service_name: The name of the external service. The possible value is `github`.
113
113
  :param str external_user_id: The user's ID on the external service.
114
114
  :param str internal_user_id: The Aiven user ID.
115
115
  :param str organization_id: The ID of the Aiven organization that the user is part of.
@@ -140,7 +140,7 @@ def get_external_identity_output(external_service_name: Optional[pulumi.Input[st
140
140
  the `PROVIDER_AIVEN_ENABLE_BETA` environment variable to use the resource.
141
141
 
142
142
 
143
- :param str external_service_name: The name of the external service. The possible values are `github`.
143
+ :param str external_service_name: The name of the external service. The possible value is `github`.
144
144
  :param str external_user_id: The user's ID on the external service.
145
145
  :param str internal_user_id: The Aiven user ID.
146
146
  :param str organization_id: The ID of the Aiven organization that the user is part of.
@@ -71,7 +71,7 @@ class GetProjectUserResult:
71
71
  @pulumi.getter(name="memberType")
72
72
  def member_type(self) -> str:
73
73
  """
74
- Project membership type. The possible values are `admin`, `developer`, `operator`, `organization:app_users:write`, `organization:audit_logs:read`, `organization:billing:read`, `organization:billing:write`, `organization:domains:write`, `organization:groups:write`, `organization:idps:write`, `organization:network:read`, `organization:network:write`, `organization:permissions:read`, `organization:permissions:write`, `organization:projects:read`, `organization:projects:write`, `organization:users:write`, `project:audit_logs:read`, `project:integrations:read`, `project:integrations:write`, `project:networking:read`, `project:networking:write`, `project:permissions:read`, `project:services:read`, `project:services:write`, `read_only`, `role:organization:admin`, `role:services:maintenance`, `role:services:recover`, `service:configuration:write`, `service:data:write`, `service:logs:read`, `service:secrets:read` and `service:users:write`.
74
+ Project membership type. The possible values are `admin`, `developer`, `operator`, `organization:app_users:write`, `organization:audit_logs:read`, `organization:domains:write`, `organization:groups:write`, `organization:idps:write`, `organization:users:write`, `project:audit_logs:read`, `project:integrations:read`, `project:integrations:write`, `project:networking:read`, `project:networking:write`, `project:permissions:read`, `project:services:read`, `project:services:write`, `read_only`, `role:organization:admin`, `role:services:maintenance`, `role:services:recover`, `service:configuration:write`, `service:data:write`, `service:logs:read`, `service:secrets:read` and `service:users:write`.
75
75
  """
76
76
  return pulumi.get(self, "member_type")
77
77
 
@@ -27,7 +27,7 @@ class GetServiceIntegrationResult:
27
27
  """
28
28
  A collection of values returned by getServiceIntegration.
29
29
  """
30
- def __init__(__self__, clickhouse_kafka_user_configs=None, clickhouse_postgresql_user_configs=None, datadog_user_configs=None, destination_endpoint_id=None, destination_service_name=None, external_aws_cloudwatch_logs_user_configs=None, external_aws_cloudwatch_metrics_user_configs=None, external_elasticsearch_logs_user_configs=None, external_opensearch_logs_user_configs=None, flink_external_postgresql_user_configs=None, id=None, integration_id=None, integration_type=None, kafka_connect_user_configs=None, kafka_logs_user_configs=None, kafka_mirrormaker_user_configs=None, logs_user_configs=None, metrics_user_configs=None, project=None, prometheus_user_configs=None, source_endpoint_id=None, source_service_name=None):
30
+ def __init__(__self__, clickhouse_kafka_user_configs=None, clickhouse_postgresql_user_configs=None, datadog_user_configs=None, destination_endpoint_id=None, destination_service_name=None, destination_service_project=None, external_aws_cloudwatch_logs_user_configs=None, external_aws_cloudwatch_metrics_user_configs=None, external_elasticsearch_logs_user_configs=None, external_opensearch_logs_user_configs=None, flink_external_postgresql_user_configs=None, id=None, integration_id=None, integration_type=None, kafka_connect_user_configs=None, kafka_logs_user_configs=None, kafka_mirrormaker_user_configs=None, logs_user_configs=None, metrics_user_configs=None, project=None, prometheus_user_configs=None, source_endpoint_id=None, source_service_name=None, source_service_project=None):
31
31
  if clickhouse_kafka_user_configs and not isinstance(clickhouse_kafka_user_configs, list):
32
32
  raise TypeError("Expected argument 'clickhouse_kafka_user_configs' to be a list")
33
33
  pulumi.set(__self__, "clickhouse_kafka_user_configs", clickhouse_kafka_user_configs)
@@ -43,6 +43,9 @@ class GetServiceIntegrationResult:
43
43
  if destination_service_name and not isinstance(destination_service_name, str):
44
44
  raise TypeError("Expected argument 'destination_service_name' to be a str")
45
45
  pulumi.set(__self__, "destination_service_name", destination_service_name)
46
+ if destination_service_project and not isinstance(destination_service_project, str):
47
+ raise TypeError("Expected argument 'destination_service_project' to be a str")
48
+ pulumi.set(__self__, "destination_service_project", destination_service_project)
46
49
  if external_aws_cloudwatch_logs_user_configs and not isinstance(external_aws_cloudwatch_logs_user_configs, list):
47
50
  raise TypeError("Expected argument 'external_aws_cloudwatch_logs_user_configs' to be a list")
48
51
  pulumi.set(__self__, "external_aws_cloudwatch_logs_user_configs", external_aws_cloudwatch_logs_user_configs)
@@ -94,6 +97,9 @@ class GetServiceIntegrationResult:
94
97
  if source_service_name and not isinstance(source_service_name, str):
95
98
  raise TypeError("Expected argument 'source_service_name' to be a str")
96
99
  pulumi.set(__self__, "source_service_name", source_service_name)
100
+ if source_service_project and not isinstance(source_service_project, str):
101
+ raise TypeError("Expected argument 'source_service_project' to be a str")
102
+ pulumi.set(__self__, "source_service_project", source_service_project)
97
103
 
98
104
  @property
99
105
  @pulumi.getter(name="clickhouseKafkaUserConfigs")
@@ -135,6 +141,14 @@ class GetServiceIntegrationResult:
135
141
  """
136
142
  return pulumi.get(self, "destination_service_name")
137
143
 
144
+ @property
145
+ @pulumi.getter(name="destinationServiceProject")
146
+ def destination_service_project(self) -> str:
147
+ """
148
+ Destination service project name
149
+ """
150
+ return pulumi.get(self, "destination_service_project")
151
+
138
152
  @property
139
153
  @pulumi.getter(name="externalAwsCloudwatchLogsUserConfigs")
140
154
  def external_aws_cloudwatch_logs_user_configs(self) -> Sequence['outputs.GetServiceIntegrationExternalAwsCloudwatchLogsUserConfigResult']:
@@ -271,6 +285,14 @@ class GetServiceIntegrationResult:
271
285
  """
272
286
  return pulumi.get(self, "source_service_name")
273
287
 
288
+ @property
289
+ @pulumi.getter(name="sourceServiceProject")
290
+ def source_service_project(self) -> str:
291
+ """
292
+ Source service project name
293
+ """
294
+ return pulumi.get(self, "source_service_project")
295
+
274
296
 
275
297
  class AwaitableGetServiceIntegrationResult(GetServiceIntegrationResult):
276
298
  # pylint: disable=using-constant-test
@@ -283,6 +305,7 @@ class AwaitableGetServiceIntegrationResult(GetServiceIntegrationResult):
283
305
  datadog_user_configs=self.datadog_user_configs,
284
306
  destination_endpoint_id=self.destination_endpoint_id,
285
307
  destination_service_name=self.destination_service_name,
308
+ destination_service_project=self.destination_service_project,
286
309
  external_aws_cloudwatch_logs_user_configs=self.external_aws_cloudwatch_logs_user_configs,
287
310
  external_aws_cloudwatch_metrics_user_configs=self.external_aws_cloudwatch_metrics_user_configs,
288
311
  external_elasticsearch_logs_user_configs=self.external_elasticsearch_logs_user_configs,
@@ -299,7 +322,8 @@ class AwaitableGetServiceIntegrationResult(GetServiceIntegrationResult):
299
322
  project=self.project,
300
323
  prometheus_user_configs=self.prometheus_user_configs,
301
324
  source_endpoint_id=self.source_endpoint_id,
302
- source_service_name=self.source_service_name)
325
+ source_service_name=self.source_service_name,
326
+ source_service_project=self.source_service_project)
303
327
 
304
328
 
305
329
  def get_service_integration(destination_service_name: Optional[str] = None,
@@ -342,6 +366,7 @@ def get_service_integration(destination_service_name: Optional[str] = None,
342
366
  datadog_user_configs=pulumi.get(__ret__, 'datadog_user_configs'),
343
367
  destination_endpoint_id=pulumi.get(__ret__, 'destination_endpoint_id'),
344
368
  destination_service_name=pulumi.get(__ret__, 'destination_service_name'),
369
+ destination_service_project=pulumi.get(__ret__, 'destination_service_project'),
345
370
  external_aws_cloudwatch_logs_user_configs=pulumi.get(__ret__, 'external_aws_cloudwatch_logs_user_configs'),
346
371
  external_aws_cloudwatch_metrics_user_configs=pulumi.get(__ret__, 'external_aws_cloudwatch_metrics_user_configs'),
347
372
  external_elasticsearch_logs_user_configs=pulumi.get(__ret__, 'external_elasticsearch_logs_user_configs'),
@@ -358,7 +383,8 @@ def get_service_integration(destination_service_name: Optional[str] = None,
358
383
  project=pulumi.get(__ret__, 'project'),
359
384
  prometheus_user_configs=pulumi.get(__ret__, 'prometheus_user_configs'),
360
385
  source_endpoint_id=pulumi.get(__ret__, 'source_endpoint_id'),
361
- source_service_name=pulumi.get(__ret__, 'source_service_name'))
386
+ source_service_name=pulumi.get(__ret__, 'source_service_name'),
387
+ source_service_project=pulumi.get(__ret__, 'source_service_project'))
362
388
  def get_service_integration_output(destination_service_name: Optional[pulumi.Input[str]] = None,
363
389
  integration_type: Optional[pulumi.Input[str]] = None,
364
390
  project: Optional[pulumi.Input[str]] = None,
@@ -398,6 +424,7 @@ def get_service_integration_output(destination_service_name: Optional[pulumi.Inp
398
424
  datadog_user_configs=pulumi.get(__response__, 'datadog_user_configs'),
399
425
  destination_endpoint_id=pulumi.get(__response__, 'destination_endpoint_id'),
400
426
  destination_service_name=pulumi.get(__response__, 'destination_service_name'),
427
+ destination_service_project=pulumi.get(__response__, 'destination_service_project'),
401
428
  external_aws_cloudwatch_logs_user_configs=pulumi.get(__response__, 'external_aws_cloudwatch_logs_user_configs'),
402
429
  external_aws_cloudwatch_metrics_user_configs=pulumi.get(__response__, 'external_aws_cloudwatch_metrics_user_configs'),
403
430
  external_elasticsearch_logs_user_configs=pulumi.get(__response__, 'external_elasticsearch_logs_user_configs'),
@@ -414,4 +441,5 @@ def get_service_integration_output(destination_service_name: Optional[pulumi.Inp
414
441
  project=pulumi.get(__response__, 'project'),
415
442
  prometheus_user_configs=pulumi.get(__response__, 'prometheus_user_configs'),
416
443
  source_endpoint_id=pulumi.get(__response__, 'source_endpoint_id'),
417
- source_service_name=pulumi.get(__response__, 'source_service_name')))
444
+ source_service_name=pulumi.get(__response__, 'source_service_name'),
445
+ source_service_project=pulumi.get(__response__, 'source_service_project')))
pulumi_aiven/kafka_acl.py CHANGED
@@ -215,9 +215,10 @@ class KafkaAcl(pulumi.CustomResource):
215
215
  username: Optional[pulumi.Input[str]] = None,
216
216
  __props__=None):
217
217
  """
218
- Creates and manages an [access control list](https://aiven.io/docs/products/kafka/concepts/acl) (ACL) entry for an Aiven for Apache Kafka® service.
218
+ Creates and manages Aiven [access control lists](https://aiven.io/docs/products/kafka/concepts/acl) (ACLs) for an Aiven for Apache Kafka® service. ACLs control access to Kafka topics, consumer groups,
219
+ clusters, and Schema Registry.
219
220
 
220
- ACL entries grant users rights to produce, consume, and manage Kafka topics.
221
+ Aiven ACLs provide simplified topic-level control with basic permissions and wildcard support. For more advanced access control, you can use Kafka-native ACLs.
221
222
 
222
223
  ## Example Usage
223
224
 
@@ -254,9 +255,10 @@ class KafkaAcl(pulumi.CustomResource):
254
255
  args: KafkaAclArgs,
255
256
  opts: Optional[pulumi.ResourceOptions] = None):
256
257
  """
257
- Creates and manages an [access control list](https://aiven.io/docs/products/kafka/concepts/acl) (ACL) entry for an Aiven for Apache Kafka® service.
258
+ Creates and manages Aiven [access control lists](https://aiven.io/docs/products/kafka/concepts/acl) (ACLs) for an Aiven for Apache Kafka® service. ACLs control access to Kafka topics, consumer groups,
259
+ clusters, and Schema Registry.
258
260
 
259
- ACL entries grant users rights to produce, consume, and manage Kafka topics.
261
+ Aiven ACLs provide simplified topic-level control with basic permissions and wildcard support. For more advanced access control, you can use Kafka-native ACLs.
260
262
 
261
263
  ## Example Usage
262
264