Red Hat Training

A Red Hat training course is available for Red Hat JBoss Operations Network

27.8. 拡張例: プロビジョニングプロセスでのバンドルグループおよびアクセス制御の使用

ロールは、異なるエンティティー間の対話(リソースグループ経由)、ユーザー、およびバンドル(バンドルグループ経由)を定義します。注記のように 「Provisioning and Agent User System Permission」、プロビジョニングでは、これらの関係がプロビジョニングライフサイクルのさまざまな部分の行に分類されます。バンドル/ユーザー関係はバンドルバージョンの作成に最も重要になりますが、バンドル/リソース関係はバンドルのデプロイに最も重要になります。
ロールはレイヤー化できます。有効なアクセス制御は、ユーザーが割り当てる全ロールの 累積 ルールです。これは、1 人のユーザーがそれぞれ異なるリソースグループへのアクセスを許可する複数のロールに属する場合、ユーザーはそれらのロールに一覧表示されている すべて のリソースグループにアクセスできます。バンドルグループも同様です。
つまり、ロールで定義されたリソースグループおよびバンドルグループは、ユーザーの許可されるプロビジョニングパスを定義するために機能することを意味します。この関係は、この関係 「アクセスとグループ」 に関連します。たとえば、ユーザーがリソースグループ A へのアクセスを許可するロールとバンドルグループ B へのアクセスを許可する別のロールにユーザーが属する場合、ユーザーはバンドルグループ B のバンドルをリソースグループ A のリソースにデプロイできますが、他のバンドルやその他のリソースにはデプロイできません。
このビルディングブロックのアプローチは、ロールのすべてのユーザーに対して、非常に複雑なリソース、バンドル、およびその他のユーザー間の非常に複雑な関係を非常に管理可能な方法で定義します。
注記
1 つのロールの設定を可能な限り制限します。リソースグループ/パーミッションおよびバンドルグループ/パーミッションに完全に異なるロールを使用することが有益である場合があります。これにより、特定のロールがどのアクセスを付与するかをより明確にすることができます。これにより、ユーザーに維持しやすくなります。
バンドルのデプロイには、アクセス制御の変更が多数あります。バンドルパーミッションを定義するロールは、エコーしてプロビジョニングワークフローを実行し、バンドルをデプロイするユーザー、および環境を指定します。
これらの例では、簡単な代表的なワークフローについて説明します。これらは、インフラストラクチャー、アプリケーションライフサイクル、およびユーザーグループに適用できます。

27.8.1. global v.作成およびデプロイを行うためのグループパーミッション

グローバルバンドルパーミッションにより、関連するグループに関係なく、システム上の全バンドルへのアクセス権が付与されます。
グローバルビューおよび作成パーミッションにより、バンドルグループとは独立してバンドルを作成できます。グローバルデプロイパーミッションにより、ロールと関連付けられていない場合でも、ユーザーが閲覧できるリソースグループにバンドルをデプロイできます。

例27.16 User Deploys Bundles anywhere

Role R1 <--- User U
   |
   v
View Bundles
Create Bundles
Deploy Bundles
グローバルデプロイパーミッションでは、ユーザーには、ユーザーが参照できるリソースグループを定義するロールが依然として必要です。ただし、このようなリソースグループは bundle ロールで指定する必要はありません。
グループパーミッションは、指定されたアクションをロール自体に指定されたグループに限定します。これは、バンドル作成パーミッション(グループ内のバンドルの作成)およびバンドルデプロイパーミッション(リソースグループへのデプロイバンドル)の両方に該当します。
デプロイメントを指定のリソースグループに制限するには、deploy を使用してロールの明示的なリソースグループ を必要とするパーミッションをグループ化します。

例27.17 Deploy Bundles to a Specific Resource Group: Single Role

Resource Group X ---> Role R <--- User U
                        ^
                        |
                 View Bundles
   Deploy Bundles To Group
グローバルパーミッションビューバンドル により、 ユーザーはシステム上の任意のバンドルを確認でき、単にバンドルを単一のリソースグループにデプロイする機能を制限するだけです。グローバルパーミッションは別の 方法で設定できますが、リソースグループはパーミッションをグループ 化するデプロイバンドルと同じロールに指定する必要があります。

例27.18 Deploy Bundles to a specific Resource Group: Two Roles

Resource Group X ---> Role R1 <--- User U    -->  Role R2
                         ^                           ^
                         |                           |
                Deploy Bundles To Group        View Bundles

27.8.2. Permissions and the Application Development Workflow

アプリケーションのプロビジョニングワークフローには、JBoss ON でバンドルバージョンを作成し、それらのバージョンを選択したリソースにデプロイするという 2 つの部分があります。
この 2 つのタスクは、組織内の異なるグループに分けることができます。たとえば、開発グループがバンドルを作成できるが、実稼働グループがバンドルのデプロイを行います。または QE のリードは JBoss ON でバンドルを作成し、QE チームはそれらをテストシステムにデプロイします。
グローバルなデプロイおよび作成パーミッションを設定できますが、予想以上の方法では、実際の環境は、ほとんどのユーザーを特定グループ内のアクションに制限します。
最初の概念的な部分は、ユーザーが特定のグループにバンドルを作成できるようにするパーミッションを作成します。このパーミッションは、異なるバンドルグループを持つ複数のユーザーに論理的に適用できるため、すべてのバンドルを表示するためのグローバルパーミッションは 2 番目のロールで設定できます。(これは、各ロールを可能な限り簡単に維持する原則です。)

例27.19 特定のバンドルグループでのバンドルの作成

Bundle Group A ---> Role R1 <--- User U --->  Role R2 
                         ^                         ^
                         |                         |
                Create Bundles In Group     View Bundles
複数のチームメンバーが相互のバンドルを更新する場合や、コミュニティーバンドルを維持する場合、これらのユーザーは指定のバンドルグループに対して同じ作成ロールに簡単に追加できます。この例では、削除パーミッションも指定します。

例27.20 複数ユーザーが各他のユーザーのバンドルを更新する

Bundle Group A
     |
     v
  Role R1 <--- User U1, User U2, User U3
     ^
     |
Create Bundles In Group
Delete Bundles From Group
このロールの配置は egalitarian で、同じバンドルグループ内で、他のロールユーザーのバンドルに対するロールの各メンバーが同等です。
多くのワークフローでは、バンドルの維持を担当するユーザーまたはセットが、別のグループがバンドルのデプロイを担います。この場合、1 つのグループは、指定の バンドルグループ へのグループパーミッションでグループパーミッションを持つロールに属し、ユーザーの個別のセットは、その バンドルグループおよび指定されたリソースグループに対するグループパーミッションへ のデプロイバンドルを持つロールに属します。

例27.21 Team Lead Creates Bundles - Team Members Deploy Bundles

Bundle Group A                                    Bundle Group A
     |                                                   |
     v                                                   v
  Role R1 <--- User TeamLeader   Resource Group X ---> Role R2 <--- Users TeamMember1, TeamMember2
     ^                                                   ^
     |                                                   |
Create Bundles In Group                         Deploy Bundles To Group
この方法では、アプリケーションのプロビジョニングサイクルの作成とデプロイ要素が分割されます。
ユーザーを個別のロールに 配置 し、パーミッションタイプの分割が重要です。単一のバンドルグループまたはリソースグループにロールを制限するのではなく、グローバルパーミッションで同じ方法を行うことができますが、その責任の分割は引き続き存在します。