This documentation is for a release that is no longer maintained
See documentation for the latest supported version.第8章 Red Hat Developer Hub の条件付きポリシー
Red Hat Developer Hub の権限フレームワークでは、RBAC バックエンドプラグイン (backstage-plugin-rbac-backend
) によってサポートされる条件を使用できます。条件は、RBAC バックエンドプラグインによって提供される Developer Hub リソースのコンテンツフィルターとして機能します。
RBAC バックエンド API は、ロールに割り当てられた条件をデータベースに保存します。ユーザーがフロントエンドリソースへのアクセスを要求すると、RBAC バックエンド API は、対応する条件を検索し、プラグイン ID を使用して適切なプラグインに条件を委譲します。異なる条件を持つ複数のロールにユーザーが割り当てられていると、RBAC バックエンドは anyOf
基準を使用して条件をマージします。
- 条件基準
Developer Hub の条件は、ルールとパラメーターを含む単純な条件です。ただし、条件には、条件基準によって結合されたパラメーターまたはパラメーターの配列を含めることもできます。サポートされている条件基準は次のとおりです。
-
allOf
: 結合された条件が満たされるためには、配列内のすべての条件が true でなければならない。 -
anyOf
: 結合された条件が満たされるためには、配列内の条件の少なくとも 1 つが true でなければならない。 -
not
: 結合された条件が満たされるためには、その中の条件が true であってはならない。
-
- 条件オブジェクト
条件でサポートされるパラメーターは、プラグインによって指定されます。RBAC API エンドポイントから条件オブジェクトスキーマにアクセスすると、RBAC バックエンドプラグイン API で使用される JSON 条件オブジェクトの構築方法を確認できます。
条件オブジェクトには次のパラメーターがあります。
Expand 表8.1 条件オブジェクトのパラメーター パラメーター 型 説明 result
String
常に
CONDITIONAL
の値を持つroleEntityRef
String
RBAC ロールへの文字列エンティティー参照 (
role:default/dev
など)pluginId
String
対応するプラグイン ID (
catalog
など)permissionMapping
String array
権限アクションの配列
(['read', 'update', 'delete']
など)resourceType
String
プラグインによって提供されるリソースタイプ (
catalog-entity
など)conditions
JSON
条件によって結合されたパラメーターまたは配列パラメーターを含む条件 JSON
- 条件付きポリシーエイリアス
RBAC バックエンドプラグイン (
backstage-plugin-rbac-backend
) は、条件付きポリシールールパラメーターでのエイリアスの使用をサポートしています。条件付きポリシーエイリアスは、ポリシー評価中に対応する値に動的に置き換えられます。条件付きポリシー内の各エイリアスには、その特殊な機能を示す$
記号が先頭に付きます。サポートされている条件付きエイリアスは次のとおりです。
-
$currentUser
: このエイリアスは、リソースへのアクセスを要求するユーザーのユーザーエンティティー参照に置き換えられます。たとえば、デフォルトの namespace のユーザー Tom がアクセスを要求すると、$currentUser
はuser:default/tom
になります。
-
$currentUser
エイリアスを使用した条件付きポリシーオブジェクトの例
-
$ownerRefs
: このエイリアスは所有者参照に置き換えられます。通常は、ユーザーエンティティー参照とユーザーの親グループエンティティー参照を含む配列として表されます。たとえば、team-a のユーザー Tom の場合、$ownerRefs
は['user:default/tom', 'group:default/team-a']
になります。
$ownerRefs
エイリアスを使用した条件付きポリシーオブジェクトの例
8.1. 条件付きポリシーリファレンス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub では、条件付きポリシー用の API エンドポイントにアクセスできます。たとえば、条件付きポリシーを定義するのに役立つ利用可能な条件ルールを取得するために、GET [api/plugins/condition-rules]
エンドポイントにアクセスできます。
api/plugins/condition-rules
は、条件パラメータースキーマを返します。次に例を示します。
RBAC バックエンド API は、上記の条件スキーマに基づいて JSON 条件オブジェクトを構築します。
8.1.1. 条件付きポリシーの例 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub では、基準のある、または基準のない条件付きポリシーを定義できます。次の例を使用して、ユースケースに応じて条件を定義できます。
- 基準のない条件
ユーザーが所有者グループに属する場合にのみカタログを表示する、基準のない条件を考えてみます。この条件を追加するには、カタログプラグインスキーマ
IS_ENTITY_OWNER
を次のように使用します。基準のない条件の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の例では、条件パラメーターとして、ユーザーまたはグループエンティティー参照のリストを含む
Claims
だけが使用されています。次のように追加のパラメーターを追加することで、上記の例の条件を RBAC REST API に適用できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 基準のある条件
ユーザーが所有者グループに属する場合にのみカタログを表示するか、すべてのカタログユーザーグループのリストを表示する、基準のある条件を考えてみます。
基準を追加するには、次のように、条件に
IS_ENTITY_KIND
として別のルールを追加します。基準のある条件の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記作成中に条件を並行して実行することは、サポートされていません。したがって、利用可能な基準に基づいて、ネストされた条件付きポリシーを定義することを検討してください。
ネストされた条件の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のように追加のパラメーターを追加することで、上記の例の条件を RBAC REST API に適用できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下の例は、Developer Hub プラグインで使用できます。以下の例は、条件付きポリシーを定義する方法を決定するのに役立ちます。
Keycloak プラグイン用に定義した条件付きポリシー
上記の Keycloak プラグインの例では、role:default/developer
のユーザーが、Keycloak プラグインからカタログに取り込まれたユーザーを更新または削除できないようにしています。
上記の例では、アノテーション keycloak.org/realm
に <YOUR_REALM>
の値が必要です。
Quay プラグイン用に定義した条件付きポリシー
上記の Quay プラグインの例では、ロール role:default/developer
が Quay の scaffolder アクションを使用できないようにしています。permissionMapping
に use
が含まれていることに注意してください。これは、scaffolder-action
リソースタイプ権限に権限ポリシーがないことを示しています。
Red Hat Developer Hub の権限の詳細は、7章権限ポリシーリファレンス を参照してください。