增加角色有效性和权限有效性的影响

euoag5mw  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(423)

在我们的3节点cassandra集群中,我们看到很多操作超时异常。下面是错误堆栈的一部分。

com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - received only 0 responses.
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2203) ~[guava-18.0.jar:na]
at com.google.common.cache.LocalCache.get(LocalCache.java:3937) ~[guava-18.0.jar:na]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) ~[guava-18.0.jar:na]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824) ~[guava-18.0.jar:na]
at org.apache.cassandra.auth.PermissionsCache.getPermissions(PermissionsCache.java:72) ~[apache-cassandra-3.0.9.jar:3.0.9]

Caused by: java.lang.RuntimeException: org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - received only 0 responses.
    at org.apache.cassandra.auth.CassandraRoleManager.getRole(CassandraRoleManager.java:489) ~[apache-cassandra-3.0.9.jar:3.0.9]
    at org.apache.cassandra.auth.CassandraRoleManager.isSuper(CassandraRoleManager.java:293) ~[apache-cassandra-3.0.9.jar:3.0.9]
    at org.apache.cassandra.auth.Roles.hasSuperuserStatus(Roles.java:52) ~[apache-cassandra-3.0.9.jar:3.0.9]
    at org.apache.cassandra.auth.AuthenticatedUser.isSuper(AuthenticatedUser.java:71) ~[apache-cassandra-3.0.9.jar:3.0.9]
    at org.apache.cassandra.auth.CassandraAuthorizer.authorize(CassandraAuthorizer.java:76) ~[apache-cassandra-3.0.9.jar:3.0.9]

每次我们看到这个异常都与permissionscache或cassandrarolemanager有关。经过一点研究,我找到了一个解决方案来提高角色的有效性和权限的有效性,多亏了启用了一次性cassandra身份验证和授权检查,并将其永久缓存
这里的问题是增加这个值有什么影响?datastax文档说缓存在短时间内有效。
缓存中的权限保持有效多长时间以管理权限查询的性能影响。获取权限可能是资源密集型的。将缓存有效期设置为安全容差。缓存用于标准身份验证和行级访问控制(rlac)缓存。缓存在较小的持续时间内非常有效。

cunj1qz1

cunj1qz11#

这些参数控制权限和角色列表在当前会话期间保持有效的时间。它严重依赖于您的业务需求—如果您的应用程序需要角色和权限可以在工作期间“在线”更改,那么您需要具有较低的值,如果在下次重新连接/重新启动应用程序之前可以具有相同的角色和权限,那么您可以转到较高的值。
但是你也可以两者兼而有之,如果你愿意的话 roles_update_interval_in_ms , credentials_update_interval_in_ms & permissions_update_interval_in_ms 使值低于 roles_validity_in_ms , credentials_interval_in_ms ,和 permissions_interval_in_ms (见文件)。如果指定了这些值,则将在给定的时间间隔内在后台检查角色、权限和凭据,如果请求成功,则将更新缓存,如果请求失败,则仍将使用缓存值。例如,可以设置 roles_validity_in_ms 一天,然后 roles_update_interval_in_ms 10分钟,这样您就能够相对快速地对给定用户角色的更改做出React。

相关问题