スコープの ACL のカスタマイズ

スコープの ACL を設定することにより、スコープに Bucket またはトピックを追加できるユーザーを変更できます。

スコープの ACL エントリー

スコープの ACL エントリーに指定可能な項目は以下のとおりです。

  • アクセス制御(アクション)

    対象のユーザー/グループ/Thing が「何をできるか」を指定します。

    アクション 対象ユーザー/グループ/Thing ができること
    CREATE_NEW_BUCKET スコープ内に新たな Bucket を追加。
    CREATE_NEW_TOPIC スコープ内に新たなトピックを追加。
  • 対象(サブジェクト)

    「誰が」実行できるようになるかを指定します。

    サブジェクト 誰が実行可能か
    UserID:{USER_ID} 指定されたユーザー
    GroupID:{GROUP_ID} 指定されたグループのメンバー
    ThingID:{THING_ID} 指定された Thing
    UserID:ANY_AUTHENTICATED_USER ログイン済みの全ユーザー
    UserID:ANONYMOUS_USER 匿名ユーザー

    ログイン済みの全ユーザーと匿名ユーザーの定義については、サブジェクト をご覧ください。

これらのアクションとサブジェクトを使って、「どのスコープの」アクセス許可を変更するかを以下の URL で指定します。

  • アプリケーションスコープ

    https://api-jp.kii.com/api/apps/{APP_ID}/acl/{ACTION}/{SUBJECT}
    アプリ管理者向け機能 で取得した管理者のアクセストークンが必要

  • グループスコープ

    https://api-jp.kii.com/api/apps/{APP_ID}/groups/{GROUP_ID}/acl/{ACTION}/{SUBJECT}
    グループオーナーのアクセストークンが必要

  • ユーザースコープ

    https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/acl/{ACTION}/{SUBJECT}
    https://api-jp.kii.com/api/apps/{APP_ID}/users/me/acl/{ACTION}/{SUBJECT}
    スコープオーナーのアクセストークンが必要

  • Thing スコープ

    https://api-jp.kii.com/api/apps/{APP_ID}/things/VENDOR_THING_ID:{VENDOR_THING_ID}/ acl/{ACTION}/{SUBJECT}
    https://api-jp.kii.com/api/apps/{APP_ID}/things/{THING_ID}/acl/{ACTION}/{SUBJECT}
    Thing または Thing オーナーのアクセストークンが必要

スコープの ACL の管理

スコープの ACL にエントリーを追加または削除できます。ACL エントリーの一覧を取得することもできます。

スコープに ACL エントリーを追加する

アプリケーションスコープに ACL エントリーを追加する例を以下に示します。この例では、ANONYMOUS_USER に CREATE_NEW_BUCKET アクションを許可しています。

curl -v -X PUT \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/acl/CREATE_NEW_BUCKET/UserID:ANONYMOUS_USER" \
  -d ""

初めに示した URL によって、その他のスコープも操作できます。

スコープの ACL エントリーを削除する

一旦許可したアクションを取り消すには、対応する ACL エントリーの DELETE リクエストを送信します。

この例では、アプリケーションスコープで ANY_AUTHENTICATED_USER に許可した CREATE_NEW_BUCKET アクションの ACL エントリーを削除しています。

curl -v -X DELETE \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/acl/CREATE_NEW_BUCKET/UserID:ANY_AUTHENTICATED_USER"

初めに示した URL によって、その他のスコープも操作できます。

アプリケーションの開発完了後に、アプリケーションスコープの ACL から ANY_AUTHENTICATED_USER に許可した CREATE_NEW_BUCKET アクションの ACL エントリーを削除しておくと、ユーザーが新しい Bucket を作成できなくなるため、データの保護に役立ちます。

デフォルトで付与されている ACL エントリーの一部は削除できません。詳細は スコープオーナーや作成者の ACL エントリーは削除できません をご覧ください。

スコープの ACL を取得する

スコープに設定されている ACL を取得するには、対応する URL からアクションやサブジェクトを省略した形で GET リクエストを送信します。

たとえば、アプリケーションスコープで CREATE_NEW_BUCKET アクションを許可されているサブジェクトの一覧は以下のようにして取得できます。

curl -v -X GET \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/acl/CREATE_NEW_BUCKET"

また、アプリケーションスコープの ACL 全体は、以下のように取得できます。

curl -v -X GET \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/acl"

いずれの例もアプリケーションスコープを指定していますが、初めに示した URL によって、その他のスコープも操作できます。

期待どおりに動作しない場合

  • ACL エントリーを削除できない

    スコープオーナーにデフォルトで付与される ACL エントリーは削除できません。詳細は スコープオーナーや作成者の ACL エントリーは削除できません をご覧ください。

  • アプリケーションスコープの ACL を変更できない

    アプリケーションスコープの ACL を変更するにはアプリ管理者の権限が必要です。アプリ管理者向け機能 の方法によってアプリ管理者のアクセストークンを取得し、そのアクセストークンをリクエストで使用します。

    なお、アクセス権の操作が可能なユーザーについては、スコープに対するアクセス権 の表をご覧ください。