You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/operate/oss_and_stack/management/security/acl.md
+10-8Lines changed: 10 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -289,19 +289,19 @@ The following is a list of command categories and their meanings:
289
289
***bitmap** - Data type: all bitmap related commands.
290
290
***blocking** - Potentially blocking the connection until released by another
291
291
command.
292
-
***bloom** - Data type: all Bloom filter related commands.
293
-
***cms** - Data type: count-min sketch related commands.
292
+
***bloom** - Data type: all Bloom filter related commands. <sup>[1](#cmd-note-1)</sup>
293
+
***cms** - Data type: count-min sketch related commands. <sup>[1](#cmd-note-1)</sup>
294
294
***connection** - Commands affecting the connection or other connections.
295
295
This includes [`AUTH`](/commands/auth), [`SELECT`](/commands/select), [`COMMAND`](/commands/command), [`CLIENT`](/commands/client), [`ECHO`](/commands/echo), [`PING`](/commands/ping), etc.
296
-
***cuckoo** - Data type: all Cuckoo filter related commands.
296
+
***cuckoo** - Data type: all Cuckoo filter related commands. <sup>[1](#cmd-note-1)</sup>
297
297
***dangerous** - Potentially dangerous commands (each should be considered with care for
298
298
various reasons). This includes [`FLUSHALL`](/commands/flushall), [`MIGRATE`](/commands/migrate), [`RESTORE`](/commands/restore), [`SORT`](/commands/sort), [`KEYS`](/commands/keys),
299
299
[`CLIENT`](/commands/client), [`DEBUG`](/commands/debug), [`INFO`](/commands/info), [`CONFIG`](/commands/config), [`SAVE`](/commands/save), [`REPLICAOF`](/commands/replicaof), etc.
300
300
***fast** - Fast O(1) commands. May loop on the number of arguments, but not the number of elements in the key.
301
301
***geo** - Data type: all geospatial index related commands.
302
302
***hash** - Data type: all hash related commands.
303
303
***hyperloglog** - Data type: all hyperloglog related commands.
304
-
***json** - Data type: all JSON related commands.
304
+
***json** - Data type: all JSON related commands. <sup>[1](#cmd-note-1)</sup>
305
305
***keyspace** - Writing or reading from keys, databases, or their metadata
306
306
in a type agnostic way. Includes [`DEL`](/commands/del), [`RESTORE`](/commands/restore), [`DUMP`](/commands/dump), [`RENAME`](/commands/rename), [`EXISTS`](/commands/exists), [`DBSIZE`](/commands/dbsize),
307
307
[`KEYS`](/commands/keys), [`SCAN`](/commands/scan), [`EXPIRE`](/commands/expire), [`TTL`](/commands/ttl), [`FLUSHALL`](/commands/flushall), etc. Commands that may modify the keyspace,
@@ -311,18 +311,20 @@ The following is a list of command categories and their meanings:
311
311
***pubsub** - all pubsub related commands.
312
312
***read** - Reading from keys (values or metadata). Note that commands that don't interact with keys, will not have either `read` or `write`.
313
313
***scripting** - Scripting related.
314
-
***search** - All search related commands. Only ACL users with access to a superset of the key prefixes defined during index creation can create, modify, or read the index. For example, a user with the key ACL pattern `h:*` can create an index with keys prefixed by `h:*` or `h:p*`, but not keys prefixed by `h*`, `k:*`, or `k*`, because these prefixes may involve keys to which the user does not have access.
314
+
***search** - All search related commands. Only ACL users with access to a superset of the key prefixes defined during index creation can create, modify, or read the index. For example, a user with the key ACL pattern `h:*` can create an index with keys prefixed by `h:*` or `h:p*`, but not keys prefixed by `h*`, `k:*`, or `k*`, because these prefixes may involve keys to which the user does not have access. <sup>[1](#cmd-note-1)</sup>
315
315
***set** - Data type: all set related commands.
316
316
***sortedset** - Data type: all sorted set related commands.
317
317
***slow** - All commands that are not `fast`.
318
318
***stream** - Data type: all stream related commands.
319
319
***string** - Data type: all string related commands.
320
-
***tdigest** - Data type: all t-digest related commands.
321
-
***timeseries** - Data type: all time series related commands.
322
-
***topk** - Data type: all top-k related commands.
320
+
***tdigest** - Data type: all t-digest related commands. <sup>[1](#cmd-note-1)</sup>
321
+
***timeseries** - Data type: all time series related commands. <sup>[1](#cmd-note-1)</sup>
322
+
***topk** - Data type: all top-k related commands. <sup>[1](#cmd-note-1)</sup>
323
323
***transaction** - [`WATCH`](/commands/watch) / [`MULTI`](/commands/multi) / [`EXEC`](/commands/exec) related commands.
324
324
***write** - Writing to keys (values or metadata). Note that commands that don't interact with keys, will not have either `read` or `write`.
325
325
326
+
1. <aname="cmd-note-1"></a> See the [Redis 8 release notes]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.0-release-notes/#potentially-breaking-changes-to-acls" >}}) for more information about these command categories, which may introduce breaking changes to your Redis deployments.
327
+
326
328
NOTE: Redis can also show you a list of all categories and the exact commands each category includes using the Redis [`ACL CAT`](/commands/acl-cat) command.
Copy file name to clipboardExpand all lines: content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.0-release-notes.md
+73-4Lines changed: 73 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -71,10 +71,8 @@ Stand alone RediSearch, RedisJSON, RedisTimeSeries, and RedisBloom modules are n
71
71
72
72
- See the [build instructions]({{< relref "/operate/oss_and_stack/install/build-stack" >}}) for information about building from source code.
73
73
- New configuration file: `redis-full.conf`, loads Redis with all components,
74
-
and contains new configuration parameters for Redis Query Engine and the new data structures .
75
-
- New ACL categories: `@search`, `@json`, `@timeseries`, `@bloom`, `@cuckoo`, `@cms`, `@topk`, and `@tdigest`.
76
-
- Commands are also included in the existing ACL categories such as `@read` and `@write`.
77
-
74
+
and contains new configuration parameters for Redis Query Engine and the new data structures.
75
+
- New ACL categories: `@search`, `@json`, `@timeseries`, `@bloom`, `@cuckoo`, `@cms`, `@topk`, and `@tdigest` commands are also included in the existing ACL categories such as `@read` and `@write`. See [below]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.0-release-notes/#potentially-breaking-changes-to-acls" >}}) for information about potentially breaking changes.
78
76
- More than 30 performance and resource utilization improvements.
79
77
- A new I/O threading implementation, which enables throughput increase on multi-core environments
80
78
(set with the `io-threads` configuration parameter).
@@ -113,3 +111,74 @@ For more details, see the release notes for the [8.0-M01](https://github.com/red
113
111
-[#13966](https://github.com/redis/redis/pull/13966), [#13932](https://github.com/redis/redis/pull/13932)`CLUSTER SLOTS` - TLS port update not reflected.
114
112
-[#13958](https://github.com/redis/redis/pull/13958)`XTRIM`, `XADD` - incorrect lag due to trimming stream.
115
113
-[#13931](https://github.com/redis/redis/pull/13931)`HGETEX` - wrong order of keyspace notifications.
114
+
115
+
### Potentially breaking changes to ACLs
116
+
117
+
{{< note >}}
118
+
The following content is relevant to all Redis distributions (RS, RC, and ROS).
119
+
{{< /note >}}
120
+
121
+
Redis 8 includes Redis Query Engine, as well as JSON, time series, Bloom filter, cuckoo filter, top-k, count-min sketch, and t-digest data types.
122
+
The integration of these features into Redis also comes with improvements to Redis [ACL]({{< relref "/operate/oss_and_stack/management/security/acl" >}}) rules.
123
+
124
+
{{< warning >}}
125
+
These ACL changes may introduce breaking changes for some users, which must be analyzed carefully.
126
+
{{< /warning >}}
127
+
128
+
### Extension to the existing ACL categories
129
+
130
+
Before Redis 8, the existing ACL categories @read, @write, @dangerous, @admin, @slow, and @fast did not include commands for the Redis Query Engine and the JSON, time series, and probabilistic data structures.
131
+
132
+
Starting with Redis 8, Redis includes all Query Engine, JSON, time series, Bloom filter, cuckoo filter, top-k, count-min sketch, and t-digest commands in these existing ACL categories.
133
+
134
+
As a result:
135
+
136
+
- Existing ACL rules such as `+@read +@write` will allow access to more commands than in previous versions of Redis. Here are some examples:
137
+
- A user with `+@read` access will be able to execute `FT.SEARCH`.
138
+
- A user with `+@write` access will be able to execute `JSON.SET`.
139
+
140
+
- ACL rules such as `+@all -@write` will allow access to fewer commands than previous versions of Redis. For example:
141
+
- A user with `+@all -@write` will not be able to execute `JSON.SET`.
142
+
143
+
Note that the `@all` category did not change, as it always included all the commands.
144
+
145
+
Additionally, ACL rules such as `+@read +JSON.GET` can now be simplified as `+@read` because `JSON.GET` is included in the `@read` category.
146
+
147
+
### Who is affected by this change?
148
+
149
+
Users who currently use the Redis Query Engine and/or the JSON, time series, or probabilistic data structures, and use custom ACL rules.
150
+
151
+
You should reanalyze your ACL rules to make sure they are aligned with your security and access control requirements.
152
+
153
+
### Redis 8 introduces the following data structure and processing engine ACL categories.
154
+
155
+
| New ACL commands category names | Included commands |
156
+
| :---- | :---- |
157
+
|`search`| All Redis Query Engine commands |
158
+
|`json`| All JSON commands |
159
+
|`timeseries`| All time series commands |
160
+
|`bloom`| All Bloom filter commands |
161
+
|`cuckoo`| All cuckoo filter commands |
162
+
|`topk`| All top-k commands |
163
+
|`cms`| All count-min sketch commands |
164
+
|`tdigest`| All t-digest commands |
165
+
166
+
You can use these new categories in your ACL rules.
167
+
168
+
### Time series notes
169
+
170
+
The following time series commands retrieve data from all keys that match a given filter expression: `TS.MGET`, `TS.MRANGE`, and `TS.MREVRANGE`.
171
+
172
+
There can be a case where a user may have to only some of the matching keys. In such cases, the command’s result is an error message: “*current user doesn't have read permission to one or more keys that match the specified filter*”.
173
+
174
+
On the other hand, `TS.QUERYINDEX` does not require `@read` access to the keys that match the specified filter, as it accesses only time series metadata (name and labels) and not content (measurements).
175
+
176
+
### Redis Query Engine notes
177
+
178
+
The following Redis Query Engine commands may retrieve data from all keys that match the prefixes defined in the index (that is, all indexed documents, per-index):
179
+
180
+
-`FT.SEARCH`
181
+
-`FT.AGGREGATE` (may be followed by `FT.CURSOR`)
182
+
-`FT.PROFILE`
183
+
184
+
Only ACL users with access to a superset of the key prefixes defined during index creation can create, modify, or read the index. For example, a user with the key ACL pattern `h:*` can create an index with keys prefixed by `h:*` or `h:p*`, but not keys prefixed by `h*`, `k:*`, or `k*`, because these prefixes may involve keys to which the user does not have access.
0 commit comments