2017-02-03 12 views
1

ユーザを作成し、キースペースを作成して必要に応じて削除できるため、すべてのキースペースに対してCREATE、ALTER、SELECT、MODIFYおよびAUTHORIZEの権限を提供します。しかし、ユーザーがシステムキースペースを変更することを制限する必要があります。ユーザがcassandraのシステムテーブルのみにアクセスする方法を制限する方法

LIST ALL PERMISSIONS OF test; 

role | username | resource  | permission 
------+----------+-----------------+------------ 
test |  test | <all keyspaces> |  CREATE 
test |  test | <all keyspaces> |  ALTER 
test |  test | <all keyspaces> |  SELECT 
test |  test | <all keyspaces> |  MODIFY 
test |  test | <all keyspaces> | AUTHORIZE 

すべてのキースペースで許可した後に取り消そうとしましたが、機能しません。

REVOKE SELECT on keyspace system from test; 

各キースペースへのアクセスを許可せずにこれを達成する方法はありますか?

答えて

1

システムキースペース内の特定のテーブルを制限することはできません。これらは、どのドライバ機能にも必要であり、ブロックできません。有効なユーザーログインを持っている場合は、それらを開いておく必要があります.Cassandraは、ロールを変更しても、Cassandraがすべてのユーザーにアクセス権を自動的に付与します。このため


ソースコード:

は、このコードは、常にすべての認証されたユーザーに読めるREADABLE_SYSTEM_RESOURCESを構築building the list of always readable tables

// We want these system cfs to be always readable to authenticated users since many tools rely on them 
// (nodetool, cqlsh, bulkloader, etc.) 
for (String cf : Arrays.asList(SystemKeyspace.LOCAL, SystemKeyspace.PEERS)) 
    READABLE_SYSTEM_RESOURCES.add(DataResource.table(SystemKeyspace.NAME, cf)); 

SchemaKeyspace.ALL.forEach(table -> READABLE_SYSTEM_RESOURCES.add(DataResource.table(SchemaKeyspace.NAME, table))); 

参照してください。

この http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/secureObjectPerms.html

を説明 hasAccess returning (passing) if trying to select from those tables

if ((perm == Permission.SELECT) && READABLE_SYSTEM_RESOURCES.contains(resource)) 
    return; 

ドキュメントを参照してください。

関連する問題