CREATE ROLE

アクセス制御に使用されるクラスター規模のデータベース・オブジェクトを作成します。

データベース・リソース(キースペース、テーブル、関数など)へのアクセス制御に使用されるクラスター規模のデータベース・オブジェクトを作成します。ロールを使用して、以下を行うことができます。

  • 他のロールへの割り当てと外部ユーザーへのマップが可能なパーミッションのセットを定義する。
  • 内部認証用のログイン・アカウントを作成する(実稼働環境では推奨されません)。
警告: フル・アクセスのログイン・アカウントcassandra(パスワードはcassandra)はデフォルトで有効になります。独自のフル・アクセス・ロールを作成して、cassandraアカウントを削除してください。

構文

CREATE ROLE [IF NOT EXISTS] role_name 
[WITH SUPERUSER = true | false
 | LOGIN = true | false  
 | PASSWORD =  'password' 
 | OPTIONS = option_map]
表 1. 凡例
構文規則 説明
大文字 リテラル・キーワード。
小文字 リテラル以外。
イタリック体 変数値。ユーザー定義値と置き換えます。
[] 任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。
( ) グループ。丸かっこ(( ))は、選択肢を含むグループを示します。丸かっこは入力しないでください。
| または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。
... 繰り返し可能。省略記号(...)は、構文要素を必要な回数だけ繰り返すことができることを示します。
'Literal string' 単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。
{ key : value } マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。
<datatype1,datatype2> セット、リスト、マップ、またはタプル。山かっこ(< >)で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型はコンマで区切ります。
cql_statement; CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。
[--] コマンドライン・オプションとコマンド引数は、2つのハイフン(--)で区切ります。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。
' <schema> ...</schema> ' 検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。
@xml_entity='xml_entity_type' 検索CQLのみ:スキーマ・ファイルおよびsolrConfigファイル内のXML要素を上書きするための実体とリテラル値を示します。
role_name
ロールには一意の名前を使用します。DataStax Enterpriseでは、すべての名前が強制的に小文字に変換されます。名前の大文字と小文字の区別を維持する場合や特殊文字を使用する場合は、引用符で囲んでください。
注: DSE Unified Authenticatorを使用して外部ユーザーをロールに自動的にマップするには、大文字と小文字の区別を含め、ロール名がLDAPグループ名と完全に一致していなければなりません。
SUPERUSER

trueを指定すると、AUTHORIZE、CREATE、DROPのパーミッションがすべてのロール(ALL ROLES)に自動的に付与されます。

デフォルトでは、スーパーユーザーのみがロールを管理できます。他のリソースを管理するには、そのリソースにパーミッション・セットを付与する必要があります。たとえば、すべてのキースペースのアクセス管理を許可するには、「GRANT ALL PERMISSIONS ON ALL KEYSPACES TO role_name」と指定します。

デフォルト:false。

LOGIN
trueを指定すると、そのロールによるログインが許可されます。内部認証、PasswordAuthenticator、またはDSE Unified Authenticator用のログイン・アカウントを作成するには、trueを使用します。

デフォルト:false。

PASSWORD
パスワードは単一引用符で囲みます。内部認証にはパスワードが必要です。
注: DSE Unified Authenticatorなどの外部ディレクトリーによって認証されるユーザーのロールは、パスワードなしのログインを有効にしておく必要があります。
OPTIONS = { option_map }

認証プラグイン用に予約されています。詳細については、オーセンティケーターのドキュメントを参照してください。

ログイン・アカウントの作成

  1. コーチのログイン・ロールを作成します。
    CREATE ROLE coach 
    WITH PASSWORD = 'All4One2day!' 
    AND LOGIN = true;
    内部認証を行うには、ロールにパスワードが必要です。
  2. ログインして、アカウントが機能することを確認します。
    LOGIN coach
  3. プロンプトに応じてパスワードを入力します。
    Password: 
  4. cqlshプロンプトにはロール名が含まれます。
    coach@cqlsh>

ロールの作成

内部認証を使用する場合のベスト・プラクティスは、パーミッションとログイン・アカウントに別々のロールを作成することです。ロールを作成したら、それをパーミッションとして別のロールに割り当てることができます。詳細については、「GRANT」を参照してください。外部オーセンティケーターのユーザーのロールは、ユーザーのグループ名にマップされます。LDAPマッピングでは、大文字と小文字が区別されます。

cyclingキースペース管理者のロール、つまりcyclingキースペースのみに対してフル・パーミッションを持つロールを作成します。

  1. ロールを作成します。
    CREATE ROLE cycling_admin;
    この時点では、ロールにパーミッションはありません。GRANTとREVOKEを使用してパーミッションを管理します。
    注: あるロールが変更できるのは、別のロールのパーミッションだけです。また、そのロールにもあるロール・パーミッションの変更(GRANTまたはREVOKE)しか行えません。
  2. cyclingキースペースへのフル・アクセスをロールに割り当てます。
    GRANT ALL PERMISSIONS on KEYSPACE cycling to cycling_admin;
  3. このロールをコーチに割り当てます。
    GRANT cycling_admin TO coach;
    これにより、cycling_adminロールを変更することで、すべてのcycling管理者のパーミッションを管理できるようになります。
  4. コーチのパーミッションを表示します。
    LIST ALL PERMISSIONS OF coach;
    
     role           | username       | resource           | permission
    ----------------+----------------+--------------------+------------
      cycling_admin |  cycling_admin | <keyspace cycling> |     CREATE
      cycling_admin |  cycling_admin | <keyspace cycling> |      ALTER
      cycling_admin |  cycling_admin | <keyspace cycling> |       DROP
      cycling_admin |  cycling_admin | <keyspace cycling> |     SELECT
      cycling_admin |  cycling_admin | <keyspace cycling> |     MODIFY
      cycling_admin |  cycling_admin | <keyspace cycling> |  AUTHORIZE
      cycling_admin |  cycling_admin |        <all roles> |  AUTHORIZE

パスワードの変更

あるロールが変更できるのは、そのロール自身のパスワードと、そのロールが変更パーミッションを持つ別のロールのパスワードです。 スーパーユーザーは、どのロールのパスワードでも変更できます。ロールのパスワードを変更するには、ALTERを使用します。
ALTER ROLE coach WITH PASSWORD = 'NewPassword'