ACL SETUSER username [rule [rule ...]]

指定されたルールで ACL ユーザを作成するか、既存のユーザのルールを変更します。これは Redis ACL ユーザを対話的に操作するためのメインのインタフェースです: iユーザ名が存在しない場合、コマンドは特権無しでユーザ名を作成し、連続する引数として提供される全てのルールを左から右に読み取り、ユーザ ACL ルールを指定通りに設定します。

ユーザが既に存在する場合は、すでに設定されているルールに加えて、提供されている ACL ルールが適用されるだけです。例えば:

ACL SETUSER virginia on allkeys +set

上記のコマンドは、アクティブ(on ルール)で、任意のキー(allkeys ルール)にアクセスでき、set(+set ルール)を呼び出すことができる virginia というユーザを作成します。次に、別の SETUSER 呼び出しでユーザルールを変更できます:

ACL SETUSER virginia +get

上記のルールは、新しいルールをユーザ virginia に適用しないため、SET 以外に、ユーザ virginia は GET コマンドも使えるようになります。

以前に定義されたルールが関係づけられているかどうかを気にせずに、ユーザを最初から確実に定義したい場合は、他の全ての既存のルールをフラッシュするために、最初のルールとして特別なルール reset を使えます。

ACL SETUSER antirez reset [... other rules ...]

ユーザをリセットすると、作成されたばかりの状態に戻ります: 非アクティブ(off ルール)、コマンドを実行できない、キーにアクセスできない:

> ACL SETUSER antirez reset
+OK
> ACL LIST
1) "user antirez off -@all"

ACL ルールは、"on"、"off"、"reset"、"allkeys" などの単語であるか、特殊文字で始まりその後に他の文字列(間に空白を入れない)が続く、"+SET" のような特別なルールのいずれかです。

以下のドキュメントは、このコマンドの機能に関するリファレンスマニュアルですが、ACL チュートリアルは、ACL システムが一般的にどのように機能するかをより優しく紹介している場合があります。

*ルールのリスト

これは、サポートされている全ての Redis ACL ルールのリストです:

  • on: ユーザをアクティブとして設定します。AUTH <username> <password> を使ってこのユーザとして認証することが可能になります。
  • off: ユーザを非アクティブとして設定します。このユーザとして記録することができません。そのようなユーザで既に認証された接続がある後で、ユーザが無効になる (off に設定)場合、接続は期待通りに機能し続けることに注意してください。また、古い接続を kill するには、ユーザオプションを指定して CLIENT KILL を使うことができます。別の方法は、ACL DELUSER を使ってユーザを削除することです。これにより、削除されたユーザとして認証された全ての接続が切断されます。
  • ~<pattern>: 指定されたキーパターン (KEYS コマンドのような glob 形式パターン)を、ユーザがアクセスできるキーパターンのリストに追加します。同じユーザに必要な数のキーパターンを追加することができます。例: ~objects:*
  • allkeys: ~* の例。ユーザが全てのキーにアクセスできるようにします。
  • resetkey: ユーザがアクセスできるキーパターンのリストから全てのキーパターンを削除します。
  • +<command>: このコマンドを、ユーザが呼び出すことができるコマンドのリストに追加します。例: +zadd.
  • +@<category>: 指定されたカテゴリの全てのコマンドを、ユーザが実行できるコマンドリストに追加します。例: +@string (adds all the string commands). カテゴリのリストについては、ACL CAT コマンドを確認してください。
  • +<command>|<subcommand>: 指定されたコマンドを、ユーザが実行できるコマンドのリストに追加しますが、指定されたサブコマンドに対してのみです。例: +config|get. 指定されたコマンドが指定されたユーザのフルバージョンで既に許可されている場合は、エラーを生成します。注意: サブコマンドを削除するための対称的なコマンドはありません。コマンド全体を削除して、許可するサブコマンドを再度追加する必要があります。これはサブコマンドを削除するよりもはるかに安全です。将来、Redis は新しい危険なサブコマンドを追加する可能性があるため、減算による構成は適切ではありません。
  • allcommands: +@all のエイリアス。このユーザが実行する、モジュールを介してロードされる将来のコマンドを含む、サーバにある全てのコマンドを追加します。
  • -<command>:+<command> と似ていますが、コマンドを追加する代わりに削除します。
  • -@<category>: +@<category> に似ていますが、カテゴリ内の全てのコマンドを追加するのではなく削除します。
  • nocommands: -@all のエイリアス。全てのコマンドを削除すると、ユーザは何も実行できなくなります。
  • nopass: ユーザは "no password" ユーザとして設定されます。これは、そのようなユーザとして任意のパスワードで認証できることを意味します。デフォルトでは、特別な default ユーザは "nopass" に設定されています。nopass ルールは、ユーザに設定されている全てパスワードもリセットします。
  • >password: 指定したクリアテキストのパスワードをユーザパスワードのリストにハッシュパスワードとして追加します。全てのユーザが多数のアクティブなパスワードを持つことができるため、パスワードのローテーションが簡単になります。指定されたパスワードはサーバ内のクリアテキストに保存されません。例: >mypassword
  • #<hashedpassword>: 指定されたハッシュパスワードをユーザパスワードのリストに追加します。Redis ハッシュパスワードは SHA256 でハッシュ化され、16進文字列に変換されます。例: #c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
  • <password: >password と似ていますが、パスワードを追加する代わりに削除します。
  • !<hashedpassword>: #<hashedpassword> と似ていますが、パスワードを追加する代わりに削除します。
  • reset: ユーザから全ての機能を削除します。パスワード無しで off に設定され、コマンドを実行できず、キーにアクセスできません。

*返り値

Simple string reply: 成功時に OK

ルールにエラーがある場合、エラーが返されます。

*

> ACL SETUSER alan allkeys +@string +@set -SADD >alanpassword
+OK

> ACL SETUSER antirez heeyyyy
(error) ERR Error in ACL SETUSER modifier 'heeyyyy': Syntax error
TOP
inserted by FC2 system