[Java, FMW, WLS] JMX Authorization policies

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/jmx_authorization

WebLogic Server 12.2.1でパーティションの概念が導入されたことで、MBeanのWebLogicユーザーへの認可方法に影響があります。これは、MBeanのスコープを以下のいずれかに設定できるからです。
  • ドメイン
  • パーティション
パーティションはWebLogicドメインのスライスであり、パーティション内でユーザーを定義することができます。あるパーティションのユーザーは別のパーティションのユーザーとは別のものであり、ドメインのユーザーとも別のものです。歴史的に、パーティションの概念がなかったときは、WebLogicドメインのユーザーは4個のロールをとることができます。すなわち、以下の4個のロールです。
  1. Administrator
  2. Deployer
  3. Monitor
  4. Operator
MBeanを認可できるか否かの基本的なルールを以下にまとめることができます。
  1. 任意のユーザーは暗号化されたMBean以外の任意のMBeanの読み取りが可能
  2. Administratorロールを持つユーザーは任意のMBeanの書き込み、実行が可能
  3. MBeanに指定ロールのみを許可するアノテーションが付いている限り、他のロール(Deployer、Monitor、Operator)を持つユーザーはMBeanにアクセス可能
@roleAllowed Deployer
Public class MyMBean {
    ... 
}
上記のケースの場合、Deployerロールを持つユーザーはこのMBeanへの書き込み、実行が可能ですが、Monitorロールを持つユーザーは当該MBeanに対し書き込み、実行はできません。

12.2.1では、Multitenancyが導入され、認可ルールが大きく変わりました。MBeanをドメインスコープ、パーティションスコープのいずれかに配置することができるようになっています。このスコープは"owned by(所有される)"と呼ばれることがあります。例えば、12.2.1ではDomainMBeanはMBeanがMBeanツリーのドメインレベルにあるため、ドメインが所有しています。WebLogic ServerのMBeansをツリー状の構造で表現してみると以下のような感じになります。

上図は、WebLogic ServerのMBeanをパーティションスコープもしくはドメインスコープに設定する方法を表現しています。 パーティションをWebLogicドメイン中に作成した場合、当該パーティションを表す、PartitionMBeanと命名した構成MBeanを作成します。上図をよく見ると、PartitionMBeanがパーティションスコープではなく、ドメインスコープに配置されていることがわかります。PartitionMBeanの下の任意のMBeanはパーティションスコープです。

それゆえ、パーティションユーザーがMBeanがMBeanツリーのどこにあるか次第でMBeanにアクセスできるかどうかが決まります。MBeanツリーのMBeanの場所によって、当該MBeanがパーティションスコープなのか、ドメインスコープなのかが定まります。ドメインユーザーはパーティションスコープのMBeanへの書き込み、実行が可能ですが、パーティションユーザーは、明示的にアノテーションが付加されていない限り、MBeanへの書き込み、実行はできません。

12.2.1では、@ownerという新たなアノテーションを導入しました。これは場所に基づいたMBeanの所有権の動作を明示的に指定された所有権にオーバーライドします。@ownerには以下の3個の値を設定できます。
  • Domain
    • @owner Domain アノテーションを付加すると、MBeanツリーでの場所にかかわらず、ドメインが所有するMBeanとしてオーバーライドされます。
  • Partition
    • @owner Partition アノテーションを付加すると、MBeanツリーでの場所にかかわらず、パーティションが所有するMBeanとしてオーバーライドされます。
  • Context
    • @owner Context アノテーションを付加すると、MBeanにアクセスしようとしているユーザーのログインコンテキストに基づいて、MBeanの所有権を変更します。
      • ユーザーがドメインコンテキストからMBeanへアクセスしようとしている場合、MBeanは@owner Domainとして振る舞います。
      • ユーザーがパーティションコンテキストからMBeanへアクセスしようとしている場合、MBeanは@owner Partitionとして振る舞います。
MBeanにドメインユーザーもパーティションユーザーもアクセスする必要がある場合、@owner Context は特に有用です。MBeanはドメインとパーティションの間で共有されているMBeanのように振る舞います。MBeanツリーでドメインスコープのMBeanに@owner Contextを付加した場合、特定パーティションユーザーではなく、全パーティションのユーザーがMBeanに対して書き込みや実行をすることができます。特定パーティションのユーザーだけを選択してドメインスコープのMBeanにアクセスさせる方法はありません。

MBeanのきめ細かい管理のために、MBeanの各属性、各オペレーションに対し @owner を付加することができます。MBeanインターフェースに @owner を付けると、当該MBeanのすべての属性やオペレーションに @owner を付加したように振る舞います。

Example usage

以下のようにMBeanへアノテーションを付加することで、Deployerロールを持つドメインユーザーやパーティションユーザーはDomainRuntimeMBeanのオペレーションや属性にアクセスすることができます。
/**
* @roleAllowed Deployer
* @owner Context
*/

public interface DomainRuntimeMBean

Authorization’s relation to visibility of an MBean

12.2.1では、Muititenancyの導入に伴い、どのMBeanをユーザーが見ることができるか、という点で変更があります。すべてのMBeanがユーザーに見えるわけではありません。MBeanがエンドユーザーに見える場合は、認可ルールが適用されています。WebLogic Server 12.2.1でのVisibilityルールの詳細については、以下のエントリをご覧ください。
Application MBeans Visibility in Oracle WebLogic Server 12.2.1
https://blogs.oracle.com/WebLogicServer/entry/application_mbeans_visibility_in_oracle
http://orablogs-jp.blogspot.jp/2015/11/application-mbeans-visibility-in-oracle.html

Default Security Policies in 12.2.1

  • Administratorロールを持つドメインユーザーは、ドメインおよびパーティション全体のすべてのMBeanに対するフルアクセス権があります。
  • MBean属性のGetterとlookupXXXオペレーションは、ドメインやパーティションの任意のユーザーに対して認可されます。このときアノテーションは不要です。
  • ドメインスコープのMBeanの属性のSetter、オペレーションにパーティションユーザーがアクセスする必要がある場合、@owner Contextをアノテーションで付加する必要があります。
  • MBeanを所有するパーティションの場合、当該パーティションのユーザーがアクセス可能にできるようにするために @owner アノテーションを付ける必要はありません。
  • 別のロール(Deployer、Monitor、Operator)を持っているドメインユーザーがドメインスコープのMBeanにアクセスする必要がある場合、 @roleAllowed アノテーションが付加されていなければなりません。Domain Administratorとは異なり、これらのユーザーはパーティションスコープのMBeanではなく、ドメインスコープのMBeanへのみアクセスできます。
  • Administratorロールを有するパーティションのユーザーは、当該パーティションの任意のMBeanにアクセスすることができますが、別のパーティションのMBeanにはアクセスできません。これはVisibilityルールによって保護されています。
  • Application MBeans Visibility in Oracle WebLogic Server 12.2.1 https://blogs.oracle.com/WebLogicServer/entry/application_mbeans_visibility_in_oracle
  • パーティションユーザーはドメインユーザーと同様のロール(Administrator、Deployer、Monitor、Operator)を持つことができます。
  • 別のロール(Deployer、Monitor、Operator)を持っているパーティションのユーザーがパーティションスコープのMBeanにアクセス(書き込み、実行)する必要がある場合、MBeanに @roleAllowed のアノテーションを付加する必要があります。

Summary of Authorization rules for users in Weblogic 12.2.1

Table 1: WLS MBeans without any @roleAllowed annotation 
Table 2: WLS MBeans with @roleAllowed annotation. This annotation can appear on MBean Interface, Attribute or Operation
  • Domain MBean: ドメインスコープにあるMBeanで、@owner Domain もしくは、 @owner Contextでアノテーションされている。サブジェクトはドメインContextにある。
  • Partition MBean: パーティションスコープにあるMBeanで、@owner Partition もしくは、 @owner Contextでアノテーションされている。MBeanにアクセスすると、サブジェクトはPartitionコンテキストにある。
Table 3: Previlege of Different Domain Roles
Table 4: Privilege of Different Partition Roles

0 件のコメント:

コメントを投稿