# セキュア ストレージ

セキュア ストレージ プラグインは、ストレージ内のデータの暗号化を行うプラグインです。このプラグインを組み込んだアプリをアンインストールするときには、保存されたデータも、共に消去されます。

{% hint style="info" %}
このプラグインを使用するためには、対応するプランへの加入が必要となります。詳細は、 [料金プラン ](https://ja.monaca.io/pricing.html)をご確認ください。
{% endhint %}

{% hint style="info" %}
このプラグインは、カスタムビルドデバッガーでは利用できません。\
&#x20;動作検証を行う場合は、デバッグビルドを行い、実機で確認する必要があります。
{% endhint %}

## サポート対象のプラットフォーム

* Cordova 7.1 以降
* iOS 9 以降
* Android 4.1 以降

{% hint style="info" %}
iOS 13 以降をサポート対象にする場合は、バージョン 2.2.0 以降を使用する必要があります。
{% endhint %}

## 暗号化方式

* 暗号化方式 AES  &#x20;
* 鍵長 `256` bit

## プラグインの追加方法

1. Monaca クラウド IDE か&#x3089;**`設定 → Cordova プラグインの管理`** を選択します。
2. `SecureStorage` の`有効`ボタンをクリックして、プロジェクトへ追加します。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-Mgify3qUM-Qe0TaXsgm%2F-MgigrEp4MnNqUkHSWKC%2Fimage.png?alt=media\&token=eb728d80-086a-4195-a6a2-03350cee5242)

## メソッド

| メソッド　　　　　　　　　　     | 解説                                                                                                                                                                                                                                                                                                                                                                |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| データの保存用メソッド        | <p><code>key</code> と <code>value</code> を使用して、ストレージにデータを保存します。コールバック ( 戻り値 : boolean ) を使用して、保存が完了したか ( <code>True</code> )、失敗したか ( <code>false</code> ) を確認します。 (<code>false</code>).</p><p></p><p><code>plugins.secureStorage.setItem(key, value, function(result) {</code></p><p><code>// result: true=success, false=error</code></p><p><code>});</code></p> |
| データの取得用メソッド        | <p>指定された key を使用して、データを取得します。key と一致したデータがあれば、コールバックを使用して、そのデータを返します。一致するデータがなければ場合、null を返します。</p><p></p><p><code>plugins.secureStorage.getItem(key, function(value) {</code></p><p><code>// value: null = no such a value</code></p><p><code>});</code></p>                                                                                                     |
| データの削除用メソッド ( 1件 ) | <p>指定された key を使用して、データを削除します。コールバック ( 戻り値 : boolean ) を使用して、データの削除が成功したか ( <code>True</code> )、失敗したか ( <code>false</code> ) を確認します。</p><p></p><p><code>plugins.secureStorage.removeItem(key, function(result) {</code></p><p><code>// result: true=success, false=error</code></p><p><code>});</code></p>                                                         |
| データの削除用メソッド ( 全件 ) | <p>ストレージ内のすべてのデータを削除します。コールバック ( 戻り値 : boolean ) を使用して、データの削除が成功したか ( <code>True</code> )、失敗したか ( <code>false</code> ) を確認します。</p><p></p><p><code>plugins.secureStorage.clear(function(result) {</code></p><p><code>// result: true=success, false=error</code></p><p><code>});</code></p>                                                                        |

## App Store への提出に際して

このプラグインでは、iOS SDK の暗号化ライブラリが採用されているため、アプリを App Store に提出し審査を受ける際、特別な設定が求められます。輸出コンプライアンス情報 において、次のとおり回答してください。

<figure><img src="https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MfWrOnV1iKerkfShm9O%2Fuploads%2FmBms7u7m5MDhbqOp7bFH%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-05-02%2022.50.10.png?alt=media&#x26;token=74f6e9be-5b36-4c4d-8ad7-ea3b238aaad7" alt=""><figcaption></figcaption></figure>

## データ保存方式の変更

{% hint style="info" %}
バージョン 2.0.0 より利用できる機能です。
{% endhint %}

暗号化データの保存方式を変更します。この変更でセキュリティを強化することができます。

セキュアストレージプラグインで保存されたデータは、保存が行われた端末でのみ読み込めるようになります。 アプリがバックアップされるなどして、別端末上で起動された場合、 本プラグインで保存されたデータは、保存された端末と異なるため読むことができなくなります。

{% hint style="danger" %}
保存方式を変更した場合、元に戻すことができませんのでご注意ください。\
&#x20;「Static」モードで保存したデータは、「Individual」モードでデータを取得できません。また、「Individual」モードで保存したデータは、「Static」モードでデータを取得できません。&#x20;
{% endhint %}

### 設定方法

config.xml に次の内容を追加することで、`individual` モードとしてセキュリティが強化されます。

```markup
<preference name="SecureStorageMode" value="individual" />
```

### プラグインバージョン 1 系からのデータ移行について

バージョン 1 系で保存されたデータは、指定されたモードに自動でデータ移行されます。\
例として、バージョン 1 系で保存されたデータを、バージョン 2 系（Static モード）で処理した場合、バージョン 1 系で扱っていたデータは、Static モードで移行されます。

なお、バージョン 2 系を利用している途中で、`Static` から `Individual` へ変更するとデータは取得できませんので、ご注意ください。

## プライバシーマニフェスト

このプラグインで必要となるプライバシーマニフェストは以下のようになります。(cordova-ios 7.1.0以上)

```
<platform name="ios">
　　<privacy-manifest>
　　　　<key>NSPrivacyTracking</key>
　　　　<false/>
　　　　<key>NSPrivacyTrackingDomains</key>
　　　　<array/>
　　　　<key>NSPrivacyAccessedAPITypes</key>
　　　　<array>
　　　　<dict>
　　　　　　<key>NSPrivacyAccessedAPIType</key>
　　　　　　<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
　　　　　　<key>NSPrivacyAccessedAPITypeReasons</key>
　　　　　　<array>
　　　　　　<string>CA92.1</string>
　　　　　　</array>
　　　　</dict>
　　　　</array>
　　　　<key>NSPrivacyCollectedDataTypes</key>
　　　　<array/>
　　</privacy-manifest>
</platform>
```

マニフェストの記述方法について詳しくは [https://ja.docs.monaca.io/release\_notes/ios-privacy-manifest#puraibashmanifesutono](https://ja.docs.monaca.io/release_notes/ios-privacy-manifest) を参照して下さい。
