RPCオーバーCassandraネイティブ・プロトコル

外部クライアント用のRPCパーミッションを構成する手順。

DataStax Enterpriseは、Cassandra認証とロールベースのアクセス能力を利用するために、Cassandraネイティブ・プロトコルを介したRPCをサポートしています。

リモート・ホスト上の手順を指定して呼び出すリモート・コールの構文は次のとおりです。
CALL Object.Method(parameter1, parameter2)

RPCパーミッション

RPCパーミッションは、実行可能なコマンドをロール別に詳細に制御できるように、ロールベースになっています。GRANTおよびREVOKE CQLコマンドにより、データベース・オブジェクトへのアクセスを付与したり、取り消したりできます。

DataStax Enterpriseは、RPCパーミッションを付与および取り消すために、cqlshで以下のCQL構文をサポートしています。
GRANT permission ON ALL REMOTE CALLS TO role;
GRANT permission ON REMOTE OBJECT object TO role;
GRANT permission ON REMOTE METHOD object.method TO role;
REVOKE permission ON ALL REMOTE CALLS FROM role;
REVOKE permission ON REMOTE OBJECT object FROM role;
REVOKE permission ON REMOTE METHOD object.method FROM role;
ここで、
  • permissionは、データベース・パーミッション(CREATE、ALTER、DROP、SELECT、MODIFY、AUTHORIZE、DESCRIBE、EXECUTE)のいずれかです。
  • roleは、権限を付与する、または取り消すロールです。

DseClientToolへのRPCパーミッションの付与

dse client-toolコマンドを実行し、Sparkを起動するには、外部クライアント用にRPCパーミッションを構成する必要があります。
cqlsh> GRANT EXECUTE ON REMOTE OBJECT DseClientTool TO USER;
注: DseClientToolオブジェクトは暗黙的にSparkランチャーから呼び出されるため、Sparkを実行するには、DseClientToolオブジェクト用のRPCパーミッションが必要です。
パーミッションのない状態でアクセスしようとすると、以下のようなエラー・メッセージが表示されます。
com.datastax.driver.core.exceptions.UnauthorizedException:User X has no EXECUTE permission on <rpc method DseClientTool.getSparkMasterAddress> or any of its parents
この問題を解決するには、DseClientToolオブジェクト用のRPCパーミッションを設定してください。例:
cqlsh> GRANT EXECUTE ON REMOTE OBJECT DseClientTool TO ADMINROLE;

多数のユーザーのパーミッション管理は、少数の高レベル・ロールを再利用することで、大幅に簡素化できます。「データベース・ロール」および「DSEロール管理の構成」を参照してください。