アクセス確認
目的
管理REST APIを使用して、以下を確認することができます。
-
ユーザーがアクセスできるチャネル
-
ロールがアクセスできるチャネル
-
ドキュメントが割り当てられているチャネル
コンテクスト
ユーザーアカウントのall_channelsプロパティによって、ユーザーがアクセスできるチャネルが決まります。その値は、次の和集合から導き出されます。
-
管理RESTAPIを使用して設定されるユーザーの
admin_channelsプロパティ。 -
ドキュメントの現在のリビジョンに対して呼び出されたSync関数からの
access()呼び出しによって、ユーザーがアクセスを許可されたチャネル。 -
ユーザーが属するロールの
all_channelsプロパティ。これは、上記のルールを介して決定されます。
エンドポイントの種類と利用法
ユーザー
/{tkn-db}/_user/{name}エンドポイントにGETリクエストを送信します。
ユーザーpupshawのアクセスを確認します。
curl http://localhost:4985/db/_user/pupshaw
以下の出力からユーザーpupshawは、以下のチャネルにアクセスできることがわかります。
-
allチャネル(admin_channels設定を通じて) -
hoopyチャネル(froodsロールのadmin_channels設定を通じて)
{
"admin_channels": [
"all"
],
"admin_roles": [
"froods"
],
"all_channels": [
"all",
"hoopy"
],
"name": "pupshaw",
"roles": [
"froods"
]
}
ロール
/{tkn-db}/_role/エンドポイントにGETリクエストを送信します。
ロールfroodのアクセスを確認します。
curl http://localhost:4985/db/_role/frood
以下の出力からロールfroodは、以下のチャネルにアクセスできることがわかります。
-
hoopyチャネル(froodsロールのadmin_channels設定を通じて)
{
"name": "froods",
"admin_channels": [
"hoopy"
],
"admin_roles": [
"froods"
],
"all_channels": [
"hoopy"
]
}
ドキュメント
/{tkn-db}/_alldocsエンドポイントにGETリクエストを送信します。
キーourdocを持つドキュメントがどのチャネルにアサインされているかを確認します。
curl http://localhost:4985/ourdb/_all_docs?channels=true&keys=[ourdoc]" -H "accept: application/json"
以下の出力からドキュメントourdocは、allとhoopyチャンネルに割り当てられていることがわかります。
このドキュメントは、hoopyへ割り当てられているため、froodsロール、したがって、pupshawユーザーが利用することができることが分かります。
{
"id": "ourdoc",
"key": "ourdoc",
"value": {
"channels": [
"short",
"hoopy"
],
"rev": "1-86effb929acbf953905dd0e3974f6051"
}
}
関連情報