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" ],
   }
}