English

SINETStream ユーザガイド

Android版の設定クライアント

目次

1. 概要
2. システム構成
3. 利用方法
  3.1 コンフィグサーバ側の準備
  3.2 Android端末側の操作(事前準備)
    3.2.1 コンフィグサーバからアクセストークンの取得
    3.2.2 手元の鍵対の生成
    3.2.3 公開鍵をコンフィグサーバに登録
  3.3 Android端末側の操作(設定情報のダウンロード)
  3.4 Android端末側の操作(ブローカとの通信)
4. まとめ

1. 概要

従来、Android版のSINETStream設定に関しては、 YAML形式の設定ファイルを規定の場所に配置する方式としていた。

しかし、この「Android端末で個別に設定ファイルを管理する」方式だと、 以下に示すような運用上の課題がある。

[1] 別紙チュートリアルで 紹介しているサンプルアプリケーションは対応策2を採用している。

そこで、SINETStream設定情報秘匿情報などを一元的に管理する設定サーバ(以降、コンフィグサーバと記述)を導入する。 システム管理者がコンフィグサーバ側で諸々の管理を実施する一方、個々のAndroid端末側はコンフィグサーバに接続するための接続情報だけを手元で管理する。 この「クライアント/サーバ」協調動作により、システム管理や運用上の負担を減らせるとともに、作業の効率化を図ることができる。

本書では、コンフィグサーバを利用するAndroid端末の設定クライアント動作について概説する。

2. システム構成

本書で扱う3つの機能要素(Android端末、ブローカ、コンフィグサーバ)を以下に示す。

   Broker      Android Device                                 Config Server
  +-----+     +-----------------------------------------+     +-----------+
  |     |     | #--------------------+  #-------------+ |     | #-------+ |
  | ... | <=> | | User Application   |  | Web Browser | | <=> | |Server | |
  |     |     | +--------------------+  +-------------+ |     | |App    | |
  +-----+     +=========================================+     | +-------+ |
              |                                         |     |       |   |
              | +-------------+ +----------+ +--------+ |     |      [DB] |
              | | SINETStream | | pub/priv | | access | |     |           |
              | | Library     | | keypair  | | token  | |     +-----------+
              | +-------------+ +----------+ +--------+ |
              | | MQTT        |                         |
              | | Library     |                         |
              | +-------------+          Android System |
              +-----------------------------------------+

〈判例〉

3. 利用方法

3.1 コンフィグサーバ側の準備

本章では、システム管理者がコンフィグサーバ側で実施すべき事項について述べる。

                                        Management PC         Config Server
                                      +-----------------+     +-----------+
                                      | #-------------+ |     | #-------+ |
                                      | | Web Browser |-------->|Server | |
                                      | +-------------+ |     | |App    | |
                                      +-----------------+     | +-------+ |
                                                              |       |   |
                                                              |      [DB] |
                                                              |           |
                                                              +-----------+

まずは管理端末上の適当なウェブブラウザでコンフィグサーバのURLに接続し、 指定のユーザアカウントでログインする。

当該ユーザアカウントに対して、以下の各項目を準備する。

3.2 Android端末側の操作(事前準備)

3.2.1 コンフィグサーバからアクセストークンの取得

Android端末からコンフィグサーバに接続するためには、前述のアクセストークン(実体はJSONファイルauth.json)に記載された有効なアクセスキーが必要である。

               Android Device                                 Config Server
              +-----------------------------------------+     +-----------+
              |                         #-------------+ |     | #-------+ |
              |                         | Web Browser |<--------|Server | |
              |                         +-------------+ |     | |App    | |
              +==================================|======+     | +-------+ |
              |                                  V      |     |       |   |
              |                              +--------+ |     |      [DB] |
              |                              | access | |     |           |
              |                              | token  | |     +-----------+
              |                              +--------+ |
              |                                         |
              |                          Android System |
              +-----------------------------------------+

このため、作業対象のAndroid端末に何らかの方法で上記アクセストークンのファイルを配置する。

Android版のSINETStreamライブラリコンフィグサーバから設定情報を取得するよう指定して初期化すると、上記アクセストークンファイルを選択するよう利用者に促すダイアログが表示される。 ここで指定されたアクセストークンの記載内容を基に、コンフィグサーバへの接続処理が走ることになる。

3.2.2 手元の鍵対の生成

コンフィグサーバから取得を想定しているSINETStream設定情報で何らかの秘匿情報(ブローカとのSSL/TLS接続のための証明書など)を扱う場合に必要な手順である。

ブローカとの通信路をSSL/TLSで暗号化しないなど、秘匿情報を扱わない場合は本章の記述は飛ばして構わない。

               Android Device
              +-----------------------------------------+
              | #--------------------+                  |
              | | User Application   |                  |
              | +--------------------+                  |
              +=====|===================================+
              |     |            ...................... |
              |     |            : Android Keystore   : |
              |     V            :                    : |
              | +-------------+  :  +----------+      : |
              | | SINETStream |---->| pub/priv |      : |
              | | Library     |  :  | keypair  |      : |
              | +-------------+  :  +----------+      : |
              |                  :....................: |
              |                          Android System |
              +-----------------------------------------+

Android版のSINETStreamライブラリが用意するAPI関数により、 Androidシステムの秘匿領域(Android Keystore)内部に鍵対を作成する。 この鍵対は、エイリアス(利用者指定の任意文字列)で識別する。

注意

上記Android Keystoreで管理される鍵対はアプリケーションごとに固有の領域が割り当てられる。すなわち他のアプリケーションと鍵対が干渉することはない。 同アプリケーションの削除と同時にAndroid Keystore内部も削除される。

3.2.3 公開鍵をコンフィグサーバに登録

本章の記述内容はAndroid端末とコンフィグサーバが協調動作する部分である。

前述の鍵対のうち公開鍵はコンフィグサーバに登録する必要がある。 ウェブインタフェースの操作により手動で登録する手段は用意されているが、 ここではAndroid版のSINETStreamライブラリが用意するAPI関数によりネットワーク経由でコンフィグサーバに公開鍵を登録する手法を紹介する。

               Android Device                                 Config Server
              +-----------------------------------------+     +-----------+
              | #--------------------+                  |     | #-------+ |
              | | User Application   |                  |     | |Server | |
              | +--------------------+                  |     | |App    | |
              +=====|===================================+     | +-------+ |
              |     |            ...................... |     |   A   |   |
              |     |   [token]  : Android Keystore   : |     |   | [DB]  |
              |     V     |      :                    : |     +---|-------+
              | +-------------+  :  +----------+      : |         |
              | | SINETStream |<----| pub/priv |      : |         |
              | | Library     |  :  | keypair  |      : |         |
              | +-------------+  :  +----------+      : |         |
              |        |         :....................: |         |
              |        |                 Android System |         |
              +--------|--------------------------------+         |
                       |                                          |
                       +---------------( NETWORK )----------------+

ユーザ指定のエイリアスを基にAndroid Keystoreに格納した鍵対を抽出し、 その公開鍵を得る。 これとアクセストークンを引数として Android版のSINETStreamライブラリ暗号鍵登録用のAPI関数に処理を依頼する。 同ライブラリは、REST-API経由でコンフィグサーバに公開鍵を登録する。

3.3 Android端末側の操作(設定情報のダウンロード)

本章の記述内容はAndroid端末とコンフィグサーバが協調動作する部分である。

               Android Device                                 Config Server
              +-----------------------------------------+     +-----------+
              | #--------------------+                  |     | #-------+ |
              | | User Application   |                  |     | |Server | |
              | +--------------------+                  |     | |App    | |
              +=====|===================================+     | +-------+ |
              |     |            ...................... |     |   |   |   |
              |     |   [token]  : Memory             : |     |   | [DB]  |
              |     V     |      :                    : |     +---|-------+
              | +-------------+  :  +------+ +------+ : |         |
              | | SINETStream |---> |config| |secert| : |         |
              | | Library     |  :  |data  | |data  | : |         |
              | +-------------+  :  +------+ +------+ : |         |
              |        A         :....................: |         |
              |        |                 Android System |         |
              +--------|--------------------------------+         |
                       |                                          |
                       +---------------( NETWORK )----------------+

アクセストークンを引数として Android版のSINETStreamライブラリの初期化用の API関数に処理を依頼する。 同ライブラリは、REST-API経由でコンフィグサーバからSINETStream設定情報 (SSL/TLS証明書のような秘密情報があればそれも)をダウンロードする。 ここで取得した内容はファイルに書き出すことなく、メモリ上で扱う。

設定項目に選択肢がある場合、利用者に指示を仰ぐためダイアログが表示される。

3.4 Android端末側の操作(ブローカとの通信)

コンフィグサーバから取得したSINETStream設定情報を基に対向ブローカと接続し、MQTT通信を行う。

   Broker      Android Device
  +-----+     +-----------------------------------------+
  |     |     | #--------------------+                  |
  | ... |     | | User Application   |                  |
  |     |     | +--------------------+                  |
  +-----+     +=====|=====A=============================+
     A        |     |     |      ...................... |
     |        |     |     |      : Memory             : |
     |        |     V     |      :                    : |
     |        | +-------------+  :  +------+ +------+ : |
     |        | | SINETStream |<----|config| |secert| : |
     |        | | Library     |  :  |data  | |data  | : |
     |        | +-------------+  :  +------+ +------+ : |
     |        | | MQTT        |  :....................: |
     |        | | Library     |                         |
     |        | +-------------+                         |
     |        |        |                 Android System |
     |        +--------|--------------------------------+
     |                 |
     +---( NETWORK )---+

4. まとめ

Android版のSINETStreamライブラリが用意する 設定クライアント機能により、SINETStream設定情報などをダウンロードしてブローカに接続するまでの一連の操作内容を概説した。