ACL エントリー
ACL は ACL エントリーから構成されます。さらに、ACL エントリーはサブジェクトとアクションから構成されます。
ここでは、ACL エントリーを設定して ACL を変更する方法について説明します。
ACL エントリーのクラス構成
Kii Cloud SDK で ACL エントリーを扱う際に使用するクラスの構成を以下に示します。JavaScript では厳密なクラス定義は行われていませんが、このクラス図の設計に基づいた考え方から機能が定義されています。
サブジェクトとアクション
ACL エントリーはサブジェクトとアクションを持ちます。
サブジェクト
サブジェクトは「誰が」に相当する情報です。
サブジェクトには以下の 5 つのいずれかを指定することができます。
実在するユーザー
実在するグループ
実在する Thing
匿名ユーザー(ログインしていない状態のユーザー、ログインした任意のユーザー、アクセストークンを持たない Thing、または、アクセストークンを持った Thing)
ログイン済みの全ユーザー(ログインした任意のユーザー、または、アクセストークンを持った Thing)
「匿名ユーザー」と「ログイン済みの全ユーザー」は ACL エントリーのサブジェクトにだけ指定できる概念で、ログイン等で使用できるものではありません。クライアント SDK では、KiiAnonymousUser と KiiAnyAuthenticatedUser が該当しますが、これらは KiiSubject とだけ関連を持ち、KiiUser との関連はない点に注意してください。
アクション
アクションは「何をする」に相当する情報です。
ACL エントリーに設定できるアクションは以下のとおりです。アクション名は SDK によって異なりますが、内容は同じです。表に挙げた名前は REST API で指定するものです。
対象 | アクション | 説明 |
---|---|---|
スコープ | CREATE_NEW_BUCKET | スコープ内に新たな Bucket を追加。 |
CREATE_NEW_TOPIC | スコープ内に新たなトピックを追加。 | |
Bucket | CREATE_OBJECTS_IN_BUCKET | Bucket 内に新たな KiiObject を追加。 |
QUERY_OBJECTS_IN_BUCKET | Bucket 内の KiiObject を検索。 | |
READ_OBJECTS_IN_BUCKET | Bucket 内の KiiObject を読み取り。 | |
DROP_BUCKET_WITH_ALL_CONTENT | Bucket 内の KiiObject とともに Bucket を削除。 | |
KiiObject | READ_EXISTING_OBJECT | KiiObject を読み取り。 |
WRITE_EXISTING_OBJECT | KiiObject を更新および削除。 | |
トピック | SUBSCRIBE_TO_TOPIC | トピックを講読。 |
SEND_MESSAGE_TO_TOPIC | トピックにプッシュメッセージを送信。 |
スコープの ACL は REST API でのみ変更できるため、スコープのアクションは上記のクラス図に含まれません。
Bucket、KiiObject、トピックのそれぞれについて設定できる項目が異なります。BucketAction が Bucket に対する操作、ObjectAction が KiiObject に対する操作、TopicAction がトピックに対する操作です。
ACL の変更リクエスト
ACL を変更するときは、クライアント側で ACL の差分を作成し、それを ACL の変更リクエストとして送信します。
たとえば、以下のようにサーバー側の KiiObject に 4 件の ACL エントリーがあったとき、「井田」の「書き込み」の権限を削除、「宇田」の「読み込み」の権限を新規に追加したいとします。
Kii Cloud SDK の KiiACLEntry
クラスは、サブジェクトとアクションの他に、権限の追加または削除の区別を示す Boolean 値 grant
を属性として持っています。
クライアントでは、追加したい権限に対して grant=true
の ACL エントリーを、削除したい権限に対して grant=false
の ACL エントリーをそれぞれ作成します。ACL エントリーをサーバーに送信すると、サーバー上の ACL が変更されます。
開発者ポータルでの変更
Bucket の ACL に限り、開発者ポータルからカスタマイズできます。
詳細は Bucket の ACL を変更する をご覧ください。