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