0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Sync Gateway利用方法:ユーザーとロールの作成・管理

Last updated at Posted at 2021-11-01

Couchbase Mobileアプリケーション開発へのロードマップもご覧ください。

はじめに

エッジコンピューティングを実現するCouchbase Mobile紹介:Sync Gatewayによるデータ同期におけるアクセス制御モデルにも書いた通り、Sync Gatewayでは、ユーザーとロールが重要な役割を持ちます。

機構

ドキュメントの配布とユーザーアクセスを構成する方法には以下があります。

  • 3.0ベータ以前(静的):
  • 構成ファイルを利用
  • 3.0ベータ以降(動的):
  • 管理者RESTエンドポイント: 
  • 同期関数(sync() function)内部で、APIを利用

image.png

同期ゲートウェイ構成ファイル内で静的に構成するオプションを使用するには、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」)。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?