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