ACL エントリー
ACL は ACL エントリーから構成されます。さらに、ACL エントリーはサブジェクトとアクションから構成されます。
ここでは、ACL エントリーを設定して ACL を変更する方法について説明します。
ACL エントリーのクラス構成
Kii Cloud SDK で ACL エントリーを扱う際に使用するクラスの構成を以下に示します。
サブジェクトとアクション
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 を変更する をご覧ください。