__CAPGO_KEEP_0__でユーザーデータを扱う Capacitor アプリは安全なストレージ、データ保護法に準拠した保有期間の明確化、データ保護法の遵守が必要です。 GDPR CCPA このガイドでは、データ収集の最小化、機密情報の保護、権限の効果的な管理について説明します。ここでは、簡単な概要を紹介します。. データ最小化
- : 必要なアプリ機能ごとに、収集するデータを最小限に抑えます。安全なストレージ
- : 暗号化のための「プラグイン
@capacitor/secure-storage」を使用します。 - データ保有期間: 定義された時間制限に基づいて、自動的に削除します。
- ユーザーの権利: ユーザーがデータを参照、削除、またはエクスポートできるようにします。
- 権限管理: 要求された権限に応じて権限を要求し、拒否された要求の代替を提供します。
- OTA更新: セキュアなオーバー・ザ・エア更新を実現するために使用できるツールを提供します。 Capgo.
Ionicの使用方法 Capacitor セキュアなストレージ

データ収集の削減
プライバシー規制に準拠するために、データ収集を管理するには、データ収集を削減するためのCapacitorの組み込みツールを活用することが重要です。
データ収集のレビュー
__CAPGO_KEEP_0__のデータフローをマッピングし始めましょう。データの流れを視覚化するツールを使用して、不要なデータが収集される可能性のある箇所を特定します。データの流れを視覚化するツールを使用して、不要なデータが収集される可能性のある箇所を特定します。プライバシー影響評価 (PIA) ソフトウェアを使用して、各データが本当に必要かどうかを評価できます。
| データタイプ | レビュー対象 | 実行するタスク |
|---|---|---|
| ユーザー入力 | フォームフィールドとバリデーション | 不要なフィールドを削除する |
| APIの呼び出し | リクエスト/レスポンス ペイロード | 不必要のデータ フィールドをフィルタする |
| ストレージ | キャッシュされたデータと永続化データ | ストレージの使用を最適化する |
| 分析 | 使用状況の追跡 | 必要なメトリクスだけを保持する |
データ収集の目標
データ収集の理由を明確にする。各データ ポイントは、特定の目的を果たすようにする。
// Purpose-driven data collection example
const userPreferences = {
location: "Used for local weather updates",
notification: "Needed for sending alerts"
};
If your app has a weather feature, it might only require a zip code rather than a full address. This approach ensures you’re gathering only the information necessary for core app functions[1][5].
あなたのアプリが天気の機能を持っている場合、ZIPコードだけを取得する必要があるかもしれませんが、フル アドレスは必要ありません。このアプローチにより、コア アプリ機能のために必要な情報だけを収集することができます。
Use validation tools to limit the amount of data collected through forms and API calls. Combine client-side validation with server-side verification to enforce these limits effectively.
セキュリティ機能をCapacitorに組み込んで、これらの制御を強化します:
- 可能な限りドロップダウンメニューを使用するのではなく、フリーテキストフィールドを使用してください。
- テキスト入力フィールドの文字数制限を設定します。
自動検出ツールを使用して、データ収集の実行に必要な機能と一致するように、定期的なオーディットをスケジュールします。
データセキュリティとストレージ
データ収集の境界を定義した後、ユーザー情報を保護するための措置を実施し、データ最小化の原則に従うことが重要です。
セキュアなストレージの設定
プラグインは、iOS KeychainとAndroid Keystoreなどの組み込みセキュリティ機能を使用して、敏感なデータを保護します。 @capacitor/secure-storage データ暗号化方法 [1].
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などが利用できます。
The Adding client-side encryption is another layer of protection. 機密情報を暗号化することができます:
// Basic encryption/decryption implementation
const encryptData = (data: string, key: string): string => {
return CryptoJS.AES.encrypt(data, key).toString();
};
暗号化鍵を定期的に交換することは、セキュリティを向上させる賢い方法です。この方法により、1つの鍵が侵害された場合でも、残りのデータは安全に保たれます。 [2].
ストレージオプションの比較
データの機密度に応じて、適切なストレージソリューションを選択する必要があります。以下は、簡単な比較表です。
| 機能 | セキュアストレージ | ローカルストレージ |
|---|---|---|
| セキュリティレベル | 高 (暗号化) | ベーシック |
| 適切なもの | トークン、パスワード | 非機密設定 |
| パフォーマンス | 暗号化により速度が低下する | 高速アクセス |
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 データ保持期間はアプリの基本機能と一致する必要があります。これは、特に__CAPGO_KEEP_0__アプリの開発者にとって、特に重要な原則です。この原則は、データ保持戦略を導く上で役立ちます。 [3]. This principle is particularly relevant for Capacitor app developers and should guide your data retention strategy.
アプリのパーミッションを適切に管理することは、ユーザーのデータを保護する上で非常に重要です。アプリが機能するようにするために、パーミッションを適切に管理することで、実際に必要なデバイス機能へのアクセスを制限できます。
CapacitorのパーミッションAPIは、iOSとAndroid両方でパーミッションを統一的に管理するための統一されたアプローチを提供します。
パーミッションの要求手順
許可された権限の要求は、データ収集の目標と一致していることを確認してください。Capacitor アプリの許可要求のサンプル実装はこちらです。
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;
};
許可された権限の拒否
ユーザーが許可された権限の要求を拒否した場合、明確な代替案とガイダンスを提供してください。以下の例を参照してください。
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();
}
}
};
許可された権限の要求のタイミング
許可された権限の要求のタイミングは重要です。戦略的なタイミングにより、ユーザーの受け入れ率を大幅に改善できます。以下のタイミング戦略の概要をご覧ください。
| 許可された権限の要求のタイミング戦略 | 最適な使用シナリオ |
|---|---|
| 即時 | 特定の機能が必要なとき |
| コンテキスト | 非批判的な機能 |
| First Launch | 必要な基本機能のために |
| 遅延 | ユーザーの旅程の後半にオプション機能のために |
例えば、ユーザーが写真を撮るアクションを開始したときにのみカメラへのアクセスを要求できます。
const captureImage = async () => {
const userStartedCapture = true;
if (userStartedCapture) {
const granted = await permissionHandler('camera');
if (granted) {
await startCamera();
} else {
showUploadOption();
}
}
};
このような状況での要求は、事前要求の50%以上の認可率を向上させることができます。 [2]セッションをまたいでユーザーの決定を保存するパーミッション状態トラッカーを維持することで、Smoothなエクスペリエンスを確保します。
パーミッションが処理されたら、特にオーバー・ザ・エア(OTA)デプロイメントの場合に、セキュリティの更新に焦点を当てることができます。
OTAアップデートセキュリティ
データの不正性を防ぐために、 アプリのアップデート, 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.
アップデートパッケージ署名
アップデートパッケージの署名は、未承認のcode変更に抗うために不可欠なステップです。ここでは、OTA更新をセキュアにするための重要な対策を紹介します。
| セキュリティ対策 | 実施方法 |
|---|---|
| コンテンツ保護 | AES暗号化 |
| 配信セキュリティ | HTTPSと証明書ピンニング |
| アップデートの整合性 | ハッシュ検証 |
| バージョン安全 | 署名バージョン番号 |
| エラー回復 | 即時ロールバック機能 |
Capgo アップデートシステム

Capgoは、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 | __CAPGO_KEEP_0__ |
| Android | __CAPGO_KEEP_0__ |
| Both | __CAPGO_KEEP_0__ |
以下は、ストアに準拠した更新を実装する例です。
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');
}
};
概要
重要なポイント
ユーザーデータを効果的に管理するには、次の基本戦略を組み合わせる必要があります。
- 必要なデータのみを収集する。
- プラットフォーム固有の暗号化を使用して保護する。
- データ保持期限を自動化する。
- 詳細な許可制御を設定する
__CAPGO_KEEP_0__を利用してデータの流れを検証する
実施方法
__CAPGO_KEEP_0__を活用して、データ収集から自動削除までの全プロセスをセキュアに実施する
- データフローの検証
- セキュアなデータストレージを確保する
- 自動削除プロセスを設定する
- 許可制御の設定と実施
Capgo
Capgoは、OTA更新を管理するチーム向けに、セキュアなツールを提供しています。
- データをセキュアに保護する 更新パッケージをセキュアに保護する
- リアルタイム監視 潜在的なセキュリティ脅威に対処するために迅速に取り組む
How to Handle User Data in Capacitor Appsから続けて
Capgoを使用している場合 How to Handle User Data in Capacitor Apps セキュリティとコンプライアンスの計画に使用するには Encryption Encryptionの実装詳細 Compliance Complianceの実装詳細 Capgo Security Scanner Capgo Security Scannerの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフローに Capgo トラスト センター Capgo トラスト センターの製品ワークフローに