ACL エントリー

ACL は ACL エントリーから構成されます。さらに、ACL エントリーはサブジェクトとアクションから構成されます。

ここでは、ACL エントリーを設定して ACL を変更する方法について説明します。

ACL エントリーのクラス構成

Kii Cloud SDK で ACL エントリーを扱う際に使用するクラスの構成を以下に示します。iOS では <<interface>><<protocol>> に読み替えてください。

サブジェクトとアクション

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 クラスは、サブジェクトとアクションの他に、権限の追加または削除の区別を示す Bool 値 grant を属性として持っています。

クライアントでは、追加したい権限に対して grant=true の ACL エントリーを、削除したい権限に対して grant=false の ACL エントリーをそれぞれ作成します。ACL エントリーをサーバーに送信すると、サーバー上の ACL が変更されます。

開発者ポータルでの変更

Bucket の ACL に限り、開発者ポータルからカスタマイズできます。

詳細は Bucket の ACL を変更する をご覧ください。