KiiObject の ACL のカスタマイズ
KiiObject の ACL を設定することにより、Bucket 内の KiiObject それぞれに対するアクセス権を変更できます。
KiiObject の ACL エントリー
KiiObject の ACL エントリーに指定可能な項目は以下のとおりです。
アクション(アクセス制御)
対象のユーザー/グループ/Thing が「何をできるか」を指定します。
アクション 対象ユーザー/グループ/Thing ができること READ_EXISTING_OBJECT KiiObject の読み取り。 WRITE_EXISTING_OBJECT KiiObject の更新と削除。 注意:Bucket のアクションである READ_OBJECTS_IN_BUCKET アクションを許可されているサブジェクトは、READ_EXISTING_OBJECT アクションを許可されているかどうかにかかわらず、Bucket 内の全ての KiiObject を無条件で読み取れます。動作例は ACL の変更の例 を参照してください。
サブジェクト(対象)
「誰が」実行できるようになるかを指定します。
サブジェクト 誰が実行可能か UserID:{USER_ID} 指定されたユーザー。 GroupID:{GROUP_ID} 指定されたグループのメンバー。 ThingID:{THING_ID} 指定された Thing。 UserID:ANY_AUTHENTICATED_USER ログイン済みの全ユーザー。 UserID:ANONYMOUS_USER 匿名ユーザー。 ログイン済みの全ユーザーと匿名ユーザーの定義については、サブジェクト をご覧ください。
これらのアクションとサブジェクトを使って、「どの KiiObject の」アクセス許可を変更するかを以下の URL で指定します。
アプリケーションスコープ:
https://api-jp.kii.com/api/apps/{APP_ID}/buckets/{BUCKET_ID}/objects/{OBJECT_ID}/acl/ {ACTION}/{SUBJECT}
KiiObject 作成者のアクセストークンが必要グループスコープ:
https://api-jp.kii.com/api/apps/{APP_ID}/groups/{GROUP_ID}/buckets/{BUCKET_ID}/objects/ {OBJECT_ID}/acl/{ACTION}/{SUBJECT}
KiiObject 作成者、または、グループオーナーのアクセストークンが必要ユーザースコープ:
https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/objects/ {OBJECT_ID}/acl/{ACTION}/{SUBJECT}
https://api-jp.kii.com/api/apps/{APP_ID}/users/me/buckets/{BUCKET_ID}/objects/ {OBJECT_ID}/acl/{ACTION}/{SUBJECT}
KiiObject 作成者、または、スコープオーナーのアクセストークンが必要Thing スコープ:
https://api-jp.kii.com/api/apps/{APP_ID}/things/VENDOR_THING_ID:{VENDOR_THING_ID}/ buckets/{BUCKET_ID}/objects/{OBJECT_ID}/acl/{ACTION}/{SUBJECT}
https://api-jp.kii.com/api/apps/{APP_ID}/things/{THING_ID}/buckets/{BUCKET_ID}/objects/ {OBJECT_ID}/acl/{ACTION}/{SUBJECT}
KiiObject 作成者、Thing、または、Thing オーナーのアクセストークンが必要
KiiObject の ACL の管理
KiiObject の ACL にエントリーを追加または削除できます。ACL エントリーの一覧を取得することもできます。
KiiObject に ACL エントリーを追加する
さまざまなサブジェクトに対して READ_EXISTING_OBJECT アクションを許可する例を以下に挙げます。
ANONYMOUS_USER(匿名ユーザー)に READ_EXISTING_OBJECT アクションを許可する
curl -v -X PUT \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
"https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/objects/{OBJECT_ID}/acl/READ_EXISTING_OBJECT/UserID:ANONYMOUS_USER"
ANY_AUTHENTICATED_USER(ログイン済みの全ユーザー)に READ_EXISTING_OBJECT アクションを許可する
curl -v -X PUT \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
"https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/objects/{OBJECT_ID}/acl/READ_EXISTING_OBJECT/UserID:ANY_AUTHENTICATED_USER"
あるグループに READ_EXISTING_OBJECT アクションを許可する
curl -v -X PUT \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
"https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/objects/{OBJECT_ID}/acl/READ_EXISTING_OBJECT/GroupID:{GROUP_ID}"
あるユーザーに READ_EXISTING_OBJECT アクションを許可する
curl -v -X PUT \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
"https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/objects/{OBJECT_ID}/acl/READ_EXISTING_OBJECT/UserID:{USER_ID}"
ある Thing に READ_EXISTING_OBJECT アクションを許可する
curl -v -X PUT \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
"https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/objects/{OBJECT_ID}/acl/READ_EXISTING_OBJECT/ThingID:{THING_ID}"
KiiObject の ACL エントリーを削除する
一旦許可したアクションを取り消すには、対応する ACL エントリーの DELETE リクエストを送信します。
この例では、ANONYMOUS_USER(匿名ユーザー)に許可した WRITE_EXISTING_OBJECT アクションの ACL エントリーを削除しています。
curl -v -X DELETE \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
"https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/objects/{OBJECT_ID}/acl/WRITE_EXISTING_OBJECT/UserID:ANONYMOUS_USER"
初めに示した URL によって、その他のスコープも操作できます。
KiiObject の ACL を取得する
KiiObject に設定されている ACL を取得するには、対応する URL からアクションやサブジェクトを省略した形で GET リクエストを送信します。
たとえば、WRITE_EXISTING_OBJECT アクションを許可されているサブジェクトの一覧は以下のようにして取得できます。
curl -v -X GET \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
"https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/objects/{OBJECT_ID}/acl/WRITE_EXISTING_OBJECT"
また、該当 KiiObject の ACL 全体は、以下のように取得できます。
curl -v -X GET \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
"https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/buckets/{BUCKET_ID}/objects/{OBJECT_ID}/acl"
いずれの例もユーザースコープの KiiObject を指定していますが、初めに示した URL によって、その他のスコープも操作できます。
期待どおりに動作しない場合
ACL エントリーを削除できない
KiiObject 作成者やスコープオーナーにデフォルトで許可されるアクションの ACL エントリーは削除できません。詳細は スコープオーナーや作成者の ACL エントリーは削除できません をご覧ください。