キースペースとテーブルのパーミッションの管理

キースペースとテーブルへのアクセスの管理方法に関する例を示します。

DataStax Enterpriseは、トランザクション・ノード上のデータに対するロール・ベース・アクセス制御をサポートしています。CQLコマンドのGRANTおよびREVOKEを使用すると、オブジェクトとメソッドに対するアクセス権を付与したり、取り消したりできます。パーミッションは階層構造で、親オブジェクトにパーミッションが付与されると、自動的にすべての祖先へのフル・アクセスが可能になります。データ・オブジェクトの構造は以下のとおりです。
ALL KEYSPACES
  • KEYSPACE keyspace_name
    • TABLE table_name
      • 'filtering_string' ROWS
DataStax Enterpriseは、パーミッションを付与する以下のCQL構文をcqlshでサポートしています。
GRANT permission_name ON resource_name TO role_name; 
DataStax Enterpriseは、パーミッションを取り消す以下のCQL構文をcqlshでサポートしています。
REVOKE permission_name ON resource_name FROM role_name; 
各データ・リソースの型に適用されるパーミッションを以下で説明します。
permission_name resource_name 説明
ALTER ALL KEYSPACES 任意のキースペース内のALTER KEYSPACE、ALTER TABLE、ALTER TYPE、RESTRICT ROW。
ALTER KEYSPACE keyspace_name 指定したキースペース内のALTER KEYSPACE、ALTER TABLE、ALTER TYPE、RESTRICT ROW。
ALTER TABLE table_name 指定したテーブルのALTER TABLEおよびRESTRICT ROW。
ALTER 'filtering_data' ROWS IN table_name ALTER
CREATE ALL KEYSPACES 任意のキースペース内のCREATE KEYSPACE、CREATE TABLE、CREATE FUNCTIONS、CREATE TYPE。
CREATE KEYSPACE keyspace_name 指定したキースペース内のCREATE TABLEおよびCREATE TYPE。
DROP ALL KEYSPACES 任意のキースペース内のDROP KEYSPACE、DROP TABLE、DROP TYPE。
DROP KEYSPACE keyspace_name 指定したキースペース内のDROP TABLEおよびDROP TYPE。
MODIFY ALL KEYSPACES 任意のテーブルの行に対するINSERT、UPDATE、DELETE、TRUNCATE。
MODIFY KEYSPACE keyspace_name 指定したキースペース内の任意のテーブルの行に対するINSERT、UPDATE、DELETE、TRUNCATE。
MODIFY TABLE table_name 指定したテーブルの任意の行に対するINSERT、UPDATE、DELETE、TRUNCATE。
MODIFY 'filtering_data' ROWS IN table_name フィルター基準に一致する、テーブル内の行の'filtering_data'に一致する行に対するINSERT、UPDATE、DELETE、およびTRUNCATE。
注: 詳細については、「アクセス制御マトリックス」を参照してください。

手順

  • すべてのキースペースのすべてのパーミッションが付与されているロールを作成します。
    CREATE ROLE keyspace_admin;
    GRANT ALL PERMISSIONS ON ALL KEYSPACES TO keyspace_admin;
    GRANT keyspace_admin to martin;
  • 1つのキースペースの管理者ロールを作成します。
    CREATE ROLE cycling_admin;
    GRANT ALL PERMISSIONS IN KEYSPACE cycling to cycling_admin;
    GRANT cycling_admin TO sandy;
  • キースペースcycling内の任意のテーブルに対してデータの変更のみ(INSERT、UPDATE、DELETE、およびTRUNCATE)を実行できるロールを作成します。
    GRANT MODIFY ON KEYSPACE cycling TO team_manager;
    GRANT team_manager to sandy;
  • cyclingキースペース内でデータを選択して関数を使用することのみが可能なロールを作成します。
    CREATE ROLE cyclist_analyst;
    GRANT SELECT ON KEYSPACE cycling TO cyclist_analist;
    GRANT EXECUTE ON ALL FUNCTIONS IN KEYSPACE cycling to cyclist_analist;
    GRANT cyclist_analist TO wilson;