CQL実行のリモート・プロシージャ・コールの権限を管理する

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

DataStax Enterpriseは、DSEデータベースに対するリモート・プロシージャ・コールの認証とロールベース・アクセス制御をサポートしています。

リモート・ホストに指定されているプロシージャのリモート・コールの構文は以下のとおりです。
CALL Object.Method(parameter1, parameter2)

RPCパーミッション

RPCパーミッションはロールベースで、どのロールがどのコマンドを実行できるかを詳細に制御します。CQLコマンドのGRANTおよびREVOKEを使用すると、オブジェクトとメソッドに対するアクセス権を付与したり、取り消したりできます。

DataStax Enterpriseは、RPCパーミッションを付与する以下のCQL構文をcqlshでサポートしています。
GRANT permission ON ALL REMOTE CALLS TO role;
GRANT EXECUTE ON REMOTE OBJECT object TO role;
GRANT EXECUTE ON REMOTE METHOD object.method TO role;
DataStax Enterpriseは、RPCパーミッションを取り消す以下のCQL構文をcqlshでサポートしています。
REVOKE EXECUTE ON ALL REMOTE CALLS FROM role;
REVOKE EXECUTE ON REMOTE OBJECT object FROM role;
REVOKE EXECUTE ON REMOTE METHOD object.method FROM role;
ここで、
  • EXECUTEは、RPCに適用される唯一のパーミッションです。詳細については、「アクセス制御マトリックス」を参照してください。
  • roleは、管理権限を付与または取り消すロールです。

RPCパーミッションをDseClientToolに付与する

dse client-toolコマンドを実行してSparkを起動するには、外部クライアントのRPCパーミッションを構成する必要があります。
GRANT EXECUTE ON REMOTE OBJECT DseClientTool TO USER;
注: SparkランチャーによってDseClientToolオブジェクトが暗黙的に呼び出されるため、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パーミッションを設定します。例を次に示します。
GRANT EXECUTE ON REMOTE OBJECT DseClientTool TO ADMINROLE;

多数のユーザーのパーミッションを管理する場合は、少数の上位のロールを再利用すると管理が大幅に容易になります。