第20章 セキュリティー
Apache Karaf は、JAAS (Java Authentication and Authorization Service) が搭載する高度なセキュリティーシステムを OSGi に準拠する方法で提供します。
動的セキュリティーシステムを提供します。
Apache Karaf セキュリティーフレームワークは、以下へのアクセスを制御するために内部で使用されます。
- OSGi サービス (開発者ガイドで説明)
- コンソールコマンド
- JMX レイヤー
- WebConsole
アプリケーションはセキュリティーフレームワークを使用することもできます (詳細は、開発者ガイドを参照してください)。
20.1. レルム
Apache Karaf は複数のレルムを管理できます。レルムには、このレルムの認証や承認に使用するログインモジュールの定義が含まれます。ログインモジュールは、レルムの認証および承認を定義します。
jaas:realm-list
コマンドは、現在定義されたレルムを一覧表示します。
karaf@root()> jaas:realm-list Index | Realm Name | Login Module Class Name ----------------------------------------------------------------------------------- 1 | karaf | org.apache.karaf.jaas.modules.properties.PropertiesLoginModule 2 | karaf | org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule
Apache Karaf は karaf
という名前のデフォルトのレルムを提供していることがわかります。
このレルムには 2 つのログインモジュールがあります。
-
PropertiesLoginModule
は、etc/users.properties
ファイルをユーザー、グループ、ロール、およびパスワードのバックエンドとして使用します。このログインモジュールはユーザーを認証し、ユーザーのロールを返します。 -
PublickeyLoginModule
は、特に SSHd で使用されます。etc/keys.properties
ファイルを使用します。このファイルには、ユーザーおよび各ユーザーに関連付けられた公開鍵が含まれます。
Apache Karaf は、追加のログインモジュールを提供します (詳細は、開発者ガイドを参照してください)。
- JDBCLoginModule がデータベースをバックエンドとして使用する
- LdapLoginModule が LDAP サーバーをバックエンドとして使用する
- SyncopeLoginModule が Apache Syncope をバックエンドとして使用する
- OsgiConfigLoginModule は設定をバックエンドとして使用する
- Krb5LoginModule が Kerberos サーバーをバックエンドとして使用する
- GSSAPILdapLoginModule は LDAP サーバーをバックエンドとして使用するが、LDAP サーバー認証を他のバックエンド (通常は Krb5LoginModule) に委譲する
jaas:realm-manage
コマンドを使用して、既存のレルムとログインモジュールを管理するか、独自のレルムを作成できます。
20.1.1. ユーザー、グループ、ロール、およびパスワード
Apache Karaf はデフォルトで PropertiesLoginModule を使用する
このログインモジュールは、ユーザー、グループ、ロール、およびパスワードのストレージとして etc/users.properties
ファイルを使用します。
初期の etc/users.properties
ファイルには次のものが含まれています。
################################################################################ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ################################################################################ # # This file contains the users, groups, and roles. # Each line has to be of the format: # # USER=PASSWORD,ROLE1,ROLE2,... # USER=PASSWORD,_g_:GROUP,... # _g_\:GROUP=ROLE1,ROLE2,... # # All users, grousp, and roles entered in this file are available after Karaf startup # and modifiable via the JAAS command group. These users reside in a JAAS domain # with the name "karaf". # karaf = karaf,_g_:admingroup _g_\:admingroup = group,admin,manager,viewer
デフォルトではユーザーは karaf
の 1 人のみであることが分かります。デフォルトのパスワードは、karaf
です。
karaf
ユーザーは 1 つのグループ admingroup
のメンバーです。
グループの先頭には常に g:
が付けられます。この接頭辞のないエントリーはユーザーです。
グループはロールのセットを定義します。デフォルトでは、admingroup
は、group
、admin
、manager
、および viewer
のロールを定義します。
つまり、karaf
ユーザーは admingroup
によって定義されたロールを持つことを意味します。
20.1.1.1. コマンド
jaas:*
コマンドは、コンソールでレルム、ユーザー、グループ、および ロールを管理します。
20.1.1.1.1. jaas:realm-list
このセクションでは、これまでに jaas:realm-list
を使用しました。
jaas:realm-list
コマンドは、レルムと各レルムのログインモジュールを一覧表示します。
karaf@root()> jaas:realm-list Index | Realm Name | Login Module Class Name ----------------------------------------------------------------------------------- 1 | karaf | org.apache.karaf.jaas.modules.properties.PropertiesLoginModule 2 | karaf | org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule
ここに、2 つのログインモジュール (PropertiesLoginModule
と PublickeyLoginModule
) を含む 1 つのレルム (karaf
) があります。
index
コマンドは、管理するレルム/ログインモジュールを簡単に識別するために jaas:realm-manage
コマンドによって使用されます。
20.1.1.1.2. jaas:realm-manage
jaas:realm-manage
コマンドは、レルム/ログインモジュールの編集モードを切り替え、ログインモジュールでユーザー、グループ、およびロールを管理できます。
管理するレルムおよびログインモジュールを識別するには、--index
オプションを使用します。インデックスは jaas:realm-list
コマンドによって表示されます。
karaf@root()> jaas:realm-manage --index 1
もう 1 つの方法は、--realm
および --module
オプションを使用することです。--realm
オプションはレルム名を想定し、--module
オプションはログインモジュールクラス名を想定します。
karaf@root()> jaas:realm-manage --realm karaf --module org.apache.karaf.jaas.modules.properties.PropertiesLoginModule
20.1.1.1.3. jaas:user-list
編集モードの場合は、jaas:user-list
を使用してログインモジュールのユーザーを一覧表示できます。
karaf@root()> jaas:user-list User Name | Group | Role -------------------------------- karaf | admingroup | admin karaf | admingroup | manager karaf | admingroup | viewer
ユーザー名およびグループはロールごとに確認できます。
20.1.1.1.4. jaas:user-add
jaas:user-add
コマンドは、現在編集中のログインモジュールに新しいユーザー (およびパスワード) を追加します。
karaf@root()> jaas:user-add foo bar
変更 (ユーザーの追加) をコミットするには、jaas:update
コマンドを実行します。
karaf@root()> jaas:update karaf@root()> jaas:realm-manage --index 1 karaf@root()> jaas:user-list User Name | Group | Role -------------------------------- karaf | admingroup | admin karaf | admingroup | manager karaf | admingroup | viewer foo | |
一方、ユーザーの追加をロールバックする場合は、jaas:cancel
コマンドを使用できます。
20.1.1.1.5. jaas:user-delete
jaas:user-delete
コマンドは、現在編集中のログインモジュールからユーザーを削除します。
karaf@root()> jaas:user-delete foo
jaas:user-add
コマンドの場合と同様に、jaas:update
を使用して変更をコミットする必要があります (または jaas:cancel
を使用してロールバックする必要があります)。
karaf@root()> jaas:update karaf@root()> jaas:realm-manage --index 1 karaf@root()> jaas:user-list User Name | Group | Role -------------------------------- karaf | admingroup | admin karaf | admingroup | manager karaf | admingroup | viewer
20.1.1.1.6. jaas:group-add
jaas:group-add
コマンドは、現在編集中のログインモジュールでグループをユーザーに割り当てます (最終的にグループを作成)。
karaf@root()> jaas:group-add karaf mygroup
20.1.1.1.7. jaas:group-delete
jaas:group-delete
コマンドは、現在編集中のログインモジュールでグループからユーザーを削除します。
karaf@root()> jaas:group-delete karaf mygroup
20.1.1.1.8. jaas:group-role-add
jaas:group-role-add
コマンドは、現在編集中のログインモジュールでグループのロールを追加します。
karaf@root()> jaas:group-role-add mygroup myrole
20.1.1.1.9. jaas:group-role-delete
jaas:group-role-delete
コマンドは、現在編集中のログインモジュールでグループからロールを削除します。
karaf@root()> jaas:group-role-delete mygroup myrole
20.1.1.1.10. jaas:update
jaas:update
コマンドは、ログインモジュールのバックエンドで変更をコミットします。たとえば、PropertiesLoginModule の場合、etc/users.properties
は jaas:update
コマンドの実行後にのみ更新されます。
20.1.1.1.11. jaas:cancel
jaas:cancel
コマンドは変更をロールバックし、ログインモジュールのバックエンドを更新しません。
20.1.2. パスワードの暗号化
デフォルトでは、パスワードは etc/users.properties
ファイルにクリアテキストで保存されます。
etc/org.apache.karaf.jaas.cfg
設定ファイルで暗号化を有効にすることができます。
################################################################################ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ################################################################################ # # Boolean enabling / disabling encrypted passwords # encryption.enabled = false # # Encryption Service name # the default one is 'basic' # a more powerful one named 'jasypt' is available # when installing the encryption feature # encryption.name = # # Encryption prefix # encryption.prefix = {CRYPT} # # Encryption suffix # encryption.suffix = {CRYPT} # # Set the encryption algorithm to use in Karaf JAAS login module # Supported encryption algorithms follow: # MD2 # MD5 # SHA-1 # SHA-256 # SHA-384 # SHA-512 # encryption.algorithm = MD5 # # Encoding of the encrypted password. # Can be: # hexadecimal # base64 # encryption.encoding = hexadecimal
encryption.enabled
が true に設定されている場合、パスワードの暗号化が有効になります。
暗号化を有効にすると、パスワードは、ユーザーの初回ログイン時に暗号化されます。暗号化したパスワードの先頭と末尾に、\{CRYPT\
} が付きます。パスワードを再暗号化するには、先頭と末尾の \{CRYPT\
} がない状態でパスワードをリセットできます (etc/users.properties
ファイルで)。Apache Karaf は、このパスワードが明確であることを検出し (先頭と末尾に \{CRYPT\
} がないため)、再度暗号化します。
etc/org.apache.karaf.jaas.cfg
設定ファイルを使用すると、高度な暗号化動作を定義できます。
-
encryption.prefix
プロパティーは、パスワードが暗号化されていることをフラグする接頭辞を定義します。デフォルトは\{CRYPT\
} です。 -
encryption.suffix
プロパティーは、パスワードが暗号化されていることをフラグする接尾辞を定義します。デフォルトは\{CRYPT\
} です。 -
encryption.algorithm
プロパティーは、暗号化 (digest) に使用するアルゴリズムを定義します。可能な値は、MD2
、MD5
、SHA-1
、SHA-256
、SHA-384
、SHA-512
です。デフォルトはMD5
です。 -
encryption.encoding
プロパティーは、暗号化されたパスワードのエンコーディングを定義します。可能な値はhexadecimal
またはbase64
です。デフォルト値はhexadecimal
です。
20.1.3. キーによる認証の管理
SSH レイヤーでは Karaf はキーによる認証をサポートし、パスワードなしでログインできるようにします。
SSH クライアント (Karaf 自体によって提供される bin/client、OpenSSH などの ssh クライアント) は、Karaf SSHD(サーバー側) 上で自身を識別する公開鍵と秘密鍵のペアを使用します。
接続が許可された鍵は、次の形式に従って etc/keys.properties
ファイルに格納されます。
user=key,role
デフォルトでは、Karaf は karaf ユーザーのキーを許可します。
# karaf=AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QAAAIEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACBAKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53JjTuyk31drV2qxhIOsLDC9dGCWj47Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx,admin
セキュリティー上の理由から、このキーは無効になっています。クライアントごとにキーペアを作成し、etc/keys.properties
ファイルを更新することが推奨されます。
キーペアを作成する最も簡単な方法は、OpenSSH を使用することです。
以下を使用してキーペアを作成できます。
ssh-keygen -t dsa -f karaf.id_dsa -N karaf
これで公開鍵と秘密鍵ができました。
-rw------- 1 jbonofre jbonofre 771 Jul 25 22:05 karaf.id_dsa -rw-r--r-- 1 jbonofre jbonofre 607 Jul 25 22:05 karaf.id_dsa.pub
etc/keys.properties
の karaf.id_dsa.pub
ファイルの内容をコピーできます。
karaf=AAAAB3NzaC1kc3MAAACBAJLj9vnEhu3/Q9Cvym2jRDaNWkATgQiHZxmErCmiLRuD5Klfv+HT/+8WoYdnvj0YaXFP80phYhzZ7fbIO2LRFhYhPmGLa9nSeOsQlFuX5A9kY1120yB2kxSIZI0fU2hy1UCgmTxdTQPSYtdWBJyvO/vczoX/8I3FziEfss07Hj1NAAAAFQD1dKEzkt4e7rBPDokPOMZigBh4kwAAAIEAiLnpbGNbKm8SNLUEc/fJFswg4G4VjjngjbPZAjhkYe4+H2uYmynry6V+GOTS2kaFQGZRf9XhSpSwfdxKtx7vCCaoH9bZ6S5Pe0voWmeBhJXi/Sww8f2stpitW2Oq7V7lDdDG81+N/D7/rKDD5PjUyMsVqc1n9wCTmfqmi6XPEw8AAACAHAGwPn/Mv7P9Q9+JZRWtGq+i4pL1zs1OluiStCN9e/Ok96t3gRVKPheQ6IwLacNjC9KkSKrLtsVyepGA+V5j/N+Cmsl6csZilnLvMUTvL/cmHDEEhTIQnPNrDDv+tED2BFqkajQqYLgMWeGVqXsBU6IT66itZlYtrq4v6uDQG/o=,admin
また、クライアントに karaf.id_dsa
秘密鍵を使用するように指定します。
bin/client -k ~/karaf.id_dsa
または ssh を使用します。
ssh -p 8101 -i ~/karaf.id_dsa karaf@localhost
20.1.4. RBAC
Apache Karaf はロールを使用してリソースへのアクセスを制御します。これは RBAC(Role Based Access Control) システムです。
ロールは、以下を制御するために使用されます。
- OSGi サービスへのアクセス
- コンソールへのアクセス (コマンドの実行の制御)
- JMX へのアクセス (MBean や操作)
- WebConsole へのアクセス
20.1.4.1. OSGi サービス
OSGi サービス RBAC サポートの詳細は、開発者ガイドを参照してください。
20.1.4.2. コンソール
コンソール RBAC のサポートは、OSGi サービス RBAC を特化したものです。実際には、Apache Karaf では、すべてのコンソールコマンドは OSGi サービスとして定義されます。
コンソールのコマンド名は scope:name
形式に従います。
ACL(アクセスリスト) は、etc/org.apache.karaf.command.acl.<scope>.cfg
設定ファイルで定義されています。<scope>
はコマンドスコープです。
たとえば、etc/org.apache.karaf.command.acl.feature.cfg
設定ファイルを作成することにより、feature:*
コマンドに対する ACL を定義できます。この etc/org.apache.karaf.command.acl.feature.cfg
設定ファイルでは、次のように設定できます。
list = viewer info = viewer install = admin uninstall = admin
ここでは、feature:list
コマンドと feature:info
コマンドは、viewer
ロールを持つユーザーが実行できるのに対し、feature:install
コマンドと feature:uninstall
コマンドは admin
ロールを持つユーザーのみが実行できることを定義します。admin グループのユーザーも viewer ロールを持っているため、すべて実行できることに注意してください。
Apache Karaf コマンド ACL は、(指定のコマンドスコープ内で) を使用してアクセスを制御できます。
-
コマンド名の正規表現 (例:
name = role
) -
コマンド名とオプションまたは引数の値の正規表現 (例: 100 を超える引数の値でのみ名前を実行する
name[/.[0-9][0-9][0-9]+./] = role
)
コマンド名とオプション/引数はいずれも、完全一致または正規表現の一致をサポートします。
デフォルトでは、Apache Karaf は以下の ACL を定義します。
-
etc/org.apache.karaf.command.acl.bundle.cfg
設定ファイルは、bundle:*
コマンドの ACL を定義します。この ACL は、システムバンドルのbundle:*
コマンドの実行をadmin
ロールが割り当てられたユーザーのみに制限しますが、システム以外のバンドルのbundle:*
コマンドは、manager
ロールを持つユーザーが実行できます。 -
etc/org.apache.karaf.command.acl.config.cfg
設定ファイルは、config:*
コマンドの ACL を定義します。この ACL は、jmx.acl.*
、org.apache.karaf.command.acl.*
、およびorg.apache.karaf.service.acl.*
設定 PID を使用したconfig:*
コマンドの実行をadmin
ロールを持つユーザーに制限します。他の設定 PID の場合、manager
ロールを持つユーザーはconfig:*
コマンドを実行できます。 -
etc/org.apache.karaf.command.acl.feature.cfg
設定ファイルは、feature:*
コマンドの ACL を定義します。admin
ロールを持つユーザーのみがfeature:install
およびfeature:uninstall
コマンドを実行できます。その他のfeature:*
コマンドは、任意のユーザーが実行できます。 -
etc/org.apache.karaf.command.acl.jaas.cfg
設定ファイルは、jaas:*
コマンドの ACL を定義します。admin
ロールを持つユーザーのみがjaas:update
コマンドを実行できます。その他のjaas:*
コマンドは、任意のユーザーが実行できます。 -
etc/org.apache.karaf.command.acl.kar.cfg
設定ファイルは、kar:*
コマンドの ACL を定義します。admin
ロールを持つユーザーのみがkar:install
およびkar:uninstall
コマンドを実行できます。その他のkar:*
コマンドは、任意のユーザーが実行できます。 -
etc/org.apache.karaf.command.acl.shell.cfg
設定ファイルは、shell:*
コマンドと"direct"コマンドの ACL を定義します。admin
ロールを持つユーザーのみが、shell:edit
、shell:exec
、shell:new
、およびshell:java
コマンドを実行できます。その他のshell:*
コマンドは、任意のユーザーが実行できます。
これらのデフォルト ACL を変更し、追加のコマンド範囲に自身の ACL を追加できます (Apache Karaf Cellar の場合は etc/org.apache.karaf.command.acl.cluster.cfg
、Apache Camel の場合は etc/org.apache.karaf.command.acl.camel.cfg
など)。
etc/system.properties
の karaf.secured.services
プロパティーを編集することにより、コマンド RBAC サポートを微調整できます。
# # By default, only Karaf shell commands are secured, but additional services can be # secured by expanding this filter # karaf.secured.services = (&(osgi.command.scope=*)(osgi.command.function=*))
20.1.4.3. JMX
コンソールコマンドと同様に、ACL(AccessList) を JMX レイヤーに定義できます。
JMX ACL は、etc/jmx.acl<ObjectName>.cfg
設定ファイルで定義されます。<ObjectName>
は MBean オブジェクト名です (たとえば、org.apache.karaf.bundle
は org.apache.karaf;type=Bundle
MBean を表します)。
etc/jmx.acl.cfg
は最も汎用的な設定ファイルであり、特定の設定ファイルが見つからない場合に使用されます。グローバル ACL 定義が含まれます。
JMX ACL は、(JMX MBean 内) を使用してアクセスを制御できます。
-
操作名の正規表現 (例:
operation* = role
) -
操作引数値正規表現 (例:
operation(java.lang.String, int)[/([1-4])?[0-9]/,/.*/] = role
)
デフォルトでは、Apache Karaf は以下の JMX ACL を定義します。
-
etc/jmx.acl.org.apache.karaf.bundle.cfg
設定ファイルは、org.apache.karaf:type=bundle
MBean の ACL を定義します。この ACL は、admin
ロールを持つユーザーに対してのみ、システムバンドルsetStartLevel()
、start()
、stop()
、およびupdate()
操作を制限します。その他の操作は、manager
のロールを持つユーザーが実行できます。 -
etc/jmx.acl.org.apache.karaf.config.cfg
設定ファイルは、org.apache.karaf:type=config
MBean の ACL を定義します。この ACL は、jmx.acl*
、org.apache.karaf.command.acl*
、およびorg.apache.karaf.service.acl*
設定 PID の変更を、admin
ロールを持つユーザーに制限します。その他の操作は、manager
のロールを持つユーザーが実行できます。 -
etc/jmx.acl.org.apache.karaf.security.jmx.cfg
設定ファイルは、org.apache.karaf:type=security,area=jmx
MBean の ACL を定義します。この ACL は、viewer
ロールを持つユーザーにcanInvoke()
操作の呼び出しを制限します。 -
etc/jmx.acl.osgi.compendium.cm.cfg
設定ファイルは、osgi.compendium:type=cm
MBean の ACL を定義します。この ACL は、jmx.acl*
、org.apache.karaf.command.acl*
、およびorg.apache.karaf.service.acl*
設定 PID の変更を、admin
ロールを持つユーザーに制限します。その他の操作は、manager
のロールを持つユーザーが実行できます。 -
etc/jmx.acl.java.lang.Memory.cfg
設定ファイルは、コア JVM Memory MBean の ACL を定義します。この ACL は、gc
操作の呼び出しをmanager
ロールを持つユーザーのみに制限します。 -
etc/jmx.acl.cfg
設定ファイルは最も汎用的なファイルです。ここで定義された ACL は、他の特定の ACL が一致しない場合に使用されます (特定の ACL によって)。これは別の MBean 固有のetc/jmx.acl.*.cfg
設定ファイルで定義される ACL です。list*()
、get*()
、is*()
操作は、viewer
ロールを持つユーザーが実行できます。set*()
および他のすべての*()
操作は、admin
ロールを持つユーザーが実行できます。
20.1.4.4. WebConsole
Apache Karaf WebConsole はデフォルトで利用できません。これを有効にするには、webconsole
機能をインストールする必要があります。
karaf@root()> feature:install webconsole
WebConsole では、コンソールや JMX などの粒度の細かい RBAC はサポートされません。
admin
ロールを持つすべてのユーザーが WebConsole にログインし、任意の操作を実行できます。
20.1.5. SecurityMBean
Apache Karaf は、現在のユーザーが指定の MBean や操作を呼び出すことができるかどうかをチェックする JMX MBean を提供します。
canInvoke()
操作は現在のユーザーのロールを取得し、最終的に指定された引数値を使用して、ロールが MBean や操作を呼び出しできるかどうかを確認します。
20.1.5.1. 操作
-
canInvoke(objectName)
は、現在のユーザーがobjectName
を使用して MBean を呼び出すことができる場合はtrue
を返し、できない場合はfalse
を返します。 -
canInvoke(objectName)
は、現在のユーザーがobjectName
を使用して操作methodName
を MBean で呼び出すことができる場合はtrue
を返し、できない場合はfalse
を返します。 -
canInvoke(objectName, methodName, argumentTypes)
は、現在のユーザーがobjectName
を使用して、MBean で引数タイプargumentTypes
の配列を使用して操作methodName
を呼び出すことができる場合はtrue
を返し、それ以外の場合はfalse
を返します。 -
canInvoke(bulkQuery)
は、canInvoke
がtrue
またはfalse
の場合、bulkQuery
表形式データの各操作を含む表形式データを返します。
20.1.6. セキュリティープロバイダー
アプリケーションによっては、[BouncyCastle|http://www.bouncycastle.org] などの特定のセキュリティープロバイダーが利用可能である必要があります。
JVM には、署名済みでブートクラスパスで利用可能できる必要があるなど、jar の使用に関するいくつかの制限があります。
これらのプロバイダーをデプロイする方法の 1 つは、$JAVA_HOME/jre/lib/ext
の JRE フォルダーに配置し、そのプロバイダーを登録するためにセキュリティーポリシー設定 ($JAVA_HOME/jre/lib/security/java.security
) を変更することです。
このアプローチは問題なく機能しますが、グローバルな効果があり、それに応じてすべてのサーバーを設定する必要があります。
Apache Karaf は、追加のセキュリティープロバイダーを設定する簡単な方法を提供します。* プロバイダー jar を lib/ext
に配置 * etc/config.properties
設定ファイルを変更して以下のプロパティーを追加
org.apache.karaf.security.providers = xxx,yyy
このプロパティーの値は、登録するプロバイダークラス名のコンマ区切りリストです。
たとえば、bouncycastle セキュリティープロバイダーを追加するには、以下を定義します。
org.apache.karaf.security.providers = org.bouncycastle.jce.provider.BouncyCastleProvider
さらに、すべてのバンドルがそれらにアクセスできるように、システムバンドルのこれらのプロバイダーからクラスにアクセスできるようにしてください。
これには、同じ設定ファイルの org.osgi.framework.bootdelegation
プロパティーを変更します。
org.osgi.framework.bootdelegation = ...,org.bouncycastle*