ユーザーデータの管理は Capacitor アプリでは、安全なデータストレージ、データ保持ポリシー、データ保護法規制の遵守(GDPR、CCPAなど)が必要です。 __CAPGO_KEEP_0__ アプリのユーザーデータを安全に管理するには、 __CAPGO_KEEP_0__. This guide explains how to minimize data collection, secure sensitive information, and manage permissions effectively. Here’s a quick overview:
- データ最小化: 必要なアプリ機能のみに必要なデータを収集する
- 機密情報保護: 例として、
@capacitor/secure-storageプラグインを使用した暗号化 - データ保持: 定義された時間制限に基づいて自動的に削除する
- ユーザー権利: ユーザーがデータを表示、削除、またはエクスポートできるようにする
- 権限管理: 要求された権限を提供し、拒否された要求に対して代替を提供する
- OTA更新: セキュアなオーバー・ザエア更新を実現するツール Capgo.
イオニックを使用する方法 Capacitor セキュアストレージ

データ収集の削減
データ収集の削減を実現するには、プライバシー規制に準拠するために必要なデータ収集の範囲を把握することが重要です。Capacitorのデータ収集を最小限に抑えるための組み込みツールを活用することで、データ収集の実践を改善するための実践的なステップを実行できます。
データ収集のレビュー
データ収集の流れをマッピングし始めましょう。データの流れを視覚化するツールや、不要なデータが収集される可能性のある箇所を特定するためのツールを使用してください。データの流れを視覚化するソフトウェアや、データが必要かどうかを評価するためのプライバシーアイムパクトアセスメント(PIA)ソフトウェアを活用してください。以下に、データ収集を削減するための焦点を絞ったアプローチを示します。
| データ型 | レビュー焦点 | アクションアイテム |
|---|---|---|
| ユーザー入力 | フォームフィールドと検証 | 不要なフィールドを削除 |
| API呼び出し | 要求/応答ペイロード | 不要なデータフィールドをフィルタ |
| ストレージ | キャッシュされたおよび永続的なデータ | ストレージ使用量を最適化 |
| Analytics | 利用状況のトラッキング | 必要なメトリックのみを保持 |
データ収集の目標
データ収集の目的を明確にし、各データポイントが特定の目的を果たすようにする。例えば:
// Purpose-driven data collection example
const userPreferences = {
location: "Used for local weather updates",
notification: "Needed for sending alerts"
};
アプリが天気の機能を持っている場合、フルアドレスではなく、単に郵便番号codeを収集する必要があるかもしれません。このアプローチにより、コアアプリ機能に必要な情報のみを収集することが保証されます[1][5].
データ入力制御
フォームやAPI呼び出しを通じて収集されるデータの量を制限するために、検証ツールを使用する。クライアントサイドの検証とサーバーサイドの検証を組み合わせて、これらの制限を効果的に強制する。
Capacitorのセキュリティ機能を組み込んで、これらの制御を強化する。
- 可能な限りドロップダウンメニューを使用し、フリーテキストフィールドを使用しない。
- テキスト入力フィールドの文字数制限を設定する。
定期的なアクセス監査を実施し、自動化された発見ツールを使用して、データ収集の実践が効率的かつアプリの目的と一致していることを確認する。
データ セキュリティとストレージ
ユーザー情報を保護するために、データ最小化の原則に従いながら、データ収集の境界を定義した後、重要なセキュリティ対策を実装する必要があります。
セキュアなストレージの設定
The @capacitor/secure-storage プラグインは、iOS KeychainとAndroid Keystoreなどの組み込みセキュリティ機能を使用して、機密情報を保護します [1]大規模な構造化データセットの場合、 @capgo/capacitor-data-storage-sqlite 暗号化されたSQLiteストレージを提供し、 @capgo/capacitor-persistent-account 再インストール時にアカウントの状態を保存できます。 @capgo/capacitor-privacy-screen アプリSwitcherと最近のアプリのプレビューで機密UIを非表示にします。
import { SecureStorage } from '@capacitor/secure-storage';
// Store sensitive data
await SecureStorage.set({
key: 'authToken',
value: 'user-specific-token'
});
// Retrieve stored data
const { value } = await SecureStorage.get({ key: 'authToken' });
データ暗号化方法
クライアントサイドの暗号化を追加することで、さらに保護することができます。ライブラリとしては CryptoJS が利用できます。 重要な情報を暗号化することができます。
// Basic encryption/decryption implementation
const encryptData = (data: string, key: string): string => {
return CryptoJS.AES.encrypt(data, key).toString();
};
暗号化鍵を定期的に交換することは、セキュリティを向上させる賢い方法です。 1 つの鍵が侵害された場合でも、残りのデータは安全に保たれます。 [2].
ストレージオプションの比較
データの敏感度に応じて、適切なストレージソリューションを選択する必要があります。 以下の比較表をご覧ください。
| 機能 | セキュアストレージ | ローカルストレージ |
|---|---|---|
| セキュリティレベル | 高 (暗号化) | 基本 |
| 最適 | トークン、パスワード | 非機密設定 |
| パフォーマンス | 暗号化により遅い | 高速アクセス |
CapgoのSecure Storage APIは、認証トークンや個人情報などの重要な情報の保存に適した選択肢です [1][4]。その 暗号化機能 は、保管期間内でのデータへの制御されたアクセスを可能にするため、保管ポリシーと一致しています [2].
sbb-itb-f9944d2
データストレージの時間制限
データの保持期間を明確に設定することで、データの最小化の原則に沿った情報の管理が可能になり、情報が必要以上に保持されることを防ぐことができます。
ストレージ時間規則
ユーザーデータの異なる種類には、目的と感受性のレベルに基づいて定義された保持期間が必要です。以下は、データの保持期間を管理するための提案されたフレームワークです。 Capacitor アプリ:
| データタイプ | 保持期間 | 理由 |
|---|---|---|
| アカウントデータ | アカウント削除または 2 年間の非活性後 | アカウント関連の操作が必要 |
| 取引記録 | 7年 | 金融規制への適合 |
| 分析データ | 90日間(匿名化)、1年間(削除) | 機能改善のサポート |
| マーケティングのプライアシー | オプトアウトまたはアカウントの削除まで | 同意要件に従う |
データの有効期限が設定されたデータの保存の例です。
async function storeDataWithExpiration(key: string, value: any, retentionDays: number) {
const item = {
value: value,
expiration: Date.now() + (retentionDays * 24 * 60 * 60 * 1000)
};
await Preferences.set({ key, value: JSON.stringify(item) });
}
自動データ削除
データのクリーンアップを自動化することで、適合性を維持し、手動介入を減らすことができます。Capacitorのバックグラウンドフェッチ機能は、このようなツールとして役立ちます。
import { BackgroundFetch } from '@capacitor/background-fetch';
BackgroundFetch.registerTask({
taskId: 'data-cleanup',
delay: 3600000,
periodic: true,
requiresNetworkConnectivity: false
}, async () => {
await cleanExpiredData();
return BackgroundFetch.Result.NewData;
});
機能改善のサポート SQLite データの保存に使用する場合、有効期限切れのレコードを自動的に削除するトリガーを設定できます:
CREATE TRIGGER remove_expired_data
AFTER INSERT ON user_data
BEGIN
DELETE FROM user_data
WHERE expiration_date < CURRENT_TIMESTAMP;
END;
ユーザー データの削除オプション
ユーザーのデータを管理するためのツールを提供することは不可欠です。ここでは、実装する2つの重要な機能を紹介します:
- 特定のデータの削除ユーザーがアカウントに関連付けられた特定のデータタイプを削除できるようにします。
async function deleteSpecificData(userId: string, dataType: string) {
await Preferences.remove({ key: `${userId}_${dataType}` });
if (db) {
await db.run(
'DELETE FROM user_data WHERE user_id = ? AND data_type = ?',
[userId, dataType]
);
}
}
- ユーザー データのエクスポートユーザーが保存されたデータを構造化された形式でダウンロードできるようにします。
async function exportUserData(userId: string) {
// Gathers all user data for export
const userData = await collectUserData(userId);
return JSON.stringify(userData);
}
フランスのデータ保護当局 CNIL データ保持期間は、アプリの基本機能と一致する必要があります。 [3]この原則は、特にCapacitorアプリの開発者にとっては、特に重要です。
targetLanguage":"Japanese","protectedTokens":["Cloudflare","Capacitor","GitHub","Capgo","code","API","SDK","CLI","npm","bun"],"texts":["App Permissions Control","ユーザーデータを保護しながら、アプリが予期どおりに機能するようにするには、アプリの権限を慎重に管理することが重要です。権限を適切に管理することで、アプリが実際に必要とするデバイス機能へのアクセスを制限できます。__CAPGO_KEEP_0__’s Permissions __CAPGO_KEEP_1__は、iOSとAndroid両方で権限を統一的に管理するための統一されたアプローチを提供します。","Permission Request Steps","アプリがデータ収集の目標と一致する権限を要求するように確認してください。__CAPGO_KEEP_0__アプリで権限要求を処理するためのサンプル実装を以下に示します。","Managing Denied Permissions","ユーザーが権限要求を拒否した場合、明確な代替案とガイダンスを提供してください。以下の例を参照してください。","Timing Permission Requests","権限を要求するタイミングは重要です。戦略的なタイミングを選択することで、ユーザーの受け入れ率を大幅に改善できます。以下のタイミング戦略の概要をご覧ください。","Timing Strategy","Best Use Case","Just-in-Time","特定の機能が必要なときにのみ使用することをお勧めします"]}
Handling app permissions carefully is key to safeguarding user data while ensuring your app functions as intended. By managing permissions properly, you can limit access to only the device features your app truly needs. Capacitor’s Permissions API offers a unified approach to managing permissions on both iOS and Android.
data collection
Make sure the permissions you request align with your app’s data collection goals. Here’s a sample implementation for handling permission requests in a Capacitor app:
import { Permissions } from '@capacitor/core';
const permissionHandler = async (permissionType: string) => {
const status = await Permissions.query({ name: permissionType });
if (status.state === 'granted') {
return true;
}
const shouldProceed = await showExplanationDialog(
`We need ${permissionType} access to provide core functionality`
);
if (shouldProceed) {
const result = await Permissions.request({ name: permissionType });
return result.state === 'granted';
}
return false;
};
strategic timing
quick breakdown
const handleDeniedPermission = async (permissionType: string) => {
const status = await Permissions.query({ name: permissionType });
if (status.state === 'denied') {
const alternatives = {
camera: 'manual photo upload',
location: 'manual address entry',
notifications: 'in-app message center'
};
showAlternativeFeature(alternatives[permissionType]);
if (status.canOpenSettings) {
offerSettingsRedirect();
}
}
};
specific features
user data
| permission requests | clear alternatives |
|---|---|
| guidance | improve user acceptance rates |
| Contextual | 非必須機能用 |
| 初回起動 | 必須機能用 |
| 遅延 | 例えば、ユーザーが写真を撮るアクションを開始したときにのみカメラアクセスを要求できます。 |
このようなコンテキスト依存の要求は、事前要求と比較して受け入れ率が 50% 高くなります。
const captureImage = async () => {
const userStartedCapture = true;
if (userStartedCapture) {
const granted = await permissionHandler('camera');
if (granted) {
await startCamera();
} else {
showUploadOption();
}
}
};
. ユーザーの決定をセッション間で保存するパーミッション状態トラッカーを維持することで、Smooth なエクスペリエンスを確保できます。 [2]パーミッションの取り扱いが完了したら、特にオーバー・ザ・エア (OTA) のデプロイメントの場合、更新のセキュリティを確保することに焦点を当てることができます。
OTA Update Security
データの完全性を確保するために
__CAPGO_KEEP_0__ アプリの更新, it’s crucial to use secure OTA (Over-The-Air) update processes. These updates help prevent unauthorized changes to app code, which could otherwise bypass limits on data collection.
パッケージの署名
Signing update packages is a critical step in protecting against unauthorized code changes. Here are some key measures to secure OTA updates:
| セキュリティ対策 | どのように行うか |
|---|---|
| コンテンツ保護 | AES暗号化 |
| 配信のセキュリティ | HTTPSと証明書ピンニング |
| 更新の完全性 | ハッシュ検証 |
| バージョン安全性 | 署名バージョン番号 |
| 失敗回復 | 即時ロールバック機能 |
Capgo 更新システム

Capgoは、CapacitorアプリのセキュアなOTA更新を自動化する安全な機能を提供することで、CapacitorアプリのセキュアなOTA更新をCapgoが簡素化します。ここでは、Capgoの更新システムをアプリ内で使用する方法の例を示します。
import { CapacitorUpdater } from '@capgo/capacitor-updater';
const secureUpdate = async () => {
try {
const update = await CapacitorUpdater.download({
version: 'latest',
validateSignature: true
});
if (update.status === 'success') {
await CapacitorUpdater.set(update);
}
} catch (error) {
await CapacitorUpdater.rollback();
}
};
このアプローチでは、更新が検証され、セキュアになり、ロールバックオプションが失敗した場合に提供されます。
ストアポリシーへの準拠
アプリストアのガイドラインに準拠することは、OTA更新の必要条件です。[1][6][7]各プラットフォームには、データ保持とセキュリティポリシーに沿った更新を確実に実施するために、特定の要件があります。
| プラットフォーム | 規制要件 |
|---|---|
| iOS | JavaScriptまたはアセットの更新のみ |
| Android | ユーザーの同意が必要です |
| 両方 | セキュリティチェックと適切なドキュメント |
Capgoのストアに準拠した更新の実装例は以下のようになっています:
const compliantUpdate = async () => {
const userConsent = await requestUpdateConsent();
if (userConsent) {
await CapacitorUpdater.setUpdateConfig({
type: 'assets-only',
scope: 'ui-updates' // Updates limited to UI components
});
}
};
const preventDowngrade = async (newVersion, currentVersion) => {
const versions = await CapacitorUpdater.getVersions();
if (versions.current.buildNumber > newVersion.buildNumber) {
throw new Error('Downgrade attempt detected');
}
};
概要
重要なポイント
ユーザーデータを効果的に管理するには、次の基本戦略を組み合わせることが必要です:
- 必要なデータのみを集める。
- プラットフォーム固有の暗号化を使用して保護する。
- データ保持期限を自動化する。
- 詳細な許可制御を設定する。
データが収集された時点から自動的に削除されるまで、法的準拠を確保するために、これらのステップは協力して機能する。
実装手順
これらの戦略を実行するには:
- セクション2で説明されている方法を使用してデータフローのアウトレイスを実施する。
- セクション3で説明されているようにストレージセキュリティを強化する。
- セクション4に記載されているように、自動削除プロセスを設定する。
- セクション5に記載されている許可制御を確立し、強制する。
Capgoを利用して
CapgoのチームがOTA更新を管理する場合、Capgoには以下のセキュリティツールが組み込まれています。
- エンドツーヘンド暗号化 更新パッケージをセキュリティで保護するために使用します。
- リアルタイムモニタリング 潜在的なセキュリティ脅威に対処するために迅速に実行します。
How to Handle User Data in Capacitor Appsから続けてください。
__CAPGO_KEEP_0__アプリを使用している場合、 How to Handle User Data in Capacitor Apps セキュリティとコンプライアンスの計画に使用する場合は、 Encryption Encryptionの実装詳細については、 Compliance for the implementation detail in Compliance, Capgo セキュリティ スキャナー for the product workflow in Capgo Security Scanner, Capgo セキュリティ for the product workflow in Capgo Security, and Capgo トラスト センター for the product workflow in Capgo Trust Center.