CMS:コレクションの権限について

読了時間:6分
CMS(コンテンツ管理システム)では、コレクションの権限を変更して、ライブサイトからコレクションのコンテンツを表示、追加、更新、または削除できるユーザーを制御することができます。通常、訪問者がライブサイトからコレクションのコンテンツを変更できるようにするには、ユーザー入力要素を使用します。

コレクションの権限は、ライブサイトからのコレクションコンテンツへのアクセスを管理し、サイトのデータのセキュリティを維持するのに役立ちます。たとえば、オンラインコミュニティを運営している場合なら、登録メンバーのみがライブサイトから特定のコレクションのコンテンツを表示したり、コレクションにコンテンツを追加できるようにして、それ以外のユーザーはアクセスできないようにしておくことができます。
Velo by Wix ユーザー:
Wix Data API では、コードを使用してコレクションに直接アクセスでき、プリセットコレクションやカスタムコレクションの権限よりもさらに高度な機能を利用することができます。(英語)

コレクションコンテンツへのライブサイトのアクセスを管理する

コレクションの権限では、ライブサイトから CMS コレクションのコンテンツにアクセスできるユーザーと、そのユーザーがコンテンツに対して実行できる内容(コンテンツの表示、追加、更新、または削除)を指定することができます。通常、これはユーザー入力要素を使用して行いますが、データ API を使用して行うこともできます。共同管理者は、ライブサイトからユーザーが実行できる内容を制御するコレクションの権限では、常に「管理者」と見なされます。

サイト所有者と共同管理者について:
サイト所有者と共同管理者がライブサイトにログインすると、常に「管理者」として扱われます。つまり、サイト所有者と共同管理者は、常にライブサイトからコレクションのコンテンツを表示、追加、更新、または削除することができます。このルールは、選択しているコレクションの権限に関係なく適用されます。

閲覧専用のアクセスに「コンテンツを表示」の権限を使用する

「コンテンツを表示」の権限を使用すると、訪問者がライブサイトでコレクションのコンテンツを表示できるようになります。これは、特定のコンテンツを変更できないようにして、サイト上に公開したい場合に便利です。この権限では、コンテンツをすべての訪問者が表示できるようにするか、サイト会員のみが表示できるようにするかを選択することができます。これにより、コンテンツを保護したまま、必要なユーザーがコンテンツにアクセスできるようになります。

ただし、適用する権限によっては、ライブサイトに表示されていなくても、ユーザーがコレクションのコンテンツにアクセスできる場合があることに注意してください。たとえば、「このコンテンツを表示できるユーザー」で「すべての訪問者」を選択した場合は、データ API を使用して誰でもコレクションのコンテンツを表示することができます。
コレクションの権限を設定しているスクリーンショット。

「コンテンツを収集」権限を使用して新しいアイテムの追加を許可する

「コンテンツを収集」の権限を使用すると、訪問者がユーザー入力要素や API を使用して、コレクションに新しいアイテムを追加できるようになります。これは、レビュー、コメント、投稿など、ユーザーのコンテンツを収集するためのサイトに適しています。ただし、この権限では、訪問者が既存のアイテムやそのフィールド値を更新することはできません。ライブサイトから既存のアイテムやそのフィールド値を更新できるようにするには、「カスタム」の権限を使用してください。

コレクションに新しいコンテンツを追加できるのは、すべての訪問者かサイト会員のみかを選択することができます。また、追加されたコンテンツを表示できるユーザーを制御して、サイトのプライバシーやセキュリティを保つこともできます。

なお、データセットの設定は、訪問者がページで実行できるアクションに影響しますが、実際にさまざまな役割でデータに対して実行できる内容を制限できるのは、コレクションの権限のみです。データセットを設定する方法はこちら
コンテンツを収集できるよう、コレクションの権限を設定している様子を示したスクリーンショット。

「カスタム」権限を設定してよりアクセスを制御する

コンテンツを表示、追加、更新、または削除できるユーザーをより細かく制御するには、「カスタム」の権限を設定します。これにより、サイト管理者、アイテムの作成者、サイト会員、すべての訪問者などの役割ごとに、アクセスを制御することができます。たとえば、管理者のみがコンテンツを削除できるようにし、アイテムの作成者は自身が作成したコレクションアイテムのみを更新できるようにすることができます。このように、「カスタム」の権限では、サイトでの必要性やセキュリティ要件に合わせて、コレクションコンテンツへのアクセスを柔軟に管理することができます。

カスタム権限を使用する場合は、割り当てる権限がコレクション内のデータのビジネスロジックや機密区分と一致していることを確認してください。たとえば、顧客やビジネスリードに関する詳細を含むコレクションは、商品に関するコレクションとは異なる扱いをする必要があります。
カスタムコレクションの権限を設定しているスクリーンショット。
注意:
データへのアクセス権限は、PII 暗号化によって変化されることはありません。データの機密性を維持するために、適切な権限を設定する必要があります。PII とデータセキュリティに関する詳細はこちら

すべてのコレクションの権限を変更する

すべてのコレクションの権限を理解して管理することは、サイトの整合性とセキュリティを維持するためには不可欠です。各コレクションには独自の権限が設定できるため、コンテンツの種類と対象ユーザーに基づいてアクセスをカスタマイズすることができます。これらの権限を定期的に確認・調整することで、サイトのデータを安全に保ち、ユーザーが適切なアクセスレベルを有することができます。

「カスタム」に表示される各種権限は、サイトでの必要性に応じてそれぞれの役割に割り当てることができます。ライブサイトでのコレクションの権限に関しては、すべての共同管理者が「管理者」と見なされるため、共同管理者に割り当てる CMS の役割がコレクションの権限に影響することはありません。

ただし、Velo では suppressAuth オプションを使用し、バックエンドからデータの呼び出しを行うコードを使用して、コレクションにカスタムの役割を実装することができます。データの呼び出しは、コード内の wix-users API 機能でサイト会員のカスタムの役割が検証された後に行う必要があります。(英語)

管理者は、常にすべてのアクションの権限を有します。サイトをプレビューした場合は、管理者の役割として実行されます。管理者以外の役割で操作を実行したい場合は、まずサイトを公開してからライブサイトに移動し、別のユーザー(サイト会員)としてログインするか、訪問者のようにログインしない状態で操作を行います。サイトでサンドボックスコレクションが有効になっている場合は、ライブサイトがサンドボックスコレクションではなく、ライブコレクションで動作することに注意してください。

Velo by Wix:権限の抑制

データ API を使用してコレクションを操作する場合、場合によっては権限モデルを回避することができます。オプションの WixDataOptions 引数は、suppressAuth プロパティを true に設定して API 関数呼び出しに送ることができます。これにより、現在のユーザーが正しい権限を持っているかをチェックすることなく関数が実行されます。バックエンドコードから API の呼び出しを行う場合のみ、権限を回避することができます。クライアント側の API の呼び出しでは、渡されるオプションに関わらず、常に権限のチェックが実行されます。

たとえば、コレクションにはコメントだけでなく、コメントを送信したユーザーのメールアドレスも含まれる場合があります。メールアドレスを表示できるのは管理者のみですが、コメントは訪問者に表示されます。これは、権限の抑制によって、訪問者にコメントコレクションの「読み取り」を許可していなくても、コメントのみが表示できるようになっているためです。

これは、バックエンドの .jsw ファイルに Web モジュールを記述することで実現できます。このモジュールは suppressAuth プロパティを true に設定してコメントコレクションを呼び出します。その応答をフィルターで除外することで、特にメールを表示することなく訪問者のクライアントに必要な項目(コメント)のみを返します。
1import wixData from 'wix-data';
2// ...
3let options = {
4    "suppressAuth": true
5};
6wixData.query("myCollection")
7  .find(options)
8  .then( (results) => {
9    if(results.items.length > 0) {
10      let items = results.items;
11      let firstItem = items[0];
12    } else {
13      // handle case where no matching items found
14    }    
15  } )
16  .catch( (error) => {
17    let errorMsg = error.message;
18    let code = error.code;
19  } );
suppressAuth のもう一つの使用例としては、カスタムの役割(特定のサイト会員、またはサイト会員の特定のグループ)に、管理者権限で設定したコレクションにアクセスを許可する場合が挙げられます。この場合、Web モジュールはデータを呼び出す前に、サイト会員の ID または役割を確認する必要があります。(英語)
注意:
  • コレクションの権限は、コレクションにバインドするデータセットによって読み込まれるデータに影響を与えます。データセットが、コレクションからデータを読み取ることができるか、コレクションにデータを書き込むことができるか、またはそれらの両方ができるかを制御するデータセットモードについてはこちら
  • データセットの設定を使用すると、特定のデータセットに接続された要素が実行できる操作を調整することができます。データは、データ API を使用して、コレクションの権限で指定された範囲内で常にアクセスが可能となります。
  • 一部の役割は、サイトに会員エリアがある場合のみ利用することができます。Velo by Wix を使用している場合は、wix-members-backend API を使用して、会員制機能を追加することもできます。(英語)

お役に立ちましたか?

|