遷移セキュリティー・ルール

遷移には 3 つのタイプのセキュリティー (権限セキュリティー、属性セキュリティー、およびブランチ・セキュリティー) があります。 これらのすべてを使用して、遷移が許可されるかどうかを判別します。各遷移で設定するセキュリティーのタイプを決定します。

権限セキュリティー

権限セキュリティーは、必要な権限をユーザーが備えている場合に遷移を許可します。 例えば、登録2レビュー 遷移に verifier 権限が必要で、ユーザー samverifier 権限を備えている場合には、sam は遷移を実行できます。

属性セキュリティー

属性セキュリティーは、指定された属性の値がユーザー ID に一致した場合 (つまり、resolver="sam") に遷移を許可します。属性セキュリティーが機能するには、選択した属性にユーザー ID が値として含まれている必要があります。 つまり、属性のタイプは CCM_USER です。

属性セキュリティーは、属性あるいは属性とユーザー権限の組み合わせに対して定義することができます。

権限が指定された場合、変更要求 (CR) を遷移させるには以下の条件の両方を満たしている必要があります。
  • 属性値がユーザー ID に等しい。
  • ユーザーが指定された権限を持っている。

例えば、CR を提出したユーザー (CR の「提出者」属性の値がログイン・ユーザー ID と一致している必要があります)、かつ「開発者」権限を持っているユーザーのみが、CR を「登録2割り当て」状態に遷移させることができる、というルールを記述します。 したがって、ユーザー sam が CR を提出し、彼が「開発者」権限を持っている場合、彼は CR を「登録2割り当て」状態に遷移させることができます。

ブランチ・セキュリティー

ブランチ・セキュリティーは、属性に特定の値が設定されている場合にのみ遷移を許可します。 例えば、request_type 属性は「不具合」または「機能拡張」のいずれかに設定できます。 「不具合の修正」遷移は、「要求タイプ」「不具合」に設定されている場合にのみ許可することができ、「機能拡張の実行」遷移は、「要求タイプ」「機能拡張」に設定されている場合に許可することができます。

権限が指定された場合、CR を遷移させるには以下の条件の両方を満たしている必要があります。

権限セキュリティー・ルール、属性セキュリティー・ルール、およびブランチ・セキュリティー・ルールの連携

属性セキュリティー・ルールと権限セキュリティー・ルールの一方が満たされており、ブランチ・セキュリティーが設定されていない場合、遷移を実行できます。

ただし、ブランチ・セキュリティーが設定されている場合は、以下の前提条件の両方が満たされていない限り、遷移を実行することはできません。
  • すべてのブランチ・ルールが満たされている。
  • 1 つ以上の属性セキュリティー・ルールまたは権限セキュリティー・ルールが設定されている場合、それらの 1 つが満たされている。

    つまり、次のように、権限セキュリティー・ルールと属性セキュリティー・ルールが論理和演算され、その結果とブランチ・セキュリティー・ルールが論理積演算されます。

    ( (権限セキュリティー・ルール) OR (属性セキュリティー・ルール) ) AND (ブランチ・セキュリティー・ルール)

この例について検討します。「レビュー中2割り当て」状態への遷移を実行する CR に対して以下のルールを設定します。

ルール 1 - 権限レベル・セキュリティー

ルール 1 - 権限レベル・セキュリティー

「割り当て者」権限を持つユーザーのみが「レビュー中2割り当て」遷移を実行することができます。

ルール 2 - 属性レベル・セキュリティー

ルール 2 - 属性レベル・セキュリティー

CR を提出したユーザー (CR の「提出者」属性の値がログイン・ユーザー ID と一致している必要があります)、かつ「開発者」権限を持っているユーザーのみが、「レビュー中2割り当て」遷移を実行することができます。

ルール 3 - ブランチ・レベル・セキュリティー

ルール 3 - ブランチ・レベル・セキュリティー

「レビュー中2割り当て」遷移は、「管理者によるレビュー」属性が TRUE に設定されている場合にのみ実行できます。権限には値を割り当てません。

ルール 4 - ブランチ・レベル・セキュリティー

ルール 4 - ブランチ・レベル・セキュリティー

「レビュー中2割り当て」遷移は、「承認が必要」属性が FALSE に設定されており、ユーザーが「レビューアー」権限を持っている場合にのみ実行できます。

シナリオ:

ユーザー sam「開発者」権限を付与し、ユーザー john「割り当て者」権限および「レビューアー」権限を付与し、ユーザー joe「開発者」権限および「レビューアー」権限を付与します。

sam が CR を提出し、それを john に割り当てます。したがって、sam が提出者で、john が解決者です。次に、「管理者によるレビュー」属性を TRUE に設定し、「承認が必要」属性を FALSE に設定します。

したがって、遷移を実行するには、すべてのブランチ・ルールが満たされており、指定された権限ルールまたは属性ルールの少なくとも 1 つが満たされている必要があります。

(ルール 1 OR ルール 2) AND (ルール 3 AND ルール 4)

  • 「管理者によるレビュー」属性が TRUE に設定されているため、すべてのユーザーがルール 3 を満たしています。
  • joe は、すべてのブランチ・セキュリティー・ルール (ルール 3 およびルール 4) を満たしていますが、権限セキュリティー・ルールおよび属性セキュリティー・ルールをいずれも満たしていません。 彼は CR を遷移させることができません。
  • john は、ルール 1、ルール 3、およびルール 4 を満たしているため、CR を遷移させることができます。
  • sam は、ルール 2 およびルール 3 を満たしていますが、ルール 4 を満たしていません。すべてのブランチ・セキュリティー・ルールが満たされている必要があるため、彼は CR を遷移させることができません。

しかし、権限ルールと属性ルールのみが設定されており、ブランチ・ルールが設定されていないと仮定します。 この場合、権限セキュリティー・ルールと属性セキュリティー・ルールが論理和演算 (OR) されるため、次のようになります。
  • joe は、権限セキュリティー・ルールと属性セキュリティー・ルールをいずれも満たしていないため、遷移を実行することができません。
  • sam は、ルール 2 を満たしているため、CR を遷移させることができます。
  • john は、ルール 1 を満たしているため、CR を遷移させることができます。

フィードバック