SlideShare uma empresa Scribd logo
1 de 14
FIWARE IoTデバイスを保護する方法
(How to Secure FIWARE IoT Devices)
Jason Fox, Senior Technical Evangelist
FIWARE Foundation
Translated to Japanese by Kazuhito Suda, FIWARE Evangelist
学習目標
▪ システムのセキュリティ保護に役立つ一般的なアクションは何で
すか?
• HTTP トラフィックを保護するにはどのようなオプションが
必要ですか?
• MQTT トラフィックを保護するにはどのようなオプションが
必要ですか?
• 他のプロトコルにはどのようなオプションがありますか?
▪ PEP Proxy とは何ですか?サービスとデバイスを保護するため
にどのように使用できますか?
1
前提条件
▪ Docker
▪ Docker Compose
▪ Git
▪ Postman
▪ Cygwin for Windows
2
git clone https://github.com/FIWARE/tutorials.Step-
by-Step.git
cd tutorials.Step-by-Step/
git submodule update --init --recursive
▪ https://www.docker.com/
▪ https://docs.docker.com/compose/install/
▪ https://git-scm.com/downloads
▪ https://www.getpostman.com/downloads/
▪ https://www.cygwin.com/install.html
FIWARE Catalogue
33
Data/APIManagement
PublicationMonetization
Core Context Management
(Context Broker)
Context
Processing, Analysis, Visualization
Interface to
IoT, Robotics and third party systems
Deploymenttools
3
Development of
Context-aware applications
(Orion, Orion-LD, Scorpio,
STH-Comet, Cygnus,
QuantumLeap, Draco)
Connection to the
Internet of Things
(IDAS, OpenMTC)
Real-time
processing of
context events
(Perseo)
Handling authorization
and access control to
APIs
(Keyrock, Wilma,
AuthZForce, APInf )
Publication and
Monetization of Context
Information
(CKAN extensions, Data/API
Biz Framework, IDRA)
Creation of
Application Dashboards
(Wirecloud)
Real-time
Processing of media
streams
(Kurento)
Business Intelligence
(Knowage)
Connection to robots
(FIROS, Fast RTPS,Micro XRCE-DDS)
Big Data
Context Analysis
(Cosmos)
Cloud Edge
(FogFlow)
Documents exchange
(Domibus)
復習 – HTTP マイクロサービスの保護
4
PEP Proxy を使用した安全なサービス
● 承認された HTTP トラフィックのみを許可
するには、クライアント・アプリケーション
(スーパーマーケット・アプリなど) と
Context Broker の間にセキュリティ・
コンポーネントを挿入する必要があります
● ユーザ・アカウントを提供し、パスワードを
確認するには、Identity Manager が必要で
す
安全でない HTTP トラフィックをブロックするよ
うに Web server を設定します
● 301 - Moved Permanently に転送命令を含
めます
● 詳細情報 : https://www.digicert.com/ssl/
HTTPS の構成例 : NGINX
▪ ドメイン証明書を作成する必要があります
• 信頼の連鎖 - あなたは(一連の)プロバイダによっ
て承認されています
▪ 秘密鍵を提供する必要があります
▪ 多くのチュートリアル - 詳細は使用する
Webサーバに依存します
• 例 Digital Ocean: Let‘s Encryptで Nginx を
保護する方法
• https://www.digitalocean.com/community
/tutorial_collections/22
5
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
PEP Proxy 構成の例 : Wilma
▪ どこでリッスンしていますか?
• PEP_PROXY_PORT
▪ 何を保護していますか? どこに転送しますか?
• PEP_PROXY_APP_HOST, PEP_PROXY_APP_PORT
▪ 誰がアクセス・トークンをチェックする責任がありますか?
• PEP_PROXY_IDM_PORT, PEP_PROXY_IDM_HOST
▪ IDM はどのように私を認識しますか?
• PEP_PROXY_APP_ID, PEP_PROXY_USERNAME,PEP_PASSWORD
詳細情報 : https://hub.docker.com/r/fiware/pep-proxy
6
HTTP トラフィックの保護: IoT デバイス
7
● デバイスは HTTP を使用して通信するため、クライア
ント・アプリケーション(デバイスなど)と IoT Agent の
間に PEP proxy を含めることができます
● ユーザ・アカウントを提供し、パスワードを確認するに
は、 Identity Manager が必要です
● PEP Proxy は、次の設定を使用して定義されます:
○ PEP_PROXY_APP_HOST
○ PEP_PROXY_APP_PORT
○ PEP_PROXY_PORT
● もちろん以前に示したように、HTTPS を使用して
マイクロサービス間の通信を保護することもできます
マイクロサービスのユースケースと同様の設定ですが、
現在、各 IoT device はそれ自体が(制限された)ユーザです
● DUMMY_DEVICES_USER, DUMMY_DEVICES_PASSWORD
HTTPトラフィックの保護: IoT Agent
8
IoT Agent が (制限された) ユーザになりました - Context broker と
IoT Agent の間のトラフィックが保護されます
● 永続的なトークンを保持する追加の信頼属性 (trust attribute) を使用してデバイスを
プロビジョニングします
● HTTPS も必要になる場合があります。これは、使用するアーキテクチャと、 IoT devices が IoT Agent
と通信するプロトコルによって異なります
curl -iX POST 
'http://localhost:4041/iot/services' 
-H 'Content-Type: application/json' 
-H 'fiware-service: openiot' 
-H 'fiware-servicepath: /' 
-d '{
"services": [ {
"apikey": "4jggokgpepnvsb2uv4s40d59ov",
"cbroker": "http://orion:1026",
"entity_type": "Motion",
"resource": "/iot/d",
"trust": "e37aeef5d48c9c1a3d4adf72626a8745918d4355"
} ]
}'
MQTTトラフィックの保護: IoT デバイス
9
MQTT 接続でユーザ名とパスワードを入力します
MQTTブローカーのユーザ名/パスワードのハッシュ・ファイルを
作成します 例: /etc/mosquitto/passwd
例. Hackaday の例: https://hackaday.io/project/12482-
garage-door-opener/log/43367-using-a-username-and-
password-for-mqtt
● IOTA_MQTT_USERNAME,IOTA_MQTT_PASSWORD
MQTT over SSL を使用します
証明書を作成し、MQTT ブローカーを適切に設定する必要があります
例. ThingsBoard ドキュメント: https://thingsboard.io/docs/user-guide/mqtt-over-ssl/
● IOTA_MQTT_CA, IOTA_MQTT_CERT, IOTA_MQTT_KEY
安全な MQTT を使用して IoT デバイスを接続する方法
10
const mqtt = require('mqtt');
const options = {
protocol: 'mqtt',
host: 'localhost',
port: 1883,
key: <key>,
ca: <certificate-authority>,
cert: <certificate>,
rejectUnauthorized: true,
username: <device-username>,
password: <device-password>,
keepalive: 0,
connectTimeout: 60 * 60 * 1000
};
const mqttClient = mqtt.connect(
options.protocol + '://' + <host> + ':' + <port>,
options
);
IoT Agent と IoT デバイスの両方が同じ方法で
MQTT ブローカーに接続します
豊富な MQTT クライアントライブラリが利用可能
● https://github.com/mqtt/mqtt.github.io/wiki/libraries
IoT Agent は共通の Node.js ライブラリを使用します
● https://github.com/mqttjs/MQTT.js
詳細については :
● http://mqtt.org/
サマリ: FIWARE ベースのシステムの保護
▪ 製品とデータの整合性を確保するための安全なシステムが必要です:
• 信頼できる読み取りだけを受け入れます
• 認識できるユーザにのみデータを提供します
▪ システムを保護するための最初のステップ:
• アクターを特定するために可能な限りユーザ名とパスワードを使用します
• SSLを使用します - メッセージと構成でプレーン・テキストを使用してはいけません
• ユーザ・アクセスを最小限に抑えます (例: root アクセス、開いているポートなし)
• すべてをログに記録します
▪ データのゲートキーパーとして機能する PEP Proxy を使用します
▪ FIWARE はシステムの保護に役立つ一連のコンポーネントを提供します
• FIWARE カタログのコンポーネントの使用は必須ではありませんが、それらを使用するか、
同等に安全な代替手段を使用する必要があります
11
最終的な考え
▪ 製品の評判の基礎は信頼です。
システムが安全でない場合、ユーザはどのようにあなたを信頼
できますか?
▪ このセキュリティ・プレゼンテーションは簡単な紹介であり、
常にセキュリティをより詳細に検討する機会があります
12
Thank you!
http://fiware.org
Follow @FIWARE on Twitter
13

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてKeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについて
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢
 
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料) ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
 
クラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Age
クラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Ageクラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Age
クラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Age
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
IoT Agents とは? - FIWARE WednesdayWebinars
IoT Agents とは? - FIWARE WednesdayWebinarsIoT Agents とは? - FIWARE WednesdayWebinars
IoT Agents とは? - FIWARE WednesdayWebinars
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
FIWARE勉強会 20190913
FIWARE勉強会 20190913FIWARE勉強会 20190913
FIWARE勉強会 20190913
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
FIWARE implementation of IDS concepts
FIWARE implementation of IDS conceptsFIWARE implementation of IDS concepts
FIWARE implementation of IDS concepts
 
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushiGoogle Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushi
 

Semelhante a FIWARE IoTデバイスを保護する方法

20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説
Yukihiro Kikuchi
 

Semelhante a FIWARE IoTデバイスを保護する方法 (20)

MVPComCamp2015:Hyper-V仮想スイッチのTipsとTo Be(仮)
MVPComCamp2015:Hyper-V仮想スイッチのTipsとTo Be(仮)MVPComCamp2015:Hyper-V仮想スイッチのTipsとTo Be(仮)
MVPComCamp2015:Hyper-V仮想スイッチのTipsとTo Be(仮)
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
 
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
 
loggregator update
loggregator updateloggregator update
loggregator update
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Cld014 セキュアな io_t_システ
Cld014 セキュアな io_t_システCld014 セキュアな io_t_システ
Cld014 セキュアな io_t_システ
 
Cld014 セキュアな io_t_システ
Cld014 セキュアな io_t_システCld014 セキュアな io_t_システ
Cld014 セキュアな io_t_システ
 
ゼロから学ぶIoT
ゼロから学ぶIoTゼロから学ぶIoT
ゼロから学ぶIoT
 
Tokyo Jazug Night 2020-01 Azure Monitor を使った運用監視コトハジメ
Tokyo Jazug Night 2020-01 Azure Monitor を使った運用監視コトハジメTokyo Jazug Night 2020-01 Azure Monitor を使った運用監視コトハジメ
Tokyo Jazug Night 2020-01 Azure Monitor を使った運用監視コトハジメ
 
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
 
サンドボックス化によるセキュアなプログラミング
サンドボックス化によるセキュアなプログラミングサンドボックス化によるセキュアなプログラミング
サンドボックス化によるセキュアなプログラミング
 
20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説
 
IoT Agents をデバッグする方法 - FIWARE WednesdayWebinars
IoT Agents をデバッグする方法 - FIWARE WednesdayWebinarsIoT Agents をデバッグする方法 - FIWARE WednesdayWebinars
IoT Agents をデバッグする方法 - FIWARE WednesdayWebinars
 
Otrs&OTOBO_document 20210402
Otrs&OTOBO_document 20210402Otrs&OTOBO_document 20210402
Otrs&OTOBO_document 20210402
 
【HinemosWorld2015】B1-2_【入門】Hinemosではじめるシステム監視
【HinemosWorld2015】B1-2_【入門】Hinemosではじめるシステム監視【HinemosWorld2015】B1-2_【入門】Hinemosではじめるシステム監視
【HinemosWorld2015】B1-2_【入門】Hinemosではじめるシステム監視
 
Video mqtt
Video mqttVideo mqtt
Video mqtt
 
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
 
ロボット管理プラットフォーム「 RoboticBase 」の紹介
ロボット管理プラットフォーム「 RoboticBase 」の紹介ロボット管理プラットフォーム「 RoboticBase 」の紹介
ロボット管理プラットフォーム「 RoboticBase 」の紹介
 
コンテキストデータの永続化のための戦略
コンテキストデータの永続化のための戦略コンテキストデータの永続化のための戦略
コンテキストデータの永続化のための戦略
 
ラズパイ × Bluemix IoTハンズオンセミナー
ラズパイ × Bluemix IoTハンズオンセミナーラズパイ × Bluemix IoTハンズオンセミナー
ラズパイ × Bluemix IoTハンズオンセミナー
 

Mais de fisuda

Mais de fisuda (20)

FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.12.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.12.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.12.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.12.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.11.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.11.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.11.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.11.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.10.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.10.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.10.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.10.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.9.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.9.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.9.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.9.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)
 
FIWARE - スマートサービスを支えるオープンソース
FIWARE - スマートサービスを支えるオープンソースFIWARE - スマートサービスを支えるオープンソース
FIWARE - スマートサービスを支えるオープンソース
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.7.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.7.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.7.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.7.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.7.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.7.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.7.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.7.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.6.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.6.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.6.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.6.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.6.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.6.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.6.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.6.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.5.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.5.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.5.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.5.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.5.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.5.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.5.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.5.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.4.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.4.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.4.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.4.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.3.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.3.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.3.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.3.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.3.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.3.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.3.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.3.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.2.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.2.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.2.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.2.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.2.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.2.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.2.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.2.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.1.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.1.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.1.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.1.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)
 

FIWARE IoTデバイスを保護する方法

  • 1. FIWARE IoTデバイスを保護する方法 (How to Secure FIWARE IoT Devices) Jason Fox, Senior Technical Evangelist FIWARE Foundation Translated to Japanese by Kazuhito Suda, FIWARE Evangelist
  • 2. 学習目標 ▪ システムのセキュリティ保護に役立つ一般的なアクションは何で すか? • HTTP トラフィックを保護するにはどのようなオプションが 必要ですか? • MQTT トラフィックを保護するにはどのようなオプションが 必要ですか? • 他のプロトコルにはどのようなオプションがありますか? ▪ PEP Proxy とは何ですか?サービスとデバイスを保護するため にどのように使用できますか? 1
  • 3. 前提条件 ▪ Docker ▪ Docker Compose ▪ Git ▪ Postman ▪ Cygwin for Windows 2 git clone https://github.com/FIWARE/tutorials.Step- by-Step.git cd tutorials.Step-by-Step/ git submodule update --init --recursive ▪ https://www.docker.com/ ▪ https://docs.docker.com/compose/install/ ▪ https://git-scm.com/downloads ▪ https://www.getpostman.com/downloads/ ▪ https://www.cygwin.com/install.html
  • 4. FIWARE Catalogue 33 Data/APIManagement PublicationMonetization Core Context Management (Context Broker) Context Processing, Analysis, Visualization Interface to IoT, Robotics and third party systems Deploymenttools 3 Development of Context-aware applications (Orion, Orion-LD, Scorpio, STH-Comet, Cygnus, QuantumLeap, Draco) Connection to the Internet of Things (IDAS, OpenMTC) Real-time processing of context events (Perseo) Handling authorization and access control to APIs (Keyrock, Wilma, AuthZForce, APInf ) Publication and Monetization of Context Information (CKAN extensions, Data/API Biz Framework, IDRA) Creation of Application Dashboards (Wirecloud) Real-time Processing of media streams (Kurento) Business Intelligence (Knowage) Connection to robots (FIROS, Fast RTPS,Micro XRCE-DDS) Big Data Context Analysis (Cosmos) Cloud Edge (FogFlow) Documents exchange (Domibus)
  • 5. 復習 – HTTP マイクロサービスの保護 4 PEP Proxy を使用した安全なサービス ● 承認された HTTP トラフィックのみを許可 するには、クライアント・アプリケーション (スーパーマーケット・アプリなど) と Context Broker の間にセキュリティ・ コンポーネントを挿入する必要があります ● ユーザ・アカウントを提供し、パスワードを 確認するには、Identity Manager が必要で す 安全でない HTTP トラフィックをブロックするよ うに Web server を設定します ● 301 - Moved Permanently に転送命令を含 めます ● 詳細情報 : https://www.digicert.com/ssl/
  • 6. HTTPS の構成例 : NGINX ▪ ドメイン証明書を作成する必要があります • 信頼の連鎖 - あなたは(一連の)プロバイダによっ て承認されています ▪ 秘密鍵を提供する必要があります ▪ 多くのチュートリアル - 詳細は使用する Webサーバに依存します • 例 Digital Ocean: Let‘s Encryptで Nginx を 保護する方法 • https://www.digitalocean.com/community /tutorial_collections/22 5 server { listen 80 default_server; listen [::]:80 default_server; server_name example.com www.example.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl default_server; listen [::]:443 ssl default_server; include snippets/ssl-example.com.conf; include snippets/ssl-params.conf; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  • 7. PEP Proxy 構成の例 : Wilma ▪ どこでリッスンしていますか? • PEP_PROXY_PORT ▪ 何を保護していますか? どこに転送しますか? • PEP_PROXY_APP_HOST, PEP_PROXY_APP_PORT ▪ 誰がアクセス・トークンをチェックする責任がありますか? • PEP_PROXY_IDM_PORT, PEP_PROXY_IDM_HOST ▪ IDM はどのように私を認識しますか? • PEP_PROXY_APP_ID, PEP_PROXY_USERNAME,PEP_PASSWORD 詳細情報 : https://hub.docker.com/r/fiware/pep-proxy 6
  • 8. HTTP トラフィックの保護: IoT デバイス 7 ● デバイスは HTTP を使用して通信するため、クライア ント・アプリケーション(デバイスなど)と IoT Agent の 間に PEP proxy を含めることができます ● ユーザ・アカウントを提供し、パスワードを確認するに は、 Identity Manager が必要です ● PEP Proxy は、次の設定を使用して定義されます: ○ PEP_PROXY_APP_HOST ○ PEP_PROXY_APP_PORT ○ PEP_PROXY_PORT ● もちろん以前に示したように、HTTPS を使用して マイクロサービス間の通信を保護することもできます マイクロサービスのユースケースと同様の設定ですが、 現在、各 IoT device はそれ自体が(制限された)ユーザです ● DUMMY_DEVICES_USER, DUMMY_DEVICES_PASSWORD
  • 9. HTTPトラフィックの保護: IoT Agent 8 IoT Agent が (制限された) ユーザになりました - Context broker と IoT Agent の間のトラフィックが保護されます ● 永続的なトークンを保持する追加の信頼属性 (trust attribute) を使用してデバイスを プロビジョニングします ● HTTPS も必要になる場合があります。これは、使用するアーキテクチャと、 IoT devices が IoT Agent と通信するプロトコルによって異なります curl -iX POST 'http://localhost:4041/iot/services' -H 'Content-Type: application/json' -H 'fiware-service: openiot' -H 'fiware-servicepath: /' -d '{ "services": [ { "apikey": "4jggokgpepnvsb2uv4s40d59ov", "cbroker": "http://orion:1026", "entity_type": "Motion", "resource": "/iot/d", "trust": "e37aeef5d48c9c1a3d4adf72626a8745918d4355" } ] }'
  • 10. MQTTトラフィックの保護: IoT デバイス 9 MQTT 接続でユーザ名とパスワードを入力します MQTTブローカーのユーザ名/パスワードのハッシュ・ファイルを 作成します 例: /etc/mosquitto/passwd 例. Hackaday の例: https://hackaday.io/project/12482- garage-door-opener/log/43367-using-a-username-and- password-for-mqtt ● IOTA_MQTT_USERNAME,IOTA_MQTT_PASSWORD MQTT over SSL を使用します 証明書を作成し、MQTT ブローカーを適切に設定する必要があります 例. ThingsBoard ドキュメント: https://thingsboard.io/docs/user-guide/mqtt-over-ssl/ ● IOTA_MQTT_CA, IOTA_MQTT_CERT, IOTA_MQTT_KEY
  • 11. 安全な MQTT を使用して IoT デバイスを接続する方法 10 const mqtt = require('mqtt'); const options = { protocol: 'mqtt', host: 'localhost', port: 1883, key: <key>, ca: <certificate-authority>, cert: <certificate>, rejectUnauthorized: true, username: <device-username>, password: <device-password>, keepalive: 0, connectTimeout: 60 * 60 * 1000 }; const mqttClient = mqtt.connect( options.protocol + '://' + <host> + ':' + <port>, options ); IoT Agent と IoT デバイスの両方が同じ方法で MQTT ブローカーに接続します 豊富な MQTT クライアントライブラリが利用可能 ● https://github.com/mqtt/mqtt.github.io/wiki/libraries IoT Agent は共通の Node.js ライブラリを使用します ● https://github.com/mqttjs/MQTT.js 詳細については : ● http://mqtt.org/
  • 12. サマリ: FIWARE ベースのシステムの保護 ▪ 製品とデータの整合性を確保するための安全なシステムが必要です: • 信頼できる読み取りだけを受け入れます • 認識できるユーザにのみデータを提供します ▪ システムを保護するための最初のステップ: • アクターを特定するために可能な限りユーザ名とパスワードを使用します • SSLを使用します - メッセージと構成でプレーン・テキストを使用してはいけません • ユーザ・アクセスを最小限に抑えます (例: root アクセス、開いているポートなし) • すべてをログに記録します ▪ データのゲートキーパーとして機能する PEP Proxy を使用します ▪ FIWARE はシステムの保護に役立つ一連のコンポーネントを提供します • FIWARE カタログのコンポーネントの使用は必須ではありませんが、それらを使用するか、 同等に安全な代替手段を使用する必要があります 11