https://blogs.oracle.com/WebLogicServer/entry/jmx_authorization
WebLogic Server 12.2.1でパーティションの概念が導入されたことで、MBeanのWebLogicユーザーへの認可方法に影響があります。これは、MBeanのスコープを以下のいずれかに設定できるからです。
- ドメイン
- パーティション
- Administrator
- Deployer
- Monitor
- Operator
- 任意のユーザーは暗号化されたMBean以外の任意のMBeanの読み取りが可能
- Administratorロールを持つユーザーは任意のMBeanの書き込み、実行が可能
- MBeanに指定ロールのみを許可するアノテーションが付いている限り、他のロール(Deployer、Monitor、Operator)を持つユーザーはMBeanにアクセス可能
上記のケースの場合、Deployerロールを持つユーザーはこのMBeanへの書き込み、実行が可能ですが、Monitorロールを持つユーザーは当該MBeanに対し書き込み、実行はできません。@roleAllowed Deployer Public class MyMBean { ... }
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のきめ細かい管理のために、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ルールによって保護されています。
- パーティションユーザーはドメインユーザーと同様のロール(Administrator、Deployer、Monitor、Operator)を持つことができます。
- 別のロール(Deployer、Monitor、Operator)を持っているパーティションのユーザーがパーティションスコープのMBeanにアクセス(書き込み、実行)する必要がある場合、MBeanに @roleAllowed のアノテーションを付加する必要があります。
Application MBeans Visibility in Oracle WebLogic Server 12.2.1 https://blogs.oracle.com/WebLogicServer/entry/application_mbeans_visibility_in_oracle
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 件のコメント:
コメントを投稿