トピックのセキュリティー
クライアント・アプリケーションは、トピックに対してパブリッシュおよびサブスクライブします。 メッセージング・セキュリティーが使用可能になっている場合、クライアント・アプリケーションにはトピックにアクセスする権限が必要です。
トピックは、宛先タイプであるトピック・スペースに含まれています。 トピック・スペース内で、トピックは、トピック名を基にして、1 つ以上のトピック階層に編成されます。 トピック階層は、トピック・スペースの作成時に作成される「仮想ルート」に結合されます。 トピックは、クライアント・アプリケーションがトピックにパブリッシュする際に、トピック・スペース内に作成されます。
接続がトピックにアクセスする際には、アクセス検査を行い、 接続に関連付けられたユーザーが、トピックを含むトピック・スペース宛先への アクセス権を持っていることを確認します。 ユーザーがトピック自体へのアクセス権も備えていることを確認するために、 トピック・スペース宛先が所有するトピック階層内で、2 次検査が実行されます。これで、 このセクション内の後の図に示すように、トピックへのアクセスをより細かく制御できるようになります。 この図は、tspace1 というトピック・スペースには、2 つのトピック階層 (sports と cars) が含まれていることを示しています。

各バスには、複数のトピック・スペースを含めることができます。 各トピック・スペースは、バス内の他のトピック・スペースから独立しています。 別のトピック・スペースにあるトピックは、同じ名前でも無関係です。 例えば、2 つのトピック・スペース (tspace1 と tspace2) を含んだバスがあり、それぞれのトピック・スペースに、 cars というトピックが含まれているとします。 クライアント・アプリケーションは、tspace1 の cars にサブスクライブしている場合、 tspace1 の cars トピックにパブリッシュされたメッセージしか受け取ることができません。
ロール・ベースの許可およびトピックの継承
トピックのセキュリティーは、ロール・ベースの許可に基づきます。 詳しくは、ロール・ベースの許可を参照してください。多くのトピックのセキュリティー許可の管理を簡単にするために、 トピックに定義されたアクセス・ロールには、デフォルトで、トピック自体およびトピック階層内でそれより下位のトピックのアクセス権限が含まれています。 そのため、トピックは、親トピックのロールを継承します。 従って、仮想ルートで定義されたアクセス・ロールには、デフォルトで、トピック・スペース内のすべてのトピックのアクセス権限が含まれています。 上記の例では、トピック・スペース tspace1 の仮想ルートで、Sender および Receiver ロールが定義されています。
- トピック sports、cricket、および cars は、仮想ルートで定義された Sender ロールを継承しますが、 トピック tennis の Sender ロールの継承は使用不可になっています。 つまり、トピック tennis およびその子は、仮想ルートから Sender ロールを継承できません。 Sender ロールは、トピック tennis 自体に定義されています。 メッセージング・エンジンは、接続側クライアント・アプリケーションにトピック tennis およびその子の Sender ロールの権限があるかを検査します。
- 階層内のすべてのトピックは、仮想ルートから Receiver ロールを継承しています。 sports トピックにも、自身の Receiver ロールがあります。 メッセージング・エンジンは、追加のアクセス・ロールが存在する場合には追加の検査を実行します。 トピック sports の子は、親トピックおよび仮想ルートから Receiver ロールを継承します。 lawn トピックにも、自身の Receiver ロールがあります。
トピックのアクセス・ロールは、そのトピックが実行時に作成される前に定義することができます。 トピックの継承を明示的に使用不可にしない限り、トピックはロールを親から継承する可能性があることに注意してください。
サブスクリプションの許可
クライアント・アプリケーションが選択したトピックのサブスクリプションを作成する際に、 メッセージング・エンジンは、選択したトピックにパブリッシュされたメッセージを受信するための Receiver ロールの権限がクライアントにあるかを検査します。 サブスクリプションは、単一トピックに、またはトピック 指定でワイルドカードを使用すれば複数のトピックに作成することができます。 どちらの場合でも、サブスクリプションのためにメッセージが到着すると、 メッセージング・エンジンは、選択したトピックの Receiver ロールの権限がクライアント・アプリケーションにあるかを検査します。 クライアント・アプリケーションが単一のトピックのサブスクリプションを作成する際に、 メッセージング・エンジンは、サブスクリプションを作成するための Creator ロールの権限がクライアントにあるかを検査します。
「非永続」サブスクリプションは、サブスクライバー・セッションの継続期間にわたって存在します。 つまり、サブスクリプションは、サブスクライバー・セッションが終了すると存在しなくなります。 「永続」サブスクリプションは、サブスクライバー・セッションが終了しても存在しつづけます。 つまり、サブスクリプションは、サブスクライバーがバスに接続されていなくても、単一または複数のトピックのメッセージを収集しつづけます。 サブスクライバーは、サブスクリプションを再始動して、メッセージを収集することができます。 永続サブスクリプションを作成したクライアント・アプリケーションのみがサブスクリプションを再始動することができます。 これによって、メッセージング・エンジンは、サブスクリプションが非アクティブのときにトピックで収集されたメッセージのアクセス権限を検査できます。