第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 がアクセスを要求すると、$currentUseruser:default/tom になります。

$currentUser エイリアスを使用した条件付きポリシーオブジェクトの例

{
  "result": "CONDITIONAL",
  "roleEntityRef": "role:default/developer",
  "pluginId": "catalog",
  "resourceType": "catalog-entity",
  "permissionMapping": ["delete"],
  "conditions": {
    "rule": "IS_ENTITY_OWNER",
    "resourceType": "catalog-entity",
    "params": {
      "claims": ["$currentUser"]
    }
  }
}

  • $ownerRefs: このエイリアスは所有者参照に置き換えられます。通常は、ユーザーエンティティー参照とユーザーの親グループエンティティー参照を含む配列として表されます。たとえば、team-a のユーザー Tom の場合、$ownerRefs['user:default/tom', 'group:default/team-a'] になります。

$ownerRefs エイリアスを使用した条件付きポリシーオブジェクトの例

{
  "result": "CONDITIONAL",
  "roleEntityRef": "role:default/developer",
  "pluginId": "catalog",
  "resourceType": "catalog-entity",
  "permissionMapping": ["delete"],
  "conditions": {
    "rule": "IS_ENTITY_OWNER",
    "resourceType": "catalog-entity",
    "params": {
      "claims": ["$ownerRefs"]
    }
  }
}

8.1. 推移的な親グループの有効化

デフォルトでは、Red Hat Developer Hub は認証中に間接的な親グループを解決しません。その場合、次のグループ階層では、user_alice ユーザーは group_developers グループにのみ属します。

group_admin
  └── group_developers
    └── user_alice

$ownerRefs エイリアス使用時に複数レベルのグループ階層をサポートするには、ユーザーの所有権エンティティーに間接的な親グループを含めるように Developer Hub を設定できます。その場合、user_alice ユーザーは group_developers グループと group_admin グループの両方に属します。

手順

  • app-config.yaml ファイルで includeTransitiveGroupOwnership オプションを有効にします。

    includeTransitiveGroupOwnership: true
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る