summaryrefslogtreecommitdiff
path: root/tests/unit/acl.tcl
diff options
context:
space:
mode:
authoraradz44 <112960166+aradz44@users.noreply.github.com>2022-10-07 20:19:34 +0300
committerGitHub <noreply@github.com>2022-10-07 10:19:34 -0700
commit8e1941534388101f7e936bdf1126eda0036eb9fe (patch)
tree6462306cc6237eab8ed8cd39aa7fb375c7ef7fa7 /tests/unit/acl.tcl
parent210ad2e4dbed843ef91c2d291a5823d7c3a5cb66 (diff)
downloadredis-8e1941534388101f7e936bdf1126eda0036eb9fe.tar.gz
Added authentication failure and access denied metrics (#11288)
Added authentication failure and access denied metrics
Diffstat (limited to 'tests/unit/acl.tcl')
-rw-r--r--tests/unit/acl.tcl65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/unit/acl.tcl b/tests/unit/acl.tcl
index 0900d8e03..9160b641a 100644
--- a/tests/unit/acl.tcl
+++ b/tests/unit/acl.tcl
@@ -751,6 +751,71 @@ start_server {tags {"acl external:skip"}} {
catch {r ACL load} err
set err
} {*Redis instance is not configured to use an ACL file*}
+
+ # If there is an AUTH failure the metric increases
+ test {ACL-Metrics user AUTH failure} {
+ set current_auth_failures [s acl_access_denied_auth]
+ set current_invalid_cmd_accesses [s acl_access_denied_cmd]
+ set current_invalid_key_accesses [s acl_access_denied_key]
+ set current_invalid_channel_accesses [s acl_access_denied_channel]
+ assert_error "*WRONGPASS*" {r AUTH notrealuser 1233456}
+ assert {[s acl_access_denied_auth] eq [expr $current_auth_failures + 1]}
+ assert_error "*WRONGPASS*" {r HELLO 3 AUTH notrealuser 1233456}
+ assert {[s acl_access_denied_auth] eq [expr $current_auth_failures + 2]}
+ assert_error "*WRONGPASS*" {r HELLO 2 AUTH notrealuser 1233456}
+ assert {[s acl_access_denied_auth] eq [expr $current_auth_failures + 3]}
+ assert {[s acl_access_denied_cmd] eq $current_invalid_cmd_accesses}
+ assert {[s acl_access_denied_key] eq $current_invalid_key_accesses}
+ assert {[s acl_access_denied_channel] eq $current_invalid_channel_accesses}
+ }
+
+ # If a user try to access an unauthorized command the metric increases
+ test {ACL-Metrics invalid command accesses} {
+ set current_auth_failures [s acl_access_denied_auth]
+ set current_invalid_cmd_accesses [s acl_access_denied_cmd]
+ set current_invalid_key_accesses [s acl_access_denied_key]
+ set current_invalid_channel_accesses [s acl_access_denied_channel]
+ r ACL setuser invalidcmduser on >passwd nocommands
+ r AUTH invalidcmduser passwd
+ assert_error "*no permissions to run the * command*" {r acl list}
+ r AUTH default ""
+ assert {[s acl_access_denied_auth] eq $current_auth_failures}
+ assert {[s acl_access_denied_cmd] eq [expr $current_invalid_cmd_accesses + 1]}
+ assert {[s acl_access_denied_key] eq $current_invalid_key_accesses}
+ assert {[s acl_access_denied_channel] eq $current_invalid_channel_accesses}
+ }
+
+ # If a user try to access an unauthorized key the metric increases
+ test {ACL-Metrics invalid key accesses} {
+ set current_auth_failures [s acl_access_denied_auth]
+ set current_invalid_cmd_accesses [s acl_access_denied_cmd]
+ set current_invalid_key_accesses [s acl_access_denied_key]
+ set current_invalid_channel_accesses [s acl_access_denied_channel]
+ r ACL setuser invalidkeyuser on >passwd resetkeys allcommands
+ r AUTH invalidkeyuser passwd
+ assert_error "*no permissions to access one of the keys*" {r get x}
+ r AUTH default ""
+ assert {[s acl_access_denied_auth] eq $current_auth_failures}
+ assert {[s acl_access_denied_cmd] eq $current_invalid_cmd_accesses}
+ assert {[s acl_access_denied_key] eq [expr $current_invalid_key_accesses + 1]}
+ assert {[s acl_access_denied_channel] eq $current_invalid_channel_accesses}
+ }
+
+ # If a user try to access an unauthorized channel the metric increases
+ test {ACL-Metrics invalid channels accesses} {
+ set current_auth_failures [s acl_access_denied_auth]
+ set current_invalid_cmd_accesses [s acl_access_denied_cmd]
+ set current_invalid_key_accesses [s acl_access_denied_key]
+ set current_invalid_channel_accesses [s acl_access_denied_channel]
+ r ACL setuser invalidchanneluser on >passwd resetchannels allcommands
+ r AUTH invalidkeyuser passwd
+ assert_error "*no permissions to access one of the channels*" {r subscribe x}
+ r AUTH default ""
+ assert {[s acl_access_denied_auth] eq $current_auth_failures}
+ assert {[s acl_access_denied_cmd] eq $current_invalid_cmd_accesses}
+ assert {[s acl_access_denied_key] eq $current_invalid_key_accesses}
+ assert {[s acl_access_denied_channel] eq [expr $current_invalid_channel_accesses + 1]}
+ }
}
set server_path [tmpdir "server.acl"]