データとセキュリティのアクセス権と認証方法

3463 ワード

アクセス許可(Authorization)
最も柔軟にデータセキュリティを保護する方法は、アクセス制御リスト(Access Control List)を通じて、通常は「ACLメカニズム」と略称されます.ACLの背後にあるメカニズムは、各操作を一部のユーザー(User)またはロール(Role)に許可し、これらのユーザーまたはロールのみがこれらの操作を実行できるようにすることです.たとえば、オブジェクトのデータを取得するには、読み取り権限(または読み取り権限を持つロールに属する)を持つ必要があります.また、オブジェクトのデータを変更または削除するには、書き込み権限(または書き込み権限を持つロールに属する)を持つ必要があります.
+
ACLの仕事の前提はユーザー(User)とロール(Role)です.ユーザー(クラス名_User)はLeanCloud内に構築されたアカウントシステムであり、ユーザー登録、ログイン、検証などの操作を自動的にサポートします.詳細はユーザーシステムを参照してください.ロール(クラス名_Role)は、ユーザーと他のロール(つまり、ロールにも階層関係がある)を含む名前付きオブジェクトであり、ロールを表す他のロールにも権限を付与すると、対応する権限が与えられます.
ACLは一般的にCLass、Objectレベルに対する権限に分けられ、細かく展開されない
ロール#ロール#
あなたのappの規模とユーザーベースが成長すると、ACLモデル(ユーザーごとに)よりも太いアクセスでデータを制御する方法が必要であることがわかります.このようなニーズに適応するためには、ロールベースの権限制御方式をサポートする必要があります.ロールシステムは、ユーザーや他のロールを含む名前のあるオブジェクトである権限によってデータにアクセスできる論理的な方法を提供します.1つのロールに付与される権限には、他のロールに付与される権限が隠されています.
+
たとえば、あなたのappでいくつかのコンテンツを管理しています.「司会者」のような役割が他のユーザーが作成した新しいコンテンツを変更したり削除したりすることができます.「管理者」には「司会者」と同じ権限があるかもしれませんが、appの他のグローバル設定を変更することもできます.ユーザーにこれらの役割を与えることで、新しいユーザーが司会者や管理者になり、各リソースに手動で権限を与える必要がないことを保証できます.
+
これらのユーザーグループを表す特殊なロールクラスを提供し、権限を設定するために使用します.ロールには、他のオブジェクトとは異なる特殊なフィールドがあります.
+
フィールド
説明
name
ロールの名前、この値は必須で、このロールが作成される限り、一度だけ設定できます.キャラクタの名前は、アルファベット、スペース、マイナス記号、下線の文字で構成する必要があります.この名前は、objectIdを必要とせずにロールを明記するために使用できます.
users
ロールの権限を継承する一連のユーザーの関係を指します.
roles
親ロールのすべての権限を継承する一連のサブロールの関係を指します.
通常、これらのロールを安全に保つために、モバイルappはロールの作成と管理に責任を負うべきではありません.代わりに、ロールは異なるWebページ上のインタフェースで管理されるか、手動で管理者に管理されるべきです.
より安全な認証方式
新しいAPI認証方式は、HTTPヘッダにおいてX-LC-Keyの代わりにX-LC-Signを使用し、App Keyの漏洩リスクを低減することである.例:
curl -X PUT \
  -H "X-LC-Id: FFnN2hso42Wego3pWq4X5qlu" \
  -H "X-LC-Sign: d5bcbb897e19b2f6633c716dfdfaf9be,1453014943466" \
  -H "Content-Type: application/json" \
  -d '{"content": "  HTTP header     X-LC-Sign           "}' \
  https://m6wlxaf8.api.lncld.net/1.1/classes/Post/

X-LC-Signの値はsign,timestamp[,master]の文字列です.
+
値をとる
拘束
説明
sign
なければならない
timestampにApp KeyまたはMaster Keyからなる文字列を加え、MD 5署名後の結果をします.
timestamp
なければならない
クライアントは、ミリ秒まで正確なunixタイムスタンプ(UTC)を生成します.
master
オプション
文字列"master"は、master key署名要求を使用する場合、この接尾辞を付けてmaster keyを使用することを明確に説明しなければならない.
たとえば、アプリケーションの情報は次のように仮定されます.
+
App Id FFnN2hso42Wego3pWq4X5qlu
App Key UtOCzqb67d3sN12Kts4URwy8
Master Key DyJegPlemooo4X1tg94gQkw1
リクエスト時間
2016-01-17 15:15:43.466
timestamp 1453014943466
App Keyを使用してsignを計算します.
md5( timestamp + App Key )  = md5(  1453014943466UtOCzqb67d3sN12Kts4URwy8  ) = d5bcbb897e19b2f6633c716dfdfaf9be
+
  -H "X-LC-Sign: d5bcbb897e19b2f6633c716dfdfaf9be,1453014943466" \

 
Master Keyを使用してsignを計算します.
+
md5( timestamp + Master Key ) = md5(  1453014943466DyJegPlemooo4X1tg94gQkw1  )  = e074720658078c898aa0d4b1b82bdf4b
+
  -H "X-LC-Sign: e074720658078c898aa0d4b1b82bdf4b,1453014943466,master" \

 
+
△最後にmasterを加えて、この署名がmaster keyを使用して生成されたことをサーバに伝えます.
+
マスターキーを使用すると、すべての権限チェックが回避され、自己開発の管理プラットフォームなど、制御可能な環境でのみ使用され、漏洩を完全に回避する必要があります.従って、上記2つのsignを計算する方法は、実際の状況に応じて1つの使用を選択することができる.