Couchbase Mobileアプリケーション開発へのロードマップもご覧ください。
はじめに
エッジコンピューティングを実現するCouchbase Mobile紹介:Sync Gatewayによるデータ同期におけるアクセス制御モデルにも書いた通り、Sync Gatewayでは、ユーザーとロールが重要な役割を持ちます。
機構
ドキュメントの配布とユーザーアクセスを構成する方法には以下があります。
- 3.0ベータ以前(静的):
- 構成ファイルを利用
- 3.0ベータ以降(動的):
- 管理者RESTエンドポイント:
- 同期関数(
sync()
function)内部で、APIを利用
同期ゲートウェイ構成ファイル内で静的に構成するオプションを使用するには、disable_persistent_config
フラグをtrue
に設定してSync Gatewayを実行する必要があります。
ここでは、管理者RESTエンドポイントを利用した構成方法を中心に紹介します。
ユーザーの作成
概要
ドキュメントへのアクセスを許可する前に、Sync Gatewayでユーザーを作成する必要があります。
ユーザー作成については、OIDCを利用し、IDトークンの検証が成功した後にユーザーを自動登録するようにOIDC認証を構成することもできます。
構成方法
管理REST API
POSTリクエストをAdmin Rest Api_userエンドポイント({db}/_user/{name}
)に送信して、新しいユーザーを作成します。URLの最後にユーザー名を含めます。既存のユーザーを更新する場合は、代わりにPUTを送信します。
$ curl -vX POST "http://localhost:4985/mydatabase/_user/" -H
"accept: application/json" -H "Content-Type: application/json" -d
'{"name": "Edge1User", "password": "pass"}' ①
$ curl -vX PUT "http://localhost:4985/mydatabase/_user/Edge1User" -H
"accept: application/json" -H "Content-Type: application/json" -d
'{"name": "Edge1User", "admin_channels": ["RandomChannel"]}' ②
①新しいユーザー「Edge1User」を追加します。
②既存のユーザー「Edge1User」を更新し、admin_channels
データを追加します
OIDC
curl --location --request PUT 'http://localhost:4985/ourdb/_config' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
oidc: {
providers: {
google_implicit: {
issuer:https://accounts.google.com,
client_id:yourclientid-uso.apps.googleusercontent.com,
register:true
},
},
}
}'
register:true
設定により、検証が正常に完了すると、Sync Gatewayユーザーが自動的に作成されます。
ロールの作成
概要
ロールの作成はオプションです。ユーザーを論理的にグループ化する必要があるかどうかは、ユースケースによって異なります。
構成方法
管理REST API
/{tkn-db}/_role/
エンドポイントを使用して新しいロールを作成します。
$ curl -vX POST "http://localhost:4985/mydatabase/_roles/" -H
"accept: application/json" -H "Content-Type: application/json" -d
'{"name": "Edge1", "admin_channels": ["channel1", "channel3"]]}'
ここでは、「Edge1」ロールを追加しています。
ユーザーのロールへの割り当て
概要
ユーザーをロールに(またはロールから)割り当てる(または削除する)ことができます。
ロールを削除すると、そのロールが関連付けられているチャネルへのアクセスが事実上取り消されます。
構成方法
管理REST API
$ curl -vX PUT "http://localhost:4985/mydatabase/_user/{user}" -H
"accept: application/json" -H "Content-Type: application/json" -d
'{ "admin_roles": ["Edge1"]}'
{user}
は、更新するユーザー名です(例:「Edge1User」)。