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

ストレージのセキュリティ確保

認可されたユーザーのみがファイルにアクセスできるように、あなたのストレージバケットを保護する @secureStorage デコレーター。

Squid のストレージ機能を使用すると、Squid Client SDK を通じてファイルを管理でき、任意のクライアントからファイルにアクセスすることができます。Squid Client SDK を使用した Squid ストレージの利用方法の詳細については、Squid storage documentation をご覧ください。

Squid バックエンド内の SquidService クラスで @secureStorage デコレーターを使用し、統合IDとアクションタイプを渡すことで、Squid ストレージバケット統合のセキュリティを確保できます。以下のコードは、組み込みストレージバケットへのフルアクセスを許可するものです:

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

@secureStorage('all', 'built_in_storage')
allowAllAccessToBuiltInStorage(): boolean {
return true;
}

別のストレージ統合のための Squid ストレージバケットを保護するには、デコレーターに統合ID を指定してください:

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

@secureStorage('all', 'YOUR_STORAGE_INTEGRATION_ID')
allowAllAccessToStorageIntegration(): boolean {
return true;
}

利用可能なアクションタイプは以下の通りです:

'read'

'read' アクションには、メタデータの読み取り、ダウンロード URL の生成、ファイルのダウンロード、ディレクトリ内容の一覧表示が含まれます。

'write'

'write' アクションには、新規ファイルの挿入、既存ファイルの更新、ファイルの削除が含まれます。

'insert'

'insert' アクションは、新規ファイルの挿入を許可しますが、既存ファイルの内容の更新や削除は許可しません。

'delete'

'delete' アクションは、既存ファイルの削除を許可します。

'all'

'all' アクションには、すべての利用可能なバケットアクションが含まれます。

書き込みのセキュリティ確保

以下の関数は、認証済みユーザーが組み込みストレージバケットにファイルをアップロード、更新、削除できるようにします:

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

@secureStorage('write', 'built_in_storage')
allowAuthenticatedWrites(): boolean {
return this.isAuthenticated();
}

読み込みのセキュリティ確保

ディレクトリ名、ファイルのメタデータの読み取り、ダウンロード URL の生成を保護するには、'read' アクションタイプを使用します。以下の関数は、ファイルパスがユーザーIDである場合にユーザーがダウンロード URL を生成できるようにします:

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

@secureStorage('read', 'built_in_storage')
allowReadUserFiles(context: StorageContext): boolean {
// リクエストされたアクションがダウンロード URL の取得であるかを検証
if (context.functionality !== 'getDownloadUrl') {
return false;
}

const userId = this.getUserAuth()?.userId;
if (!userId) return false;

// ユーザーがアクセスしようとしているパスがユーザーのディレクトリ内にあるかを検証
for (const path of context.pathsInBucket) {
if (if (!path.startsWith(`user/${userId}`)) {
return false
}
}
return true;
}

関数のパラメーターとして StorageContext オブジェクトを含めることで、クライアントが実行しようとしているアクションに関する情報にセキュリティ関数がアクセスできるようになります。以下は StorageContext オブジェクトの例です:

{
integrationId: 'built_in_storage',
pathsInBucket: [ 'test/path/img.jpg' ],
action: 'read',
functionality: 'getFileMetadata'
}