メインコンテンツまでスキップ

キューの保護

The @secureTopic decorator はあなたの Apache Kafka キューを保護し、認証されたユーザーのみがデータストリームメッセージにアクセスできるようにします。

Squid queue のトピックを保護するには、トピック名とアクションタイプを渡して @secureTopic デコレーターを使用します。以下のコードは、'hello-world' トピックに対して読み書きアクセスを許可します:

Backend code
import { SquidService, secureTopic } from '@squidcloud/backend';

export class ExampleService extends SquidService {
@secureTopic('topic-name', 'all')
allowTopicAccess(): boolean {
return true;
}
}

アクションタイプは、'read''write'、または 'all' のいずれかです。

トピックメッセージの読み取りの保護

トピックメッセージの読み取りを保護する際、セキュリティ関数はクライアントが読み取りたいトピックメッセージに関する integration ID とトピック名を含む TopicReadContext を渡します。以下の例は、'topic-name' トピックが認証済みユーザーのみが読み取れるように保護しています:

Backend code
import { SquidService, secureTopic, TopicReadContext } from '@squidcloud/backend';

@secureTopic('topic-name', 'read')
allowTopicRead(context: TopicReadContext): boolean {
console.log(context.topicName);

return this.isAuthenticated();
}

トピックメッセージの書き込みの保護

トピックメッセージの書き込みを保護する際、セキュリティ関数はクライアントが書き込みたいトピックメッセージに関する integration ID、トピック名、およびメッセージの配列を含む TopicWriteContext<T> (ここで T はメッセージの型) を渡します。以下の例は、任意のメッセージに 'bad word' が含まれている場合には書き込みを許可しないようにトピックへの書き込みを保護する方法を示しています:

Backend code
import { SquidService, secureTopic, TopicWriteContext } from '@squidcloud/backend';

@secureTopic('topic-name', 'write')
allowTopicWrite(context: TopicWriteContext<T>): boolean {
console.log(context.topicName);
for (const message of context.messages) {
console.log(message);
if (message.contains('bad word')) {
return false;
}
}
return true;
}

Apache Kafka または Confluent のインテグレーションを使用する場合、デコレーターの第3パラメータとして integration ID を提供してください。以下の例は、integration ID が 'kafka-integration-id' のキューに対するセキュリティ関数を示しています:

Backend code
import { SquidService, secureTopic } from '@squidcloud/backend';

export class ExampleService extends SquidService {
@secureTopic('topic-name', 'all', 'kafka-integration-id')
allowTopicAccess(): boolean {
return true;
}
}