Uploaded image for project: 'Apache Cassandra'
  1. Apache Cassandra
  2. CASSANDRA-20000

Add support for Role's OPTIONS

    XMLWordPrintableJSON

Details

    • Operability
    • Normal
    • All
    • None
    • Hide

      Run CI

      Show
      Run CI

    Description

      The Cassandra Query Language https://cassandra.apache.org/doc/stable/cassandra/cql/security.html / https://cassandra.apache.org/doc/5.0/cassandra/developing/cql/security.html specify that a role can have custom options defined as literal map.

      The documentation shows a valid example of these custom options:

      CREATE ROLE carlos WITH OPTIONS = { 'custom_option1' : 'option1_value', 'custom_option2' : 99 };  

      However, the storage/retrieval of such custom options has not been implemented in Cassandra. See for instance, https://github.com/apache/cassandra/blob/18960d6e3443bf002ef4f46c7f0e1f2ee99734e1/src/java/org/apache/cassandra/auth/CassandraRoleManager.java#L393-L396

      Storing custom options per role could have multiple usages, for instance, it could allow admins to specify fine-grain permissions that can be interpreted by custom authenticator/authorizer.

      The goal of this task is to add support for Role custom options, by storing them in an additional table called role_options in the system_auth keyspace.

      Creating a role with options should write the information in both the roles and the role_options tables. Creating a role with no options or having an empty map of options should not write any information in the role_options table.

      Altering a role should behave as follows when executing an ALTER ROLE statement:

      • without specifying OPTIONS: no changes should be done in the role_options table. 
      • specifying OPTIONS altering a role with no previous custom options: we should insert the custom options in the role_options table.
      • specifying OPTIONS altering a role with previous custom options: we should replace the existent custom options
      • in the role_options table.

      Dropping a role should drop information in both roles and role_options.

      Attachments

        Issue Links

          Activity

            People

              tiagomlalves Tiago L. Alves
              tiagomlalves Tiago L. Alves
              Tiago L. Alves
              Stefan Miklosovic
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h