[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-09-03 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17409375#comment-17409375
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

I raised CASSANDRA-16914 to implement Virtual Tables for Auth Caches.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.1
>
>  Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-09-03 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17409342#comment-17409342
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

Great, thanks a lot for your support [~samt]!

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.1
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-09-02 Thread Sam Tunnicliffe (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17409013#comment-17409013
 ] 

Sam Tunnicliffe commented on CASSANDRA-16404:
-

[~azotcsit], I was and it looks good to me. Apologies for both the long wait 
and the typo, I've rebased and launched CI runs and commit both the patch and 
test when those complete.

||branch||dtest||Circle CI||Apache CI||
|[16404-trunk|https://github.com/beobal/cassandra/tree/16404-trunk]|[16404|https://github.com/beobal/cassandra-dtest/tree/16404]|[circle|https://circleci.com/gh/beobal/cassandra?branch=16404-trunk]|[apache|https://ci-cassandra.apache.org/view/patches/job/Cassandra-devbranch/1093]


> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-08-31 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17407244#comment-17407244
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

[~samt]

Were you able to check the dtest?

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-08-22 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17402817#comment-17402817
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

[~samt]

I wrote a dtest for JMX auth cache. Could you please take a look to 
[https://github.com/apache/cassandra-dtest/pull/154]? Apart from the changes I 
specified in the description, I had updated your commit's message (I fixed a 
typo in my name).

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-08-18 Thread Sam Tunnicliffe (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17401041#comment-17401041
 ] 

Sam Tunnicliffe commented on CASSANDRA-16404:
-

bq. I see 4 failures, but they do not seem to be related to these changes.

Yep, LGTM too. Good stuff!

bq. Am I right that currently there are no dtests for 
JMXPermissionsCache/JmxPermissionsCache MBeans? Shall I try to come up with a 
test for that (basically I'd like to get familiar with dtests)? Can I use this 
ticket or need to create another one?

Yes, you are correct there, so feel free to use this as an opportunity to get 
comfortable with dtests. Seeing as this isn't an urgent issue, I'd say it's 
fine to take our time adding new tests here rather than opening another Jira. 
If you create a dtest branch based off mine, just open a PR against trunk with 
it when you're ready and I'll review/merge there. If you have any questions, 
just ask.

bq. It needs to be renamed to match the class name.

d'oh, good catch. Fixed in my branch. 

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-08-17 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17400607#comment-17400607
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

[~samt]

Great, thanks for taking care of that! I see 4 failures, but they do not seem 
to be related to these changes.

I checked your branch for dtest repo and can see the change for handling 
NetworkPermissionsCache/NetworkAuthCache MBeans. Am I right that currently 
there are no dtests for JMXPermissionsCache/JmxPermissionsCache MBeans? Shall I 
try to come up with a test for that (basically I'd like to get familiar with 
dtests)? Can I use this ticket or need to create another one?

===

Also I think there is a small issue with the last change:
{code:java}
public static final String CACHE_NAME = "JMXPermissionsCache";
@Deprecated
public static final String DEPRECATED_CACHE_NAME = "JmxPermissionsCache";
{code}
it should be opposite:
{code:java}
public static final String CACHE_NAME = "JmxPermissionsCache"; 
@Deprecated 
public static final String DEPRECATED_CACHE_NAME = "JMXPermissionsCache";
{code}
JMXPermissionsCache is what we have currently 
([https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/auth/jmx/AuthorizationProxy.java#L483]).
 It needs to be renamed to match the class name.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-08-17 Thread Sam Tunnicliffe (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17400403#comment-17400403
 ] 

Sam Tunnicliffe commented on CASSANDRA-16404:
-

Rather than going back to the old bean names, we have a precedent of aliasing 
and deprecating them. I've pushed a additional commit to my branch which fixes 
the original test failure in this way. I've also extended the dtest to cover 
both the old and new bean name (for {{NetworkAuthTest}} only, it didn't seem 
worth adding new tests for the JMX cache just for this).

Also (temporarily) modified circle config to use my own dtest branch & started 
a new apache ci job 
[here|https://ci-cassandra.apache.org/view/patches/job/Cassandra-devbranch/1032]

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-08-12 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17398255#comment-17398255
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

Thanks [~samt]! I checked the build and mentioned a few failures related to the 
renaming of {{NetworkAuthCache}} MBean. I fixed that and additionally 
incorporated your change on the error message 
([db917dfe04ffdf0cda393474dce431d749e7bded|https://github.com/apache/cassandra/pull/950/commits/db917dfe04ffdf0cda393474dce431d749e7bded]).
 Also I rebased and squashed the changes into 
[https://github.com/alex-ninja/cassandra/tree/cassandra-16404-trunk] branch (I 
intentionally do not want to squash commits in the PR branch and keep them for 
historical reference), so it is easy to kick off the CI again.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-08-12 Thread Sam Tunnicliffe (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17398082#comment-17398082
 ] 

Sam Tunnicliffe commented on CASSANDRA-16404:
-

Thanks [~azotcsit], looks good to me. I've squashed & rebased, with one tiny 
tweak to the new error message, and kicked off CI runs. Assuming they look 
good, I'll commit when they're done.

||branch||Circle CI||Apache CI||
|[16404-trunk|https://github.com/beobal/cassandra/tree/16404-trunk]|[circle|https://circleci.com/gh/beobal/cassandra?branch=16404-trunk]|[apache|https://ci-cassandra.apache.org/view/patches/job/Cassandra-devbranch/1011]


> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-26 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17387622#comment-17387622
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

[~samt]

Good catch! I added a try-catch and a corresponding test. Please, let me know 
if you see any other points for improvement.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-26 Thread Sam Tunnicliffe (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17387348#comment-17387348
 ] 

Sam Tunnicliffe commented on CASSANDRA-16404:
-

bq. role_permissions table relies on this method while storing existing 
permissions. So we cannot easily change it

this is correct. The only way around it would be to accept a CQL format string 
and parse it on the server, but to be honest I don't believe it's really worth 
it. So I'd say we should stick with the internal representation for now, seeing 
as it's very much a poweruser feature anyway.

That one niggle aside, the CLI looks pretty good to me. There's just one small 
issue whereby supplying invalid types for function params throws an exception, 
which we could catch and present more nicely. 

{code}
❯ bin/nodetool invalidatepermissionscache --functions-in-keyspace foo 
--function bar\[x^y\] user
error: org.apache.cassandra.db.marshal.x
-- StackTrace --
java.lang.ClassNotFoundException: org.apache.cassandra.db.marshal.x
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at 
org.apache.cassandra.utils.FBUtilities.classForName(FBUtilities.java:716)
at 
org.apache.cassandra.db.marshal.TypeParser.getAbstractType(TypeParser.java:357)
at org.apache.cassandra.db.marshal.TypeParser.parse(TypeParser.java:89)
at 
org.apache.cassandra.auth.FunctionResource.argsListFromString(FunctionResource.java:338)
at 
org.apache.cassandra.auth.FunctionResource.fromName(FunctionResource.java:190)
at org.apache.cassandra.auth.Resources.fromName(Resources.java:60)
at 
org.apache.cassandra.auth.PermissionsCache.invalidatePermissions(PermissionsCache.java:48)
...
...
...
{code}

Otherwise, I think we're pretty much done with this. Thanks for all the good 
work [~azotcsit]


> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-25 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17386915#comment-17386915
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

[~samt]

> Fortunately, this piece of code ({{FunctionResource.fromName}} method) is not 
>used anywhere and I feel we can easily and safely switch from {{AbstractType}} 
>to {{CQLType}} (I can raise and handle a separate ticket for the sake of scope 
>segregation).

That's not completely correct. Even though {{fromName}} is not used, it needs 
to be aligned with {{getName}} which is used in a few places. I briefly checked 
the usages of {{getName}} and looks like {{role_permissions}} table relies on 
this method while storing existing permissions. So we cannot easily change it.

I made the change with introducing multiple CLI options. Please, review and let 
me know if there are any improvement points.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-23 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17386358#comment-17386358
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

[~samt]

Thanks for your input! I gave a thought to the command's syntax and here are 
the details:

1. Such a function representation is currently supported (I tested that):
{code:java}
functions/ks/foo[Int32Type^DoubleType]{code}
I do not feel it is too heavy. However, I doubt operators are well familiar 
with internal C* types. Fortunately, this piece of code 
({{FunctionResource.fromName}} method) is not used anywhere and I feel we can 
easily and safely switch from {{AbstractType}} to {{CQLType}} (I can raise and 
handle a separate ticket for the sake of scope segregation).
 2. Ideally we should support as many use cases as possible via CQL. For 
example: for "data" resource we need a support of "ALL KEYSPACES", "KEYSPACE 
ks1" and "KEYSPACE ks1 TABLE t1". If we do not support all possible 
combinations then the invalidation becomes useless because currently we do not 
support "recursive permissions invalidation", i.e. if a user has "KEYSPACE ks1" 
permission then invalidation of "ALL KEYSPACES" won't delete this permission. 
The same is applicable to functions. With that being said, I believe we cannot 
skip/ignore invalidation of permissions on specific functions.

3. Here are the parameters we need to support:
 * "--all-keyspaces" / "--keyspace ks1" / "-keyspace ks1 --table t1"
 * "--all-roles" / "–role role1"
 * "--all-functions" / "--functions-in-keyspace ks1" / "--functions-in-keyspace 
ks1 --function foo[Int32Type^DoubleType]"
 * "--all-mbeans" / "–mbean org.apache.cassandra.auth:type=*"

 

4. On the one hand, it is a bit awkward to support all these parameters. On the 
other hand, the only alternative way (that I considered) is to add a proper 
description to the CLI command with samples for different resource types. Based 
on the examples operators could easily construct a resource and execute the 
command. Smth like:

 
{code:java}
- ALL KEYSPACES -> data
- KEYSPACE ks1 -> data/ks1
- ks1.t1 -> data/ks1/t1
- ALL ROLES -> roles
- ROLE other_role -> roles/other_role
- ALL FUNCTIONS IN KEYSPACE ks1 -> functions/ks1
- FUNCTION ks1.f1(int, double) -> functions/ks1/f1[Int32Type^DoubleType]
- ALL MBEANS -> mbean\n" +
- MBEAN 'org.apache.cassandra.auth:type=* -> 
mbean/org.apache.cassandra.auth:type=*
{code}
However, "airline" (the lib that is used for work with CLI) does not support 
multi-line descriptions: [https://github.com/airlift/airline/issues/30.] So I 
rejected this approach.

 

 

Please, let me know your thoughts on the migration from  {{AbstractType}} to 
{{CQLType}} (item #1) and whether proposed parameters look good to you (item 
#3).

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-19 Thread Sam Tunnicliffe (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17383381#comment-17383381
 ] 

Sam Tunnicliffe commented on CASSANDRA-16404:
-

bq. Sam Tunnicliffe Does that sound reasonable to you?

Yes SGTM, thanks

[~azotcsit] I think it's only {{invalidatepermissionscache}} that warrants any 
syntax change.

bq. "-u" might be bit confusing 

You're right, I had overlooked that when sketching out that syntax. , we don't 
really need the {{-u}} flag as I think we can assume that the non-option 
argument is the grantee, which is consistent with the other commands anyway. 

bq. if we do not have enough information from input to construct "Resource" 
then we'll have to iterate through all cached records because "Resource" is a 
part of key

I'd be tempted to enforce that through validation in the tool itself, although 
iterating on the server side would still be required to invalidate all 
parmissions for a user. So for instance, an invocation like this should be 
rejected:

{code} bin/nodetool invalidatepermissionscache user_a -t some_table {code}

With the correct version being: 

{code} bin/nodetool invalidatepermissionscache user_a -k some_keyspace -t 
some_table {code}

Handling function resources is going to be a bit ugly as the arg types are 
significant and so need to be included.  The CQL representation is nicer for 
the user but not very shell friendly whereas the internal representation is 
very verbose. e.g. for a function with 2 int args:

{code} function ks.foo(int, int)
functions/ks/foo[org.apache.cassandra.db.marshal.Int32Type^org.apache.cassandra.db.marshal.Int32Type]
{code}

Seeing as we probably want a way to represent "all functions in a given 
keyspace" anyway, maybe we should simplify and just make that the only option. 
i.e. don't allow invalidation of permissions on specific functions, only all 
functions in a particular keyspace.

What does everyone think?

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-16 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17382085#comment-17382085
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

[~blerer]

The plan sounds good to me! I'd be glad to give a try to {{CASSANDRA-16806.}}

[~samt]

Do you want me to change the syntax for {{invalidatepermissionscache}} command 
only or for all?

I'll think on other syntax in order to simplify operations. Just a couple of 
thoughts:
 # "-u" might be bit confusing because there is "(-u  | --username 
)" which is JMX user.
 # if we do not have enough information from input to construct "Resource" then 
we'll have to iterate through all cached records because "Resource" is a part 
of key . It actually should not be a significant issue because there should not 
be many records, but I just want to highlight that.

 

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-16 Thread Benjamin Lerer (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17381941#comment-17381941
 ] 

Benjamin Lerer commented on CASSANDRA-16404:


[~azotcsit] What I would propose is to address Sam feedback and then commit the 
patch as it does not make adding a Virtual Table more complicated than it was 
before.
We can then open a patch for providing the same functionality through Virtual 
Tables. I nobody takes it I will.
I opened {{CASSANDRA-16806}} to provide support for TRUNCATE statement on 
Virtual Tables. Feel free to take it if you feel like it.

[~samt] Does that sound reasonable to you?

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-14 Thread Sam Tunnicliffe (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17380539#comment-17380539
 ] 

Sam Tunnicliffe commented on CASSANDRA-16404:
-

Yep, I completely recognise your points here [~blerer], but I suppose my 
general counter argument would be if not now, when?
{quote}I also want to raise the fact that so far the Virtual Tables that we 
expose do not support updates. The mechanism is there but has not really been 
used (TRUNCATE is not supported at at).
{quote}
This is a brand new, low risk feature which is not blocking a release and nor 
is it particularly urgent. That seems to me to make it an ideal way to explore 
& flesh out that area.
{quote}Will it not make sense to support both approach until Virtual Tables 
provide the same level of functionalities that JMX and NodeTool or an extended 
version?
{quote}
That is quite an ambitious goal. My concern is that if we take the approach of 
splitting each task like this into distinct tickets, then pragmatism will get 
the better of us as it has in the past. That is, the desire for something that 
"does the job" today trumps the better/newer, but ultimately redundant, stuff. 
i.e. if there's a way to acheive this through nodetool/JMX, the incentive to 
build the VT version largely disappears.

All that said, like I said before I do appreciate that a lot of work has 
already gone into this ticket so it's absolutely my bad for not bringing 
forward this suggestion earlier. Aside from the syntactic stuff I mentioned in 
my previous comment, this generally LGTM, so I certainly wouldn't dig my heels 
in over it should we choose to stick with the current approach.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-14 Thread Benjamin Lerer (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17380512#comment-17380512
 ] 

Benjamin Lerer commented on CASSANDRA-16404:


I agree that we would like to move away from JMX and Nodetool. Nevertheless, We 
never had some clear discussion around it and I imagine that they will still be 
there for several releases and I am wonder if having an hybride between the 2 
approach is necessarily a good approach.

I also want to raise the fact that so far the Virtual Tables that we expose do 
not support updates. The mechanism is there but has not really been used 
(TRUNCATE is  not supported at at). Now, I really love your suggestion [~samt].

Will it not make sense to support both approach until Virtual Tables provide 
the same level of functionalities that JMX and NodeTool or an extended version?
If yes, my suggestion would be to split the task in 2 (or more if some extra 
changes are needed in the Virtual Table framework). Finish the current patch 
and open a new ticket to provide the same functionality through some Virtual 
Tables.

[~samt] What is your opinion? 

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-14 Thread Sam Tunnicliffe (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17380401#comment-17380401
 ] 

Sam Tunnicliffe commented on CASSANDRA-16404:
-

Thanks [~azotcsit], and apologies again for dropping in that suggestion so late.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-13 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17380069#comment-17380069
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

[~samt] thanks for the detailed explanation! Virtual tables sound like a full 
re-work, but it is not a problem at all. It is a good chance to get familiar 
with them! I'll need some time to understand the details around virtual tables 
and the way to use them for caches. -If- Once I have some question, I'll get 
back to you. In the meantime, I'll move the ticket back to "IN PROGRESS".

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-13 Thread Sam Tunnicliffe (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17379900#comment-17379900
 ] 

Sam Tunnicliffe commented on CASSANDRA-16404:
-

I feel that the {{invalidatepermissionscache}} nodetool command could use a 
little syntactic sugar as operators have
previously not had any reason to be aware of the resource hierarchy. Perhaps as 
a first option we could support invalidation of all permissions for a supplied 
user, with the option to specify resources when required. 

That said, the format of resource names is not something I'd expect most 
operators to be familiar with. So while
allowing a qualified resource name is good, perhaps we ought to base the cli 
syntax more closely on CQL GRANT/REVOKE
statements. e.g.:

{code}bin/nodetool invalidatepermissionscache -u  [ -k  | 
-t  | -f  | -m
 | -r ] {code}

Stepping back a bit... I appreciate that a lot of effort has already gone into 
this ticket, but I wonder if we ought to
approach this slightly differently. Nodetool is, to some extent, deprecated, 
with access to system information via CQL &
virtual tables being the preferred alternative. Perhaps we would be better off 
implementing this feature with a set of
virtual tables to represent the caches. 

{code}
cqlsh:system_views> SELECT * FROM permissions_cache;

role | resource| permissions
-+-+--
user_a   | data/test_ks/test_table | {'SELECT', 'MODIFY'}

cqlsh:system_views> SELECT * FROM network_permissions_cache;

role | datacenters
-+
user_a   | {'dc1', 'dc2'}
user_b   | {}

{code}

The wrinkle I see would be in restricting the set of modifications permitted 
against the virtual tables. i.e. A user,
with the requisite permissions, should be able to DELETE from and TRUNCATE a 
*_cache table, but not perform any INSERT
or UPDATE modifications. It would require some special casing probably along 
the lines of what we have in
{{ClientState::preventSystemKSSchemaModification}} but I don't think that would 
be too onerous. Seeing as this is
targetting 4.x it seems slightly wrong to be adding brand new nodetool/JMX 
operations.


> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-10 Thread Aleksei Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17378427#comment-17378427
 ] 

Aleksei Zotov commented on CASSANDRA-16404:
---

[~blerer]

Thanks for checking the code!
{quote}I did not realized that the JMX interface for that part of the code tend 
to be nested within the implementation classes. So I would do the same despite 
what I said earlier.
{quote}
I've given it a try and realized that it causes cyclic inheritance:
{code:java}
public class RolesCache implements RolesCache.RolesCacheMBean
{
...

public static interface RolesCacheMBean extends AuthCacheMBean
{
...
}
}
{code}
and it is not compiling.

Similar approach works for other caches because they have another structure:
{code:java}
public class SomeHolderClass
{
...

public static class RolesCache implements SomeClass.RolesCacheMBean
{
...
}

public static interface RolesCacheMBean extends AuthCacheMBean
{
...
}
}
{code}
I see the following potential ways to proceed:
 1. keep everything as is - that's what I'm inclined to.
 2. introduce "holder" classes (similarly like we have for other caches) - I do 
not like it because it will lead to many changes (that we try to prevent 
without a real need). Also such holder classes without additional logic look 
weird and make not much sense.
 3. having interface in the same file, but non-public, like:
{code:java}
public class RolesCache implements RolesCache.RolesCacheMBean
{
...
}

interface RolesCacheMBean extends AuthCacheMBean
{
...
}
{code}
also does not seem to be working because the interface definition should be 
public to be available from {{NodeProbe}}.

I see no other obvious ways to have it simple and working other than the 
current approach. Your suggestions will be much appreciated. Please, let me 
know your thoughts.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Aleksei Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-06 Thread Sam Tunnicliffe (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17375378#comment-17375378
 ] 

Sam Tunnicliffe commented on CASSANDRA-16404:
-

bq. Sam Tunnicliffe Your are familiar with that part of the code. Would you 
have some time for a review?

Probably not for a few days, but I will try to take a look this week if that's 
any use.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Alexey Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-07-06 Thread Benjamin Lerer (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17375375#comment-17375375
 ] 

Benjamin Lerer commented on CASSANDRA-16404:


[~azotcsit] Once again sorry for the delay.
I did not realized that the JMX interface for that part of the code tend to be 
nested within the implementation classes. So I would do the same despite what I 
said earlier. Otherwise the patch look good to me but we would need another +1 
from a committer.
[~samt] Your are familiar with that part of the code. Would you have some time 
for a review?



> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Alexey Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-05-31 Thread Benjamin Lerer (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17354276#comment-17354276
 ] 

Benjamin Lerer commented on CASSANDRA-16404:


All my apologizes for the delay [~azotcsit]. I have been stuck those last weeks 
on some 4.0 regressions. I will have a look at your patch in the coming days.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Alexey Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-05-27 Thread Alexey Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17352652#comment-17352652
 ] 

Alexey Zotov commented on CASSANDRA-16404:
--

[~blerer] [~sumanth.pasupuleti]

Have you had a chance to check the changes?

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Alexey Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-04-26 Thread Alexey Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17332735#comment-17332735
 ] 

Alexey Zotov commented on CASSANDRA-16404:
--

It turned out that AssertJ is preferable library for test assertions. I've 
converted all assertions in the PR from Hamcrest to AssertJ.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Alexey Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-04-20 Thread Alexey Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17326113#comment-17326113
 ] 

Alexey Zotov commented on CASSANDRA-16404:
--

[~blerer] [~sumanth.pasupuleti]

Thanks for the feedback! I've addressed your comments. I'll push tests 
refactoring into a separate PR.

Basically I'm done with the changes I wanted to make. Could you, please, review 
the changes.

I read about [roles 
hierarchy|https://www.datastax.com/blog/role-based-access-control-cassandra] 
and I feel it would be complicated enough to support them. Basically the 
problem is related to the fact that we cache permissions (permissions, network 
permissions, jmx permissions) after we calculate them using roles hierarchy. 
Permissions invalidation for a user (a role with "login" attribute = true) 
works fine with the current changes. However, permissions invalidation for a 
group role (a role that is granted to other roles) would require tracing the 
hierarchy in a reverse direction and invalidating the whole affected hierarchy 
from cache. It is theoretically possible, but in practice there is one 
directional relation between roles ({{RolesCache extends 
AuthCache>}}). I can take a look to this part further 
if you believe that it needs to be address at this point, also I'd be glad to 
hear a piece of advice on the best way to tackle the hierarchical invalidation.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Alexey Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-04-13 Thread Sumanth Pasupuleti (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17320549#comment-17320549
 ] 

Sumanth Pasupuleti commented on CASSANDRA-16404:


Thanks [~blerer] for keeping me in loop for assignee change. I was waiting for 
the ticket to be triaged before implementing :), but thanks much to [~azotcsit] 
for taking this ticket forward with discussions and patch! 

[~azotcsit] I had a chance to review your patch and here are a few comments I 
have from the review.
# In addition to roles having hierarchy that you already mention, even 
resources have hierarchy. It maybe worth considering clearing entries for all 
resources underneath a resource in context.
# This 
[commit|https://github.com/apache/cassandra/pull/950/commits/e5660717deeb86872e4c868264f79f96c6b87d78]
 touches a lot more tests than just cache tests; I would recommend tackling 
that change as part of a separate ticket and change.
# Code style - You may want to run the * intellij code styler; especially for 
same line vs next style braces styling.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Alexey Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-04-06 Thread Benjamin Lerer (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17315727#comment-17315727
 ] 

Benjamin Lerer commented on CASSANDRA-16404:


Sorry for missing your questions.

{quote}  1. NetworkAuthCache has slightly different naming compared to other 
auth caches: a) it has Auth suffix b) it has a "singular name". The naming for 
nodetool commands matches class naming exactly. I feel it is the best way to 
prevent further confusion in the code. Are we good with that? {quote}

The other option is to rename the cache but I do not know if there is some side 
reasons for not doing it.

{quote} 2.  I can see that Roles cache has some hierarchical logic for getting 
roles and role resources by primary role. Currently I do invalidate only a 
single role. Please, let me know if we need to have hierarchical invalidation 
logic as well.{quote}

I do not recall exactly how the hierachy work. I would have to double check 
that. You can let it like that for now.

{quote} 3. I see that similar nodetool commands do not have tests since they 
are pretty simple. Do I need to try to introduce tests here? {quote}

As discussed above: Yes, it would be great.  

{quote} 4.  Currently three MBean interfaces (NetworkAuth, Permissions and 
Roles) were introduced as separate files. Do I need to inline then as per 
https://cwiki.apache.org/confluence/display/CASSANDRA2/CodeStyle ?{quote}

No, it is fine if the MBean interfaces are in separate files. 


> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Alexey Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-04-06 Thread Alexey Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17315578#comment-17315578
 ] 

Alexey Zotov commented on CASSANDRA-16404:
--

[~blerer]

Thanks for the quick response! It would be great if you could provide some 
input regarding other open questions in the PR description (unit tests was one 
of the questions). So I'll be able to address everything before your next 
review attempt.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Alexey Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-04-06 Thread Benjamin Lerer (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17315516#comment-17315516
 ] 

Benjamin Lerer commented on CASSANDRA-16404:


[~sumanth.pasupuleti] I reassigned the tiket to [~azotcsit] as he provided a 
patch for that ticket. I hope it is fine with you.

[~azotcsit] Thanks a lot for the patch, I might not be able to review it 
properly before a couple of week. 
I had a quick look at your patch and one thing that would be gret is if you 
could had some unit tests to test the behavior of the changes. 

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Alexey Zotov
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-04-02 Thread Alexey Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17314070#comment-17314070
 ] 

Alexey Zotov commented on CASSANDRA-16404:
--

[~blerer]

Thanks for the details, they helped a lot! I raised a draft PR to validate the 
direction I follow, your feedback would be very helpful. Also, I posted a few 
questions related to the implementation.

Once you confirm the direction, I'm going to make a round of local testing to 
ensure the functionality works as expected.

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Authorization
>Reporter: Sumanth Pasupuleti
>Assignee: Sumanth Pasupuleti
>Priority: Normal
> Fix For: 4.x
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-03-29 Thread Benjamin Lerer (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17310604#comment-17310604
 ] 

Benjamin Lerer commented on CASSANDRA-16404:


b.q. 1. Despite the use case sounds reasonable to me, does the product ever 
need this functionality?

It is a tricky question. In an ideal world it should not. Any auth change 
request should automatically clear the corresponding caches. Now, in a real 
world even if we had that functionality, problems do happen and this 
functionality can be useful.  

b.q. 2.  There are multiple caches (roles, permissions, network auth, 
credentials, JMX permissions), but I feel it is enough to invalidate 
permissions cache only to handle the use case. Could you please confirm?

I would have to look as I forgot some of the logic but it would make sense to 
me to provide the functionality for all of them.

b.q. 3. As far as I can see, the invalidation of permissions cache only does 
not affect (need for re-login or similar side effects) logged in users. So it 
is safe to invalidate the cache and does not bother all users of the system. 
Could you please confirm?

Not sure I understand your question.

b.q. 4 Even though permissions cache invalidation does not affect other users, 
we need to provide an optional user parameter, so the administrator can 
invalidate the cache for that particular user rather than for all users. 
Thoughts?

We should always minimize which part of the cache we clean as repopulating the 
cache under high load can have a significant impact on a cluster. 

b.q. As far as I understand nodetool is executed on a single node, so the auth 
cache invalidation needs to be triggered on all nodes manually. It seems be 
slightly inconvenient for the administrator... 

Administrators have tools in place to deal with that problem. Nodetool is 
single node only.
 

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>Reporter: Sumanth Pasupuleti
>Assignee: Sumanth Pasupuleti
>Priority: Normal
> Fix For: 4.x
>
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16404) Provide a nodetool way of invalidating auth caches

2021-03-29 Thread Alexey Zotov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17310460#comment-17310460
 ] 

Alexey Zotov commented on CASSANDRA-16404:
--

[~brandon.williams], [~blerer]

Could you please assist with triaging this issue. I went through the code and 
in general this ticket seems to be clear from technical perspective, but there 
are a few points to clarify:
 # Despite the use case sounds reasonable to me, does the product ever need 
this functionality?
 # There are multiple caches (roles, permissions, network auth, credentials, 
JMX permissions), but I feel it is enough to invalidate permissions cache only 
to handle the use case. Could you please confirm?
 # As far as I can see, the invalidation of permissions cache only does not 
affect (need for re-login or similar side effects) logged in users. So it is 
safe to invalidate the cache and does not bother all users of the system. Could 
you please confirm?
 # Even though permissions cache invalidation does not affect other users, we 
need to provide an optional {{user}} parameter, so the administrator can 
invalidate the cache for that particular user rather than for all users. 
Thoughts?
 # As far as I understand {{nodetool}} is executed on a single node, so the 
auth cache invalidation needs to be triggered on all nodes manually. It seems 
be slightly inconvenient for the administrator... However, it provides better 
control and it is how it is done for all (? not sure) other commands. Is there 
a way (concept) to execute such a command on all nodes?

 

> Provide a nodetool way of invalidating auth caches
> --
>
> Key: CASSANDRA-16404
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
> Project: Cassandra
>  Issue Type: Improvement
>Reporter: Sumanth Pasupuleti
>Assignee: Sumanth Pasupuleti
>Priority: Normal
> Fix For: 4.x
>
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org