5. セキュリティ : ACL

5.1. ACL の概要

NEC BaaS では、アクセス制御に ACL (Access Control List) を使用します。

ACL は、グループ、オブジェクトストレージ(バケット、オブジェクト)、 ファイルストレージ(バケット、ファイル)などに付与し、 アクセス制限を行うことができます。

ACLには、対象データのオーナ、読み書き可能なユーザ・グループ、 管理ユーザ・グループのリストなどを記述します。

5.2. ACL の表記方法

ACL の表記は、各サービス毎に共通のため、ここで表記方法について説明します。

ACL は JSON 形式で表記し、対象の JSON 内に埋め込みます。 オブジェクトストレージのオブジェクトデータに埋め込む場合は、 以下のように "ACL" プロパティに埋め込む形になります。

{
   "_id": "xxxxxxx",
   "itemName": "Computer 12345",
   "price": 120000,
   "date": "2014-03-04",
   "ACL": {
       "owner": "514af36644f9cb2eb8000002",
       "r" : [ "g:authenticated" ],
       "w" : [ "514af36644f9cb2eb8000002", "514af36644f9cb2eb8000003" ],
       "c" : [],
       "u" : [],
       "d" : [],
       "admin" : [ "514af36644f9cb2eb8000002" ],
   }
}

ACL の各プロパティは以下の意味を持ちます。

  • owner : オブジェクトのオーナとなるユーザIDです。オーナはオブジェクトに対するすべての権限を持ちます。
  • r : オブジェクトを読み込み可能なユーザ・グループ一覧です。
  • w : オブジェクトを書き込み可能なユーザ・グループ一覧。以下 "c", "u", "d" 権限を包含します。
  • c : オブジェクトを作成可能なユーザ・グループ一覧。(後述する contentACL でのみ有効)
  • u : オブジェクトを更新可能なユーザ・グループ一覧。
  • d : オブジェクトを削除可能なユーザ・グループ一覧。
  • admin : オブジェクトの ACL を変更可能なユーザ・グループ一覧。

グループを指定する場合は、グループ名の前に "g:" プレフィクスを指定します。

また、以下の特殊グループ名を使用できます。

  • anonymous : 未ログインユーザを含む全ユーザを含むグループです。
  • authenticated : ログイン済みの全ユーザを含むグループです。

5.3. contentACL

ACL 付与対象がバケットの場合は、バケットそのものに対する ACL と、 バケットの中身に対する contentACL の2つを指定することができます。

以下、バケット情報の例を示します。 以下のように "ACL" および "contentACL" プロパティの2箇所に埋め込む形になります。 なお、contentACL には owner および admin フィールドはありません。

{
   "name": "BucketName",
   "ACL": {
       "owner": "514af36644f9cb2eb8000002",
       "r" : [ "g:authenticated" ],
       "admin" : [ "514af36644f9cb2eb8000002" ],
   },
   "contentACL": {
       "r" : [ "g:authenticated" ],
       "w" : [ "514af36644f9cb2eb8000002", "514af36644f9cb2eb8000003" ],
   }
}