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

キューのセキュリティ保護

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

Squid のキュートピックを保護するには、@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' にできます。

トピックメッセージ読み取りのセキュリティ保護

トピックメッセージの読み取りを保護する場合、セキュリティ関数には TopicReadContext が渡されます。これには、クライアントが読み取りたいトピックメッセージに対応する integration ID とトピック名が含まれます。次の例では、認証済みユーザーのみが '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();
}

トピックメッセージ書き込みのセキュリティ保護

トピックメッセージの書き込みを保護する場合、セキュリティ関数には TopocWriteContext<T>(T はメッセージの型)が渡されます。これには、integration ID、トピック名、そしてクライアントが書き込みたいトピックメッセージの配列が含まれます。次の例は、いずれかのメッセージに '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 integration を使用する場合は、デコレーターの第 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;
}
}