職務の分離の実施

職務の分離機能を使用して、他のCQLコマンドの実行権限のない、パーミッション管理の管理者ロールを構成します。

職務の分離機能を使用して、他のCQLコマンドの実行権限のない、パーミッション管理の管理者ロールを構成します。

パーミッション管理権限の割り当て

管理者や他のユーザーが、リソースに対するパーミッションのGRANTまたはREVOKEを使用するには、オブジェクトに対する次のいずれかのパーミッションがそのロールに必要です。
  • AUTHORIZE granted is true(付与されたのは真実) - リソースに付与されたパーミッションを管理します。このロールでは、ユーザーはパーミッションに対応するCQLコマンドを実行することもできます。
    たとえば、all keyspacesリソースで承認と選択の両方を持つadminロールです。
    GRANT AUTHORIZE, SELECT ON ALL KEYSPACES TO admin;
    そのロールを持つユーザーは、独自のロールを含む他のロールに対するAUTHORIZEとSELECTの両方のパーミッションをGRANTおよびREVOKEできます。
    LIST ALL PERMISSIONS OF admin;
    role   | username | resource        | permission | granted | restricted | grantable
    -------+----------+-----------------+------------+---------+------------+-----------
     admin |  dbadmin | <all keyspaces> |     SELECT |    True |      False |     False
     admin |  dbadmin | <all keyspaces> |  AUTHORIZE |    True |      False |     False
  • grantable is true for a permission(パーミッションに付与可能は真実) - 割り当てられていない、他のロールに対して指定されたパーミッションのみを管理します。関連するコマンドは、付与されたのが真実の場合も、実行可能です。
    たとえば、sec_adminが他のロールに対するパーミッションをGRANTおよびREVOKEできるようにし、すべてのキースペース内のデータにアクセスしないようにするには、次のようにします。
    GRANT AUTHORIZE FOR CREATE, ALTER, DROP, SELECT, MODIFY, DESCRIBE 
    ON ALL KEYSPACES
    TO sec_admin;
    パーミッションが、以下であることを確認します。
    LIST ALL PERMISSIONS OF sec_admin;
    Granted(付与済み)がfalseで、grantable(付与可能)がtrueである。
     role      | username   | resource        | permission | granted | restricted | grantable
    -----------+------------+-----------------+------------+---------+------------+-----------
     sec_admin |  sec_admin | <all keyspaces> |     CREATE |   False |      False |      True
     sec_admin |  sec_admin | <all keyspaces> |      ALTER |   False |      False |      True
     sec_admin |  sec_admin | <all keyspaces> |       DROP |   False |      False |      True
     sec_admin |  sec_admin | <all keyspaces> |     SELECT |   False |      False |      True
     sec_admin |  sec_admin | <all keyspaces> |     MODIFY |   False |      False |      True
     sec_admin |  sec_admin | <all keyspaces> |   DESCRIBE |   False |      False |      True
ヒント: ALL PERMISSIONSが付与されているロールは、すべてのロールに対するリソース・パーミッションを委任できます。ユーザーがオブジェクトを作成すると、ALL PERMISSIONSが自動的に付与されます。
制約事項: ロールを管理し、データベース・オブジェクトにアクセスする際には、以下の規則が適用されます。
  • 新しいロールを作成するには、ALL ROLESにCREATEパーミッションが付与される必要があります。
  • GRANT/REVOKEには、リソースに対するパーミッションが付与可能であることが必要です(AUTHORIZE FOR permission_name)。
  • ユーザーは、自身のロール・プロパティのLOGINおよびSUPERUSERを変更することはできません。ALTERパーミッションを持つユーザーが、自身のアカウントをSUPERUSERにしたり、より上位のパーミッションを持つロールを作成したりすることはできません。

構文の承認

以下を使用して、ロールが、リソースに対して付与されたAUTHORIZEおよびその他のパーミッションをGRANTREVOKE
  • GRANTおよびREVOKEできるようにします。
    GRANT AUTHORIZE 
    ON (ALL KEYSPACES | TABLE table_name | 'filter_string' ROWS IN table_name)
    TO role_name;
  • リストされたパーミッションのみ。
    GRANT AUTHORIZE FOR permission_list
    ON resource_name 
    TO role_name;
タイプ パーミッション リソース
データ

ALTER

CREATE

DESCRIBE

DROP

MODIFY

SELECT

ALL KEYSPACES

KEYSPACE keyspace_name

TABLE table_name

'filtering_data' ROWS IN table_name

関数

ALTER

CREATE

DROP

EXECUTE

ALL FUNCTIONS

ALL FUNCTIONS IN KEYSPACE keyspace_name

FUNCTION function_name ( argument_types )

検索インデックス

SEARCH.ALTER

SEARCH.COMMIT

SEARCH.CREATE

SEARCH.DROP

SEARCH.REBUILD

SEARCH.RELOAD

ALL SEARCH INDICES

SEARCH INDEX [keyspace_name.]table_name

ロール

ALTER

CREATE

DESCRIBE

DROP

ALL ROLES

ROLE role_name

プロキシ・ロール PROXY.EXECUTE

PROXY.LOGIN

ROLE role_name

認証スキーム EXECUTE ALL AUTHENTICATION SCHEMES

LDAP SCHEME

KERBEROS SCHEME

INTERNAL SCHEME

MBean DESCRIBEEXECUTEMODIFY、およびSELECT ALL MBEANS > MBEANS pattern > MBEAN name
Sparkアプリケーション

CREATE

DESCRIBE

ANY WORKPOOL > WORKPOOL datacenter_name

MODIFY

DESCRIBE

ANY SUBMISSION

ANY SUBMISSION IN WORKPOOL datacenter_name

SUBMISSION id IN WORKPOOL datacenter_name

リモート・コール EXECUTE ALL REMOTE CALLS > REMOTE OBJECT object_name > REMOTE METHOD object_name.method_name

ロール管理パーミッションの委任

  • AUTHORIZEがロールに付与されると、ターゲット・ロールは、リソースに対するパーミッションを他のロール(それ自体を含む)に委任できます。
    GRANT AUTHORIZE ON ALL ROLES 
    TO role_name;
    このパーミッションは、ロールのパーミッションがリストされたときにgranted(付与済み)として表示されます。
    ヒント: ALL PERMISSIONSが付与されると、そのロールは、それ自体を含むすべてのロールに対するすべてのパーミッションをGRANTおよびREVOKEする権限を持ちます。
  • ROLE
    GRANT permission[, permission ...] 
    ON ROLE role_name 
    TO role_name;
    ここで、パーミッションは、ALL PERMISSIONS、ALTER、AUTHORIZE、CREATE、DESCRIBE、およびDROPです
1. 権限付与
パーミッション リソース
AUTHORIZE ALL ROLES 発行元ロールが付与されたそのロールのパーミッションをGRANTおよびREVOKEします。
AUTHORIZE FOR permission_list ALL ROLES リストされたパーミッションをGRANTおよびREVOKEします。
AUTHORIZE ROLE name 発行元ロールが付与されたそのロールのパーミッションをGRANTおよびREVOKEします。
AUTHORIZE FOR permission_list ROLE name リストされたパーミッションをGRANTおよびREVOKEします。

リソース管理パーミッションの委任

認証スキーム
  • ロールを管理する管理者に権限を委任します。
    GRANT AUTHORIZE [FOR EXECUTE] 
    ON (ALL AUTHETNICATION SCHEMES | LDAP SCHEME | KERBEROS SCHEME | INTERNAL SCHEME)
    TO role_name;
    • AUTHORIZE - AUTHORIZEパーミッションをロールが委任できるようにします。さらにEXECUTEも付与されている場合、このロールは実行パーミッションを委任できます。
    • AUTHORIZE FOR EXECUTE - 独自のログイン・スキームを変更せずに、他のどのロールがスキーマ・パーミッションを割り当てることができるかをロールが委任できるようにします。

アクセスの管理

オブジェクトに対するパーミッションを管理できるロールを設定します。

アクセス許可なしでオブジェクトに対するパーミッションを管理できるロールを設定します。

手順

  1. ロールを作成します。たとえば、securty_adminです。
    CREATE ROLE security_admin;
  2. そのロールにロールの管理を許可します:
    GRANT ALTER, CREATE, DROP, DESCRIBE
    ON ALL ROLES 
    TO security_admin;
  3. アクセス権を持たないすべてのパーミッションに対して承認を許可します。
    • データ・リソース
      GRANT AUTHORIZE FOR ALL PERMISSIONS 
      ON ALL KEYSPACES 
      TO security_admin;
      AUTHORIZE、CREATE、ALTER、DROP、SELECT、MODIFY、およびDESCRIBEパーミッションを他のロールに付与するロールを許可します。
    • 関数と集計リソース
      GRANT AUTHORIZE FOR ALL PERMISSIONS
      ON ALL FUNCTIONS 
      TO security_admin;
      AUTHORIZE、CREATE、ALTER、DROP、およびEXECUTEパーミッションを他のロールに付与するロールを許可します。
    • 検索インデックス
      GRANT AUTHORIZE FOR ALL PERMISSIONS 
      ON ALL SEARCH INDICES 
      TO security_admin;
      AUTHORIZE、SEARCH.CREATE、SEARCH.ALTER、SEARCH.DROP、SEARCH.RELOAD、SEARCH.REBUILD、およびSEARCH.COMMITを他のロールに付与するロールを許可します。
    • ロール
      GRANT AUTHORIZE FOR ALL PERMISSIONS 
      ON ALL ROLES 
      TO security_admin;
      AUTHORIZE、CREATE、ALTER、DROP、およびDESCRIBEパーミッションを他のロールに付与するロールを許可します。
    • 認証スキームのリソース
      GRANT AUTHORIZE FOR ALL PERMISSIONS 
      ON ALL AUTHENTICATION SCHEMES 
      TO security_admin;
      AUTHORIZE、およびEXECUTEパーミッションを他のロールに付与するロールを許可します。
    • DSEユーティリティのJMXリソース(MBean)
      GRANT AUTHORIZE FOR ALL PERMISSIONS 
      ON ALL MBEANS 
      TO security_admin;
      SELECT、MODIFY、AUTHORIZE、DESCRIBE、およびEXECUTEパーミッションを他のロールに付与するロールを許可します。
    • 分析アプリケーション
      • ワークプール
        GRANT AUTHORIZE FOR ALL PERMISSIONS 
        ON ANY WORKPOOL 
        TO security_admin;
        CREATE、DESCRIBE、およびAUTHORIZEパーミッションを他のロールに付与するロールを許可します。
      • 送信
        GRANT AUTHORIZE FOR ALL PERMISSIONS 
        ON ANY SUBMISSION 
        TO security_admin;
        MODIFY、DESCRIBE、およびAUTHORIZEパーミッションを他のロールに付与するロールを許可します。
    • リモート・プロシージャー・コール
      GRANT AUTHORIZE FOR ALL PERMISSIONS
      ON ALL REMOTE CALLS
      TO security_admin;
  4. ロール管理モードに応じてロールを割り当てます。
    • Internal - GRANTコマンドを使用して、ログインまたは別のグループ・ロールにロールを割り当てます。
      GRANT security_admin TO login_role_name;
    • LDAP - 一致するCN(securty_admin)を持つグループ・オブジェクトを作成し、ユーザーをグループのメンバーとして割り当てます。