キースペースとテーブルのパーミッションの管理
キースペースとテーブルへのアクセスの管理方法に関する例を示します。
DataStax Enterpriseは、トランザクション・ノード上のデータに対するロール・ベース・アクセス制御をサポートしています。CQLコマンドのGRANTおよびREVOKEを使用すると、オブジェクトとメソッドに対するアクセス権を付与したり、取り消したりできます。パーミッションは階層構造で、親オブジェクトにパーミッションが付与されると、自動的にすべての祖先へのフル・アクセスが可能になります。データ・オブジェクトの構造は以下のとおりです。
- ALL KEYSPACES
-
- KEYSPACE keyspace_name
- TABLE table_name
- 'filtering_string' ROWS
- TABLE table_name
- KEYSPACE keyspace_name
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;