2019年9月20日 星期五

開源行動裝置管理系統:WSO2 IoT



在行動裝置成為人類必需的隨身裝備之一,企業無可避免的直接面對這股浪潮,然而在智慧型行動裝置進入企業環境之後,各種資料安全與機密防護問題該如何解決呢?昨天提到了 NAC 網路存取控制,那麼今天接著討論於行動裝置管理上的各種需求。

不論是公務裝置或是私人裝置,勢必要採用相對應的解決方案,才能讓企業管理者有所掌握。







方案介紹

在過去所認知的印象裡,大都是商業等級產品方能做到行動裝置管理 (MDM,Mobile Device Management),而且都有一定的費用門檻。

其實,在開源的世界裡也有不錯的方案可以做為參考,它的名字是 WSO2 IoT。

WSO2 IoT 的前身是 WSO2 EMM,WSO2 IoT 加入了更多 IoT 物聯網裝置的管理能力,我稍加整理它的主要功能:
  • 全 Web 化的管理介面
  • 提供裝置資產管理功能
  • 提供 App 管理與派送功能
  • 為裝置上的資料進行加密
  • 由管理中心將裝置鎖定
  • 依據策略決定裝置的網路設定
  • 遠端進行裝置資料抹除
  • 行動裝置位置追蹤
  • 裝置內建硬體管理控制
  • 回收裝置相關資訊
  • 提供完整 API 相關功能


系統架構圖 (圖片取自官方文件)








安裝方式

WSO2 IoT 伺服器是以 Java 開發,安裝好 JDK 與相關環境參數,依據官方文件所述,將專案檔下載後解壓縮即可準備使用,我是以 Ubuntu 18.04 為伺服器。

apt update
apt install openjdk-8-jdk unzip

安裝完 openjdk-8-jdk,它的路徑應該會在 /usr/lib/jvm/java-8-openjdk-amd64/


下載與解開 WSO2 IoT Server
cd /opt
wget https://github.com/wso2/product-iots/releases/download/v3.1.0-update1/wso2iot-3.1.0-update1.zip
apt install unzip
unzip wso2iot-3.1.0-update1.zip
mv wso2iot-3.1.0-update1 wso2

修改 Server 連線資訊
# 第一道問題輸入 localhost
# 第二道問題請輸入此伺服器的 fqdn,絕對不要用 ip.. 這搞了我好久
/opt/wso2/script/change-ip.sh

接著,我們要把 WSO2 IoT 安裝為 Linux Service,請依據實際 JDK 路徑進行調整。

安裝 Service (存為 /opt/wso2/wso2server)
#! /bin/sh
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"
export PATH=${JAVA_HOME}/bin:${PATH}

startcmd='/opt/wso2/bin/iot-server.sh start > /dev/null &'
restartcmd='/opt/wso2/bin/iot-server.sh restart > /dev/null &'
stopcmd='/opt/wso2/bin/iot-server.sh stop > /dev/null &'

case "$1" in
start)
   echo "Starting the WSO2 Server ..."
   ${startcmd}
;;
restart)
   echo "Re-starting the WSO2 Server ..."
   ${restartcmd}
;;
stop)
   echo "Stopping the WSO2 Server ..."
   ${stopcmd}
;;
*)
   echo "Usage: $0 {start|stop|restart}"
exit 1
esac

將這個檔案存成 /opt/wso2/wso2server (請依實際位置調整) 後,連結到 /etc/init.d 中,最後再將此指令碼註冊至啟動位置。

chmod a+x /opt/wso2/wso2server
ln -snf /opt/wso2/wso2server /etc/init.d/wso2server
update-rc.d wso2server defaults

確認沒有問題以後,就可以啟動服務啦。

service wso2server start

如有正確啟動,WSO2 Iot 會監聽以下這些連接埠並提供連線:

HTTP
  • 管理主控台:http://:9763/carbon
  • 裝置管理主控台:http://:9763/devicemgt
  • 裝置監視資訊看版:http://:9763/portal


HTTPS
  • 管理主控台:https://:9443/carbon
  • 裝置管理主控台:https://:9443/devicemgt
  • 裝置監視資訊看版:https://:9443/portal




管理主控台



裝置管理主控台


這兩個主控台安裝完成後的預設帳密都是 admin








主要功能

要將行動裝置納入管理並不困難,我們以 Android 裝置做為範例。在裝置主控台 [DEVICES] 區塊按下 [Add] 按鈕。


提供 Android 掃描用 QR Code


首先掃描伺服器端產生的 QR Code 二維條碼,即可進入下載 Agent 代理程式的畫面。


Android 掃描 QR Code 後安裝代理程式


經過一步一步的點選安裝完成後,啟動此 App 並輸入帳號密碼,我手上這支 ASUS Zenfone 3 就可以被管理中心所控管。


Android 安裝時啟用裝置管理員權限


在這個畫面上,我們可以很容易的掌握這部裝置的所有資訊,從最基本的電池容量、CPU 使用率、記憶體使用率、儲存使用率等,以及裝置目前的狀態是否符合政策規範。


受管理的 Android 行動裝置


在畫面上也提供許多功能操作項目,可以從管理中心遠端對該裝置進行響鈴、裝置鎖定、取得位置、清除密碼、傳送訊息、升級韌體、靜音、重新啟動、資料抹除、程式移除或派送等等。



受管理的 iOS 行動裝置 (圖片取自官方教學文件)


同樣的,iOS 也可以被 WSO2 IoT 所集中管理,不過依據作業系統所開放的程度不同,iOS 可以遠端操作的管理功能也少了一些,不過在資料安全上所需要的抹除等機制仍然俱備。

提醒,要啟用 iOS 支援之前,需要先寄信至官方窗口取得 ios-feature-deployer 包,接著還要搞定 CSR 憑證、Apple Developer ID、MDM APNS 等複雜的東西,詳情可看文末參考資料的「Enrolling With the iOS Agent」連結。


軟體中心


軟體中心的功能相當實用,企業可以建立屬於自己的 App 軟體中心,將自行開發的 App 上架讓使用者自行選擇安裝,可以減輕 IT 人員部署的工作負擔與難度。

以 Android 要建立 App 上架為例,連接到伺服器的發佈頁面 https://:9443/publisher 並登入帳號密碼,點選 [Add New Mobile Application] -> [Mobile Application],[Platform] 選擇 Android,[Store Type] 選擇 Enterprise,最後再上傳一支 APK 應用程式檔案再填入相關資訊即可完成。



建立 Android APK 軟體 (圖片取自官方教學文件)








結論

在員工自行攜入行動裝置的風潮無法改變下,企業必需因應 BYOD (Bring Your Own Device) 所帶來的新挑戰,以及企業內部因為使用需求而產生的各種行動裝置。

WSO2 IoT 是一款值得企業嘗試的開源套件,更有趣的是,它除了可以控管 Android、iOS 等大家熟知的行動裝置以外,更開始支援 IoT 相關裝置,例如 Raspberry Pi、Arduino 等等,協助企業 IT 提升管理能力,降低工作負擔。


管理 Raspberry Pi 裝置 (圖片取自官方教學文件)



管理 Arduino 裝置 (圖片取自官方教學文件)


後記:照著官方文件安裝,絕對執行不起來的 (暈)








參考資料