現在表示中:

CRX リポジトリへのアクセスの有効化に関しては、以下のトピックがあります。

基本的な要素:

ユーザーアカウント

CRX では、ユーザーアカウントに保持されている詳細情報に従って(特定の個人が、または別のアプリケーションを使用して)ユーザーを識別および検証し、アクセスを認証します。

CRX では、各ユーザーアカウントはワークスペース内のノードとなります。CRX ユーザーアカウントのプロパティには以下の特徴があります。

  • CRX の 1 人のユーザーを表します。
  • ユーザー名とパスワードを保持します。
  • 対象のワークスペースに適用可能です。
  • サブユーザーを所有することはできません。階層構造のアクセス権限の場合は、グループを使用する必要があります。
  • ユーザーアカウントのアクセス権限を指定できます。
    ただし、管理を簡略化するために、(多くの場合)グループアカウントにアクセス権限を割り当てることをお勧めします。個々のユーザーにアクセス権限を割り当てると、管理が非常に困難になります(インスタンスの数が 1 つか 2 つしかない状況におけるシステムユーザーは例外です)。

グループアカウント

グループアカウントは、ユーザーまたは他のグループの集合です。このアカウントは管理を簡略化するために使用します。これは、グループに割り当てられるアクセス権限の変更が、そのグループ内のすべてのユーザーに自動的に適用されるためです。ユーザーは必ずグループに属さなければならないというわけではありませんが、多くの場合は複数のグループに属しています。

CRX のグループのプロパティには以下の特徴があります。

  • 共通のアクセス権限を持つユーザーのグループを表します。例えば、作成者や開発者などです。
  • 対象のワークスペースに適用可能です。
  • メンバー(個々のユーザーまたは他のグループ)を指定できます。
  • 階層構造のグループはメンバーの関係を使用して作成されます。リポジトリ内の別のグループの直下にグループを配置することはできません。
  • すべてのグループメンバーのアクセス権限を定義できます。

アクセス権限

CRX では、アクセス権限を使用してリポジトリの特定の領域へのアクセスを制御します。

そのためには、リポジトリ内のリソース(ノードまたはパス)へのアクセスを許可または拒否する権限を割り当てます。割り当てることのできる権限は様々なので、権限を評価して、現在の要求に適用可能な組み合わせを判断する必要があります。

CRX では、ユーザーアカウントとグループアカウントの両方にアクセス権限を設定できます。ユーザーアカウントとグループアカウントに適用される評価の基本原則は同じです。

アクセス権限の評価方法

注意:

CRX は JSR-283 で定義されているアクセス制御を実装します。

CRX リポジトリの標準インストールは、リソースベースのアクセス制御リストを使用するように設定されます。これは JSR-283 のアクセス制御の実行可能な 1 つの実装であり、Jackrabbit で提供される実装の 1 つです。

サブジェクトとプリンシパル

CRX では、次に示す 2 つの主要な概念を使用してアクセス権限を評価します。

  • プリンシパルはアクセス権限を有するエンティティです。プリンシパルには以下のアカウントが含まれます。
    • ユーザーアカウント
    • グループアカウント
      1 つ以上のグループに属しているユーザーアカウントは、それらの各グループプリンシパルにも関連付けられます。
  • サブジェクトは要求元を表すために使用します。
    また、その要求に適用可能なアクセス権限を統合するために使用します。アクセス権限は以下の場所から取得されます。
    • ユーザープリンシパル
      ユーザーアカウントに直接割り当てる権限
    • 対象のユーザーに関連付けられているすべてのグループプリンシパル
      ユーザーが属するいずれかのグループに割り当てられているすべての権限
    評価の結果は、要求されたリソースへのアクセスを許可または拒否するために使用されます。

サブジェクト用のアクセス権限リストの作成

CRX では、サブジェクトは以下の項目に依存します。

  • ユーザープリンシパル
  • そのユーザーに関連付けられているすべてのグループプリンシパル

サブジェクトに適用可能なアクセス権限のリストは、以下の権限で構成されます。

  • ユーザーアカウントに直接割り当てる権限
  • ユーザーが属するいずれかのグループに割り当てられているすべての権限
chlimage_1

注意:

  • CRX では、リストの作成時にユーザー階層を考慮しません。
  • CRX でグループ階層を使用するのは、別のグループのメンバーとしてグループを追加する場合のみです。グループの権限が自動的に継承されることはありません。
  • グループを指定する順序がアクセス権限に影響を及ぼすことはありません。

要求の解決とアクセス権限

CRX が要求を処理する場合は、サブジェクトのアクセス要求とリポジトリノードのアクセス制御リストとを比較します。

以下の図は、Linda が次のリポジトリ構造内の /features ノードの更新を要求する場合の処理を示しています。

chlimage_1

優先順位

CRX のアクセス権限は次のように評価されます。

  • 以下に関係なく、ユーザープリンシパルが常にグループプリンシパルよりも優先されます。
    • アクセス制御リスト内の順序
    • ノード階層内の位置
  • ある特定のプリンシパルに対して、あるノードで存在する deny エントリと allow エントリはそれぞれ 1 つまでです。冗長なエントリは常に実装によってクリアされ、allow エントリと deny エントリに同じ権限が示されることはありません。

注意:

この評価プロセスは、標準の CRX インストールのリソースベースのアクセス制御に適しています。

ユーザー aUser がグループ aGroup のメンバーである 2 つの例を次に示します。

   + parentNode
     + acl
       + ace: aUser - deny - write
     + childNode
       + acl
         + ace: aGroup - allow - write
       + grandChildNode

この場合、次のようになります。

  • aUser には grandChildNode に対する書き込み権限が付与されません。
   + parentNode
     + acl
       + ace: aUser - deny - write
     + childNode
       + acl
         + ace: aGroup - allow - write
         + ace: aUser - deny - write
       + grandChildNode

この場合、次のようになります。

  • aUser には grandChildNode に対する書き込み権限が付与されません。
  • aUser の 2 つ目の ACE は冗長になります。

複数のグループプリンシパルのアクセス権限は、階層内および 1 つのアクセス制御リスト内における順序に基づいて評価されます。

ベストプラクティス

いくつかの推奨事項とベストプラクティスを次の表に示します。

推奨事項 理由
グループを使用する

ユーザーごとにアクセス権限を割り当てるのは避けてください。これにはいくつかの理由があります。

  • ユーザー数はグループ数より多いので、グループを使用すれば構造が簡素化されます。
  • グループはアカウント全体の概要を確認するために役立ちます。
  • グループを使用すると、継承がシンプルになります。
  • ユーザーは追加または削除されることがあります。グループは長期的に使用されます。
肯定的に指定する

グループプリンシパルのアクセス権限を指定する際には、(可能な限り)常に「許可」ステートメントを使用してください。「拒否」ステートメントの使用は避けてください。

グループプリンシパルは、階層内および 1 つのアクセス制御リスト内における順序に基づいて評価されます。

簡潔にする

新しいインストールの設定時にある程度時間をかけて検討すると、より良い設定となります。

わかりやすい構造を適用することで、継続的なメンテナンスや管理が簡略化され、現在の担当者と今後の後任の担当者が実装されている内容を容易に把握できます。

テスト テストインストール環境を使用して訓練し、様々なユーザーとグループ間の関係を理解するようにしてください。
デフォルトユーザー/グループ セキュリティの問題を回避するために、インストール直後に必ずデフォルトユーザー/グループを更新してください。

ユーザー管理

標準ダイアログはユーザー管理に使用されます。

適切なワークスペースにログインする必要があります。ログイン後、次の場所からダイアログにアクセスできます。

  • CRX のメインコンソールの「ユーザー管理」リンク
  • CRX Explorer のセキュリティメニュー
chlimage_1

プロパティ

  • ユーザー ID
    CRX へのアクセス時に使用されるアカウントの省略名。
  • プリンシパル名
    アカウントの完全な名前。
  • パスワード
    このアカウントを使用して CRX にアクセスする場合に必要です。
  • ntlmhash
    新しい各アカウントに自動的に割り当てられます。パスワードが変更されると更新されます。
  • 名前、タイプ、値を定義して新しいプロパティを追加できます。新しいプロパティごとに「保存」(緑色のチェックマーク)をクリックします。

グループのメンバーシップ

アカウントが属しているすべてのグループが表示されます。「継承」列は、別のグループのメンバーシップの結果として継承されたメンバーシップを示します。

グループ ID(使用可能な場合)をクリックすると、そのグループ用のグループ管理が開きます。

実行

別のユーザーとして実行する機能では、ユーザーは別のユーザーに成り代わって作業をおこなうことができます。

これは、あるユーザーアカウントが操作をおこなうための他のアカウント(ユーザーまたはグループ)を指定できることを意味します。つまり、ユーザー B がユーザー A として実行することを許可されている場合、ユーザー B はユーザー A のアカウントの詳細(ID、名前、アクセス権限を含む)をすべて使用してアクションを実行できます。

これにより、別のユーザーのアカウントを使用しているかのようにタスクを完了できます。例えば、ユーザーの不在時や過剰な量の作業を短期間だけ分担する場合などに便利です。

あるアカウントが別のアカウントとして実行する場合、その判別は非常に困難です。ログファイルには、その機能がイベントに対して実行されたという事実に関する情報が保持されません。そのため、ユーザー B がユーザー A として実行している場合は、ユーザー A がすべてのイベントを実行しているように見えます。

ユーザーアカウントの作成

  1. ユーザー管理ダイアログを開きます。
  2. ユーザーを作成」をクリックします。
  3. 以下のプロパティを入力できます。
    • ユーザー ID:アカウント名として使用されます。
    • パスワード:ログイン時に必要です。
    • プリンシパル名:完全な名前を指定します。
    • 中間パス:ツリー構造を作成するために使用できます。
  4. 「保存」(緑色のチェックマーク)をクリックします。
  5. ダイアログが展開されます。次の操作をおこなうことができます。
    1. プロパティ」を設定します。
    2. グループのメンバーシップ」を確認します。
    3. 実行」を定義します。

注意:

以下の項目の数がどちらも多いインストール環境で新しいユーザーを登録する場合は、パフォーマンスが低下する可能性があります。

  • ユーザー
  • 多数のメンバーが存在するグループ

ユーザーアカウントの更新

  1. ユーザー管理ダイアログで、すべてのアカウントのリストビューを開きます。
  2. ツリー構造内を確認します。
  3. 必要なアカウントをクリックして編集用に開きます。
  4. 対象のエントリを変更し、「保存」(緑色のチェックマーク)をクリックします。
  5. 閉じる」をクリックして終了するか、「リスト」をクリックしてすべてのユーザーアカウントのリストに戻ります。

ユーザーアカウントの削除

  1. ユーザー管理ダイアログで、すべてのアカウントのリストビューを開きます。
  2. ツリー構造内を確認します。
  3. 必要なアカウントを選択して「ユーザーを削除」をクリックします。選択したアカウントがすぐに削除されます。

注意:

これにより、対象のプリンシパルのノードがリポジトリから削除されます。

アクセス権限のエントリは削除されません。これにより、履歴の整合性が確保されます。

プロパティの定義

新しいアカウントまたは既存のアカウントのプロパティを定義できます。

  1. 適切なアカウント用のユーザー管理ダイアログを開きます。
  2. プロパティ名を定義します。
  3. ドロップダウンリストから「種類」を選択します。
  4. 」を定義します。
  5. 新しいプロパティについて「保存」(緑色のチェックマーク)をクリックします。

ごみ箱アイコンを使用すると、既存のプロパティを削除できます。

パスワード以外のプロパティは編集できません。これらは削除するか、再作成する必要があります。

パスワードの変更

パスワードは、変更が可能な特殊なプロパティです。パスワードを変更するには、「パスワードを変更」リンクをクリックします。

CRX Explorer のセキュリティメニューから、パスワードを自分のユーザーアカウントに変更することもできます。

実行の定義

新しいアカウントまたは既存のアカウントの実行を定義できます。

  1. 適切なアカウント用のユーザー管理ダイアログを開きます。
  2. そのアカウントとしての実行を許可するアカウントを指定します。
    「参照」を使用して既存のアカウントを選択できます。
  3. 新しいプロパティについて「保存」(緑色のチェックマーク)をクリックします。

グループ管理

標準ダイアログはグループ管理に使用されます。

適切なワークスペースにログインする必要があります。ログイン後、次の場所からダイアログにアクセスできます。

  • CRX のメインコンソールの「グループ管理」リンク
  • CRX Explorer のセキュリティメニュー
chlimage_1

プロパティ

  • グループ ID
    グループアカウントの省略名。
  • プリンシパル名
    グループアカウントの完全な名前。
  • 名前、タイプ、値を定義して新しいプロパティを追加できます。新しいプロパティごとに「保存」(緑色のチェックマーク)をクリックします。
  • メンバー
    ユーザーまたは他のグループを対象のグループのメンバーとして追加できます。

グループのメンバーシップ

現在のグループアカウントが属しているすべてのグループが表示されます。「継承」列は、別のグループのメンバーシップの結果として継承されたメンバーシップを示します。

グループ ID をクリックすると、そのグループ用のダイアログが開きます。

メンバー

現在のグループのメンバーであるすべてのアカウント(ユーザーまたはグループ)が表示されます。

継承」列は、別のグループのメンバーシップの結果として継承されたメンバーシップを示します。

注意:

いずれかのアセットフォルダーでユーザーに対して所有者、編集者または閲覧者の役割が割り当てられると、新しいグループが作成されます。役割が定義された各フォルダーのグループ名は mac-default-<foldername> の形式となります。

グループアカウントの作成

  1. グループ管理ダイアログを開きます。
  2. グループを作成」をクリックします。
  3. 以下のプロパティを入力できます。
    • プリンシパル名:完全な名前を指定します。
    • 中間パス:ツリー構造を作成するために使用できます。
  4. 「保存」(緑色のチェックマーク)をクリックします。
  5. ダイアログが展開されます。次の操作をおこなうことができます。
    1. プロパティ」を設定します。
    2. グループのメンバーシップ」を確認します。
    3. メンバー」を管理します。

グループアカウントの更新

  1. グループ管理ダイアログで、すべてのアカウントのリストビューを開きます。
  2. ツリー構造内を確認します。
  3. 必要なアカウントをクリックして編集用に開きます。
  4. 対象のエントリを変更し、「保存」(緑色のチェックマーク)をクリックします。
  5. 閉じる」をクリックして終了するか、「リスト」をクリックしてすべてのグループアカウントのリストに戻ります。

グループアカウントの削除

  1. グループ管理ダイアログで、すべてのアカウントのリストビューを開きます。
  2. ツリー構造内を確認します。
  3. 必要なアカウントを選択して「グループを削除」をクリックします。選択したアカウントがすぐに削除されます。

注意:

これにより、対象のプリンシパルのノードがリポジトリから削除されます。

アクセス権限のエントリは削除されません。これにより、履歴の整合性が確保されます。

プロパティの定義

新しいアカウントまたは既存のアカウントのプロパティを定義できます。

  1. 適切なアカウント用のグループ管理ダイアログを開きます。
  2. プロパティ名を定義します。
  3. ドロップダウンリストから「種類」を選択します。
  4. 」を定義します。
  5. 新しいプロパティについて「保存」(緑色のチェックマーク)をクリックします。

ごみ箱アイコンを使用すると、既存のプロパティを削除できます。

メンバー

現在のグループにメンバーを追加できます。

  1. 適切なアカウント用のグループ管理ダイアログを開きます。
  2. 以下のどちらかの操作をおこないます。
    • 必要なメンバー(ユーザーまたはグループアカウント)の名前を入力します。
    • 参照」を使用して検索を実行し、追加するプリンシパル(ユーザーまたはグループアカウント)を選択します。
  3. 新しいプロパティについて「保存」(緑色のチェックマーク)をクリックします。

または、ごみ箱アイコンを使用して既存のメンバーを削除します。

アクセス権限の管理

CRXDE Lite の「アクセス制御」タブを使用して、アクセス制御ポリシーを定義し、関連する権限を割り当てることができます。

例えば、右下のウィンドウの「アクセス制御」タブにある「現在のパス」では、必要なリソースを左側のウィンドウで選択します。

CRX_AccessControl_Tab

ポリシーは次のように分類されます。

  • 適用可能なアクセス制御ポリシー
    適用可能なポリシーです。
    これらのポリシーは、ローカルポリシーの作成に使用できます。適用可能なポリシーを選択して追加すると、そのポリシーがローカルポリシーになります。
  • ローカルアクセス制御ポリシー
    適用したアクセス制御ポリシーです。このポリシーの更新、並べ替えまたは削除をおこなうことができます。
    親から継承したポリシーはローカルポリシーによって上書きされます。
  • 有効なアクセス制御ポリシー
    アクセス要求に対して有効なアクセス制御ポリシーです。ローカルポリシーおよび親から継承したポリシーから派生した集計ポリシーが表示されます。

ポリシーの選択

次の項目用のポリシーを選択できます。

  • 現在のパス
    前述の例では、リポジトリ内のリソースを選択します。この「現在のパス」用のポリシーが表示されます。
  • リポジトリ
    リポジトリレベルのアクセス制御を選択します。例えば、ノードではなくリポジトリにのみ関連する jcr:namespaceManagement 権限を設定する場合などに使用します。
  • プリンシパル
    リポジトリに登録されているプリンシパルです。
    プリンシパル名を入力するか、フィールドの右側にあるアイコンをクリックして、プリンシパルを選択ダイアログを開きます。
    これにより、ユーザーまたはグループ検索できます。表示されるリストから必要なプリンシパルを選択し、「OK」をクリックして値を前のダイアログに戻します。
CRX_AccessControl_SelectPrincipal

注意:

管理を簡略化するために、個々のユーザーアカウントではなく、グループアカウントにアクセス権限を割り当てることをお勧めします。

多数のユーザーアカウントではなく少数のグループを管理するほうが容易です。

権限

アクセス制御エントリを追加する場合は、以下に示す権限を選択できます(詳しくは、セキュリティ API に関するページを参照)。

権限名 制御対象となる権限の内容
jcr:read ノードを取得し、そのプロパティと値を読み取ります。
rep:write jcr:write および jcr:nodeTypeManagement の jackrabbit 固有の集計権限です。
jcr:all 他の事前定義済み権限がすべて含まれる集計権限です。
詳細  
crx:replicate ノードのレプリケーションを実行します。
jcr:addChildNodes ノードの子ノードを作成します。
jcr:lifecycleManagement ノード上でライフサイクル操作を実行します。
jcr:lockManagement ノードをロック/ロック解除します。また、ロックを更新します。
jcr:modifyAccessControl ノードのアクセス制御ポリシーを変更します。
jcr:modifyProperties ノードのプロパティを作成、変更および削除します。
jcr:namespaceManagement 名前空間の定義を登録、登録解除および変更します。
jcr:nodeTypeDefinitionManagement ノードタイプ定義をリポジトリに読み込みます。
jcr:nodeTypeManagement mixin ノードタイプの追加と削除、およびノードのプライマリノードタイプの変更をおこないます。変更には Node.addNode および XML 読み込みメソッドのすべての呼び出しを含めることができます。このメソッドで、新しいノードの mixin タイプまたはプライマリタイプが明示的に指定されます。
jcr:readAccessControl ノードのアクセス制御ポリシーを読み取ります。
jcr:removeChildNodes ノードの子ノードを削除します。
jcr:removeNode ノードを削除します。
jcr:retentionManagement ノード上で保持管理操作を実行します。
jcr:versionManagement ノード上でバージョン管理操作を実行します。
jcr:workspaceManagement JCR API を使用してワークスペースを作成および削除します。
jcr:write 次の権限が含まれる集計権限です。
- jcr:modifyProperties
- jcr:addChildNodes
- jcr:removeNode
- jcr:removeChildNodes
rep:privilegeManagement 新しい権限を登録します。

新しい権限の登録

新しい権限を登録することもできます。

  1. ツールバーから「ツール」を選択し、「権限」を選択して、現在登録されている権限を表示します。

    AC_Privileges
  2. 権限を登録アイコン(+)を使用してダイアログを開き、新しい権限を定義します。

    AC_PrivilegeRegister
  3. OK」をクリックして、保存します。これで、権限を選択できるようになります。

アクセス制御エントリの追加

  1. リソースを選択して「アクセス制御」タブを開きます。

  2. 新しいローカルアクセス制御ポリシーを追加するには、「適用可能なアクセス制御ポリシー」リストの右側にある + アイコンをクリックします。

    CRX_AccessControl_Applicable
  3. 新しいエントリが「ローカルアクセス制御ポリシー」の下に表示されます。

    CRX_AccessControl_NewLocal
  4. + アイコンをクリックして新しいエントリを追加します。

    CRX_AccessControl_AddEntry

    注意:

    現時点では、空の文字列を指定するには対策が必要です。

    "" を使用してください。

  5. アクセス制御ポリシーを定義し、「OK」をクリックして保存します。新しいポリシーは次のようになります。

    • ローカルアクセス制御ポリシー」の下に表示されます。
    • 有効なアクセス制御ポリシー」に変更が反映されます。

選択項目は CRX によって検証されます。ある特定のプリンシパルに対して、あるノードで存在する deny エントリと allow エントリはそれぞれ 1 つまでです。冗長なエントリは常に実装によってクリアされ、allow エントリと deny エントリに同じ権限が示されることはありません。

ローカルアクセス制御ポリシーの並べ替え

リスト内の順序は、ポリシーの適用順序を示します。

  1. ローカルアクセス制御ポリシー」のテーブルで必要なエントリを選択して、テーブル内の新しい位置にドラッグします。

    CRX_AccessControl_Reorder
  2. ローカルアクセス制御ポリシー」と「有効なアクセス制御ポリシー」のテーブルの両方に変更が表示されます。

アクセス制御ポリシーの削除

  1. ローカルアクセス制御ポリシー」のテーブルで、エントリの右側にある赤いアイコン(-)をクリックします。

  2. ローカルアクセス制御ポリシー」と「有効なアクセス制御ポリシー」のテーブルの両方からエントリが削除されます。

アクセス制御ポリシーのテスト

  1. CRXDE Lite のツールバーから「ツール」、「アクセス制御をテスト」の順に選択します。

  2. 右上のウィンドウに新しいダイアログが開きます。テストするパスまたはプリンシパルを選択します。

  3. テスト」をクリックして選択項目の結果を確認します。

    CRX_AccessControl_Test

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー