# セキュア ストレージ

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

{% 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` の`有効`ボタンをクリックして、プロジェクトへ追加します。

![](/files/-MgigrEp4MnNqUkHSWKC)

## メソッド

| メソッド　　　　　　　　　　     | 解説                                                                                                                                                                                                                                                                                                                                                                |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| データの保存用メソッド        | <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="/files/HkN3fnVwAPXYADRj7aUi" 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](/release_notes/ios-privacy-manifest.md) を参照して下さい。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ja.docs.monaca.io/reference/power_plugins/secure_storage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
