Azure のガバナンス機能を使ってクラウドネイティブガバナンスを実現 ~ 実践編その 1 ~

この記事は

こちらのブログの続きです。はじめての方はこちらを先にお読みいただけると理解が深まるかと思います。 

年末のあわただしさ(言い訳)から概要レベルにとどまってしまいましたが、年も明けたので実践編をしたためていきたいと思います。

Azure Policy とは

Azure Policy では、Azure の各種リソースに対してポリシーを定義・適用することで、プロアクティブな統制を実現することができます。例えば、指定されたリージョンにのみデプロイを許可する、指定された SKU だけデプロイできる、、、なんてことができます。Azure Dev Ops と連携することで CI / CD パイプラインにポリシー準拠機能を組み込んだり、既存リソースに対してポリシーに適合するために変更をかけたりすることができます。2018/9 の Ignite で GA となりました。本ブログでは Azure Policy をもう少し深堀していきます。

イニシアティブとポリシーの関係

Azure Policy はイニシアティブとポリシーという 2 種類の定義を Azure リソースに対して割り当てることができます。イニシアティブとは、複数のポリシーによって構成されるまとめルールのようなもので、いくつかのポリシーをセットにしてまとめることで運用を簡単にすることができます。

f:id:minorun40:20190112213644p:plain

ビルトインで提供されるイニシアティブ、ポリシーはすぐ使えて便利ですが・・・

既にビルトインでいくつかのイニシアティブ、ポリシーが Azure Policy には用意されています。既にあるものは使った方が便利なので使ってしまいましょう。

ただし、イニシアティブを選ぶ場合は、どんなポリシーから構成されているか、ポリシーを選ぶ場合は、そのポリシー定義がどのようなルールとして記述されているか、しっかりと確認してから採用しましょう。

これはあくまでもビルトインとして提供されているものであり、皆様の企業のポリシーやコンプライアンスルールで適用するにはカスタマイズが必要かもしれません。

全てのポリシーは JSON で記述されていますので、その内容を確認していただくことができます。どういった時にポリシー違反となるのか、ならないのかはちゃんと理解しておかないと、思いもよらないところでルール違反を出してデプロイを停止させてしまう場合もあります。

さっそく Azure Policy を適用してみましょう

Azure Policy をリソースグループに適用する流れは以下の通りです。

・割り当てたいルールの種類(イニシアティブかポリシーか)を選ぶ

・割り当てる対象(スコープ)を決める

  Management Group 、サブスクリプション、リソースグループから選べる

  除外設定も可能

・割り当てたい定義(どのイニシアティブ、ポリシーか)を選ぶ

・各種パラメータを決める

試しに一つイニシアティブを割り当ててみます。

Azure Policy のメニューから「割り当て」を選び、

f:id:minorun40:20190112215243p:plain      

出てきたページの上のメニューから「イニシアティブの割り当て」を選びます。

f:id:minorun40:20190112215342p:plain

イニシアティブの割り当てページにて、「スコープ」と「基本」を設定します。

今回は、AzureGovernanceTestというリソースグループをスコープとして設定し、Azure Security Center での監視を有効にするというイニシアティブ定義を使ってみましょう。

f:id:minorun40:20190112220020p:plain

と、ここまでは良いのですが、これを設定するとこの下に大量のパラメータが出てきました。

f:id:minorun40:20190112220231p:plain

これは何でしょうか?

ちょっと戻って、実際にイニシアティブの中身を見てみたいと思います。

イニシアティブの構成要素の確認方法

Azure Policy のメニュー画面で「定義」を開くと、イニシアティブ、ポリシーの一覧が出てきます。「定義の種類」でイニシアティブのみフィルタしてみましょう。

f:id:minorun40:20190112220418p:plain

今回割り当てようとしている、「Azure Security Center での監視を有効にする」を開くと、、、沢山のポリシーから構成されていることがわかりますね。

f:id:minorun40:20190112220657p:plain

試しに一つ、ポリシー定義を開いてみましょう。

一番上にある、IoT Hub における診断ログが有効であることの監査を開くと、以下のような JSON ファイルで構成されていることがわかります。

f:id:minorun40:20190112220955p:plain

ここで、”Parameters” という箇所がありますね。右にある「パラメーター」を開くと、このポリシーで定義されているパラーメーターがわかります。このパラメーターは、ポリシーを割り当てるときに選んで変えられるという設定なのです。

f:id:minorun40:20190112221225p:plain

もちろん、ここを固定値に最初から記述することもできます。毎回聞かれるのが大変、もしくは組織として常に一律の値とすべき、ということであれば固定値に書き換えてカスタムポリシーとして定義することもできます。

“効果”(“effect“)とは

このように、ポリシー定義は、論理条件に従いその振る舞いを定義するのですが、このポリシー定義の重要なところは、”効果”の記述です。

既存のリソースに対してポリシーを割り当てる際に、既存のリソースの状況は知りたいが、いきなり日々のデプロイや運用業務を止められないというシーンはありますよね。そうした時に、アラートだけ上げる、といったようなふるまいを設定するのが、”効果”の箇所となります。以下のような種類の”効果”を選ぶことができます。

  • deny : 監査ログでイベントを生成し、要求は失敗します。
  • audit : 監査ログで警告イベントを生成しますが、要求は失敗しません。
  • append : 定義済みのフィールド セットを要求に追加します。
  • AuditIfNotExists : リソースが存在しない場合に監査を有効にします。
  • DeployIfNotExists : リソースが存在しない場合にリソースをデプロイします。

今回のイニシアティブの割り当てはテストですのでAuditifNotExistsとして割り当ててみましょう。

このように、まずは今のリソースがどのような状態かを確認するためにも、またはポリシー定義の動作確認のためにも、まずは緩めに”効果”を設定すると良いと思います。

参考リンク

ポリシー定義の構造の詳細 - Azure Policy | Microsoft Docs

効果のしくみを理解する - Azure Policy | Microsoft Docs

実際に割り当ててみると、このような感じになりました。

f:id:minorun40:20190112222511p:plain

最後に、現在使用できるビルトインのイニシアティブ、ポリシーを載せておきます。

あくまでも本日(2019/1/12)時点のものであり、最新のものは皆さんの環境で確認をしてください。

[ Appendix ] イニシアティブ一覧 ( 2019 / 1 / 12 )

No. 名前 ポリシー数 カテゴリ
1 [プレビュー]: Azure Security Center での監視を有効にする 80 Security Center
2 [プレビュー]: Data Protection Suite を有効にする 1 Security Center
3 [プレビュー]: Linux VM 内にアプリケーションがインストールされていないことを監査する 2 Guest Configuration
4 [プレビュー]: Linux VM 内にアプリケーションがインストールされていることを監査する 2 Guest Configuration
5 [プレビュー]: Linux および Windows 仮想マシン内のパスワードのセキュリティ設定の監査 18 Guest Configuration
6 [プレビュー]: VM スケール セット (VMSS) 用の Azure Monitor の有効化 6 Monitoring
7 [プレビュー]: VM 用 Azure Monitor を有効にする 6 Monitoring
8 [プレビュー]: Windows VM 内にアプリケーションがインストールされていないことを監査する 2 Guest Configuration
9 [プレビュー]: Windows VM 内にアプリケーションがインストールされていることを監査する 2 Guest Configuration
10 [プレビュー]: Windows VM 内の監査 Web サーバーのセキュリティ設定 2 Guest Configuration

 

[ Appendix ] ポリシー一覧 ( 2019 / 1 / 12 )

No. 名前 カテゴリ
1 [プレビュー]: API アプリの CORS リソース アクセス制限を監査する Security Center
2 [プレビュー]: API アプリの HTTPS 専用アクセスを監査する Security Center
3 [プレビュー]: API アプリの IP 制限の構成を監査する Security Center
4 [プレビュー]: API アプリの Web ソケットの状態を監査する Security Center
5 [プレビュー]: API アプリのリモート デバッグ状態を監査する Security Center
6 [プレビュー]: Dependency Agent デプロイの監査 - VM イメージ (OS) が一覧にない Monitoring
7 [プレビュー]: Endpoint Protection の不足の Azure Security Center での監視 Security Center
8 [プレビュー]: Linux VM /etc/passwd ファイルのアクセス許可が 0644 に設定されていることの監査 Guest Configuration
9 [プレビュー]: Linux VM passwd ファイルのアクセス許可を監査する VM 拡張機能のデプロイ Guest Configuration
10 [プレビュー]: Linux VM スケール セット (VMSS) 用の Dependency Agent のデプロイ Monitoring
11 [プレビュー]: Linux VM スケール セット (VMSS) 用の Log Analytics エージェントのデプロイ Monitoring
12 [プレビュー]: Linux VM 内にアプリケーションがインストールされていないことを監査する Guest Configuration
13 [プレビュー]: Linux VM 内にアプリケーションがインストールされていないことを監査する VM 拡張機能のデプロイ Guest Configuration
14 [プレビュー]: Linux VM 内にアプリケーションがインストールされていることを監査する Guest Configuration
15 [プレビュー]: Linux VM 内にアプリケーションがインストールされていることを監査する VM 拡張機能のデプロイ Guest Configuration
16 [プレビュー]: Linux VMDependency Agent のデプロイ Monitoring
17 [プレビュー]: Linux VM 用 Log Analytics エージェントのデプロイ Monitoring
18 [プレビュー]: Log Analytics エージェントのデプロイの監査 - VM イメージ (OS) が一覧にない Monitoring
19 [プレビュー]: OS の脆弱性の Azure Security Center での監視 Security Center
20 [プレビュー]: SQL脆弱性評価の結果の Azure Security Center での監視 Security Center
21 [プレビュー]: VM脆弱性の Azure Security Center での監視 Security Center
22 [プレビュー]: VM 用の Log Analytics ワークスペースの監査 - 不一致をレポート Monitoring
23 [プレビュー]: VMSS の Dependency Agent デプロイの監査 - VM イメージ (OS) が一覧にない Monitoring
24 [プレビュー]: VMSS の Log Analytics エージェントのデプロイの監査 - VM イメージ (OS) が一覧にない Monitoring
25 [プレビュー]: Web アプリケーションの CORS リソース アクセス制限を監査する Security Center
26 [プレビュー]: Web アプリケーションの HTTPS 専用アクセスを監査する Security Center
27 [プレビュー]: Web アプリケーションの IP 制限の構成を監査する Security Center
28 [プレビュー]: Web アプリケーションの Web ソケット状態を監査する Security Center
29 [プレビュー]: Web アプリケーションのリモート デバッグ状態を監査する Security Center
30 [プレビュー]: Windows VM がパスワードの複雑さの要件を強制していることの監査 Guest Configuration
31 [プレビュー]: Windows VM がパスワードの複雑さの要件を適用していることを監査する VM 拡張機能のデプロイ Guest Configuration
32 [プレビュー]: Windows VM スケール セット (VMSS) 用の Dependency Agent のデプロイ Monitoring
33 [プレビュー]: Windows VM スケール セット (VMSS) 用の Log Analytics エージェントのデプロイ Monitoring
34 [プレビュー]: Windows VM で可逆的暗号化を使用してパスワードを保存していないことの監査 Guest Configuration
35 [プレビュー]: Windows VM で可逆的暗号化を使用してパスワードを保存していないことを監査する VM 拡張機能のデプロイ Guest Configuration
36 [プレビュー]: Windows VM で直近に使用した 24 個のパスワードを許可していないことの監査 Guest Configuration
37 [プレビュー]: Windows VM で直近に使用した 24 個のパスワードを許可していないことを監査する VM 拡張機能のデプロイ Guest Configuration
38 [プレビュー]: Windows VM のパスワードが 14 文字以上でなければならないことの監査 Guest Configuration
39 [プレビュー]: Windows VM のパスワードが 14 文字以上でなければならないことを監査する VM 拡張機能のデプロイ Guest Configuration
40 [プレビュー]: Windows VM のパスワード最小有効期間が 1 日間であることの監査 Guest Configuration
41 [プレビュー]: Windows VM のパスワード最小有効期間が 1 日間であることを監査する VM 拡張機能のデプロイ Guest Configuration
42 [プレビュー]: Windows VM のパスワード最大有効期限が 70 日間であることの監査 Guest Configuration
43 [プレビュー]: Windows VM のパスワード最大有効期限が 70 日間であることを監査する VM 拡張機能のデプロイ Guest Configuration
44 [プレビュー]: Windows VM 内にアプリケーションがインストールされていないことを監査する VM 拡張機能のデプロイ Guest Configuration
45 [プレビュー]: Windows VM 内にアプリケーションがインストールされていないことを監査する。 Guest Configuration
46 [プレビュー]: Windows VM 内にアプリケーションがインストールされていることを監査する Guest Configuration
47 [プレビュー]: Windows VM 内にアプリケーションがインストールされていることを監査する VM 拡張機能のデプロイ Guest Configuration
48 [プレビュー]: Windows VM 内の監査 Web サーバーでは、TLS 1.1 バージョン以上の暗号化の使用が必要 Guest Configuration
49 [プレビュー]: Windows VM 内の監査 Web サーバーに VM 拡張機能をデプロイするには、TLS 1.1 バージョン以上の暗号化の使用が必要 Guest Configuration
50 [プレビュー]: Windows VMDependency Agent のデプロイ Monitoring
51 [プレビュー]: Windows VM 用 Log Analytics Agent のデプロイ Monitoring
52 [プレビュー]: カスタム ドメインを使用していない API Apps を監査する Security Center
53 [プレビュー]: カスタム ドメインを使用していない Web アプリケーションを監査する Security Center
54 [プレビュー]: カスタム ドメインを使用していない関数アプリを監査する Security Center
55 [プレビュー]: サブスクリプションの最大所有者数の監査 Security Center
56 [プレビュー]: サブスクリプションの所有者の最小数の監査 Security Center
57 [プレビュー]: サブスクリプション上で MFA が有効ではない読み取りアクセス許可を持つアカウントの監査 Security Center
58 [プレビュー]: サブスクリプション上で所有者アクセス許可を持つ非推奨のアカウントの監査 Security Center
59 [プレビュー]: サブスクリプション上で書き込みアクセス許可を持つ外部アカウントの監査 Security Center
60 [プレビュー]: サブスクリプション上で読み取りアクセス許可を持つ外部アカウントの監査 Security Center
61 [プレビュー]: サブスクリプション上にある所有者アクセス許可を持つアカウントで MFA が有効でないものの監査 Security Center
62 [プレビュー]: サブスクリプション上にある所有者アクセス許可を持つ外部アカウントの監査 Security Center
63 [プレビュー]: サブスクリプション上にある書き込みアクセス許可を持つアカウントで MFA が有効でないものの監査 Security Center
64 [プレビュー]: サブスクリプション上にある非推奨アカウントの監査 Security Center
65 [プレビュー]: サポートされている最新の .NET Framework を使用していない API アプリケーションの監査 Security Center
66 [プレビュー]: サポートされている最新の .NET Framework を使用していない Web アプリケーションを監査する Security Center
67 [プレビュー]: サポートされている最新の Java フレームワークを使用していない API アプリケーションを監査する Security Center
68 [プレビュー]: サポートされている最新の Java フレームワークを使用していない Web アプリケーションを監査する Security Center
69 [プレビュー]: サポートされている最新の Node.js フレームワークを使用していない Web アプリケーションを監査する Security Center
70 [プレビュー]: サポートされている最新の PHP フレームワークを使用していない API アプリケーションを監査する Security Center
71 [プレビュー]: サポートされている最新の PHP フレームワークを使用していない Web アプリケーションを監査する Security Center
72 [プレビュー]: サポートされている最新の Python フレームワークを使用していない API アプリケーションを監査する Security Center
73 [プレビュー]: サポートされている最新の Python フレームワークを使用していない Web アプリケーションを監査する Security Center
74 [プレビュー]: システムの更新プログラムの不足の Azure Security Center での監視 Security Center
75 [プレビュー]: ストレージ アカウントでの BLOB 暗号化の不足の監査 Security Center
76 [プレビュー]: パスワードがない Linux VM アカウントの監査 Guest Configuration
77 [プレビュー]: パスワードがない Linux VM アカウントを監査する VM 拡張機能のデプロイ Guest Configuration
78 [プレビュー]: パスワードがないアカウントからのリモート接続を許可する Linux VM の監査 Guest Configuration
79 [プレビュー]: パスワードがないアカウントからのリモート接続を許可する Linux VM を監査する VM 拡張機能のデプロイ Guest Configuration
80 [プレビュー]: 暗号化されていない SQL データベースの Azure Security Center での監視 Security Center
81 [プレビュー]: 暗号化されていない VM ディスクの Azure Security Center での監視 Security Center
82 [プレビュー]: 仮想ネットワークで Standard レベルの DDoS Protection が有効なことを監査する Security Center
83 [プレビュー]: 可能なアプリのホワイトリスト登録の Azure Security Center での監視 Security Center
84 [プレビュー]: 可能なジャスト イン タイム (JIT) ネットワーク アクセスの Azure Security Center での監視 Security Center
85 [プレビュー]: 関数アプリの CORS リソース アクセス制限を監査する Security Center
86 [プレビュー]: 関数アプリの HTTPS 専用アクセスを監査する Security Center
87 [プレビュー]: 関数アプリの IP 制限の構成を監査する Security Center
88 [プレビュー]: 関数アプリの Web ソケット状態を監査する Security Center
89 [プレビュー]: 関数アプリのリモート デバッグ状態を監査する Security Center
90 [プレビュー]: 制限が少なすぎるネットワーク アクセスの Azure Security Center での監視 Security Center
91 [プレビュー]: 保護されていない Web アプリケーションの Azure Security Center での監視 Security Center
92 [プレビュー]: 保護されていないネットワーク エンドポイントの Azure Security Center での監視 Security Center
93 [プレビュー]: 未監査の SQL データベースの Azure Security Center での監視 Security Center
94 App Services における診断ログが有効であることの監査 App Service
95 Automation アカウント変数の暗号化が有効であることの監査 Automation
96 Azure Data Lake Store における診断ログが有効であることの監査 Data Lake
97 Azure Stream Analytics における診断ログが有効であることの監査 Stream Analytics
98 Batch アカウントにおけるメトリック アラート ルールの構成の監査 Batch
99 Batch アカウントにおける診断ログが有効であることの監査 Batch
100 Data Lake Analytics における診断ログが有効であることの監査 Data Lake
101 Data Lake Store アカウントにおける暗号化の強制 Data Lake
102 IoT Hub における診断ログが有効であることの監査 Internet of Things
103 Key Vault における診断ログが有効であることの監査 Key Vault
104 Logic Apps における診断ログが有効であることの監査 Logic Apps
105 Managed Disks を使用していない VM の監査 Compute
106 Redis Cache に対してセキュリティで保護された接続のみが有効であることの監査 Cache
107 Search サービスの診断ログが有効であることの監査 Search
108 Service Bus における診断ログが有効であることの監査 Service Bus
109 Service Bus 名前空間の承認規則の監査 Service Bus
110 Service Fabric で ClusterProtectionLevel プロパティが EncryptAndSign に設定されていることの監査 Service Fabric
111 Service Fabric でクライアント認証に Azure Active Directory を使用していることの監査 Service Fabric
112 Service Fabric と Virtual Machine Scale Sets の診断ログが有効であることの監査 Compute
113 SQL DB Transparent Data Encryption のデプロイ SQL
114 SQL Server での監査のデプロイ SQL
115 SQL Server での脅威検出のデプロイ SQL
116 SQL Server バージョン 12.0 を必須とする SQL
117 SQL Server レベルの監査設定の監査 SQL
118 SQL サーバーの Azure Active Directory 管理者のプロビジョニングの監査 SQL
119 Transparent Data Encryption 状態の監査 SQL
120 VMSS でのアプリの正常性チェック付きで OS の自動アップグレードを適用 Compute
121 Windows Server 用の既定の Microsoft IaaSAntimalware 拡張機能のデプロイ Compute
122 イベント ハブ エンティティにおける承認規則の存在の監査 Event Hub
123 イベント ハブにおける診断ログが有効であることの監査 Event Hub
124 イベント ハブの名前空間の承認規則の監査 Event Hub
125 カスタム RBAC 規則の使用監査 General
126 ストレージ アカウントに対する制限のないネットワーク アクセスの監査 Storage
127 ストレージ アカウントの BLOB 暗号化を必須とする Storage
128 ストレージ アカウントへの安全な転送の監査 Storage
129 タグとその既定値のリソース グループへの適用 General
130 タグとその既定値の適用 General
131 タグとその値の適用 General
132 タグとその値をリソース グループに強制的に適用 General
133 ディザスター リカバリーを構成されていない仮想マシンの監査 Compute
134 ネットワーク セキュリティ グループの診断設定の適用 Monitoring
135 リソース グループが許可される場所 General
136 リソースの場所がリソース グループの場所と一致することの監査 General
137 仮想ネットワーク作成時の Network Watcher のデプロイ Network
138 許可されていないリソースの種類 General
139 許可されているストレージ アカウントの SKU Storage
140 許可されている仮想マシン SKU Compute
141 許可されている場所 General
142 使用できるリソースの種類 General
143 従来のストレージ アカウントの使用に関する監査 Storage
144 従来の仮想マシンの使用の監査 Compute
145 診断設定の監査 Monitoring

 

続く・・・かも。 

 

 

 

Microsoft Azure Cognitive Services と Microsoft Flow を使ってアンケートのフリーコメントの分類を自動化する

イベントを実施した後のアンケートのフィードバックはとても重要です。

ですが、フリーコメントの集計って大変ですよね。特に数が数百件ともなると・・・

統計的に分析したいときに、フリーコメントを目で見て、各自の判断で分類したりすることってあると思うんです。とにかく時間がかかりますし、担当者の主観や疲れによる分類仕分けの正確さが維持できないという問題点があります。

こうした作業は AI を使って自動化してしまいましょう。

今回、Microsoft Flow と LUIS を活用して、ノンコーディングですばやく実現してみたいと思います。

今回実現するイメージ

f:id:minorun40:20180605200856p:plain

準備物

・LUIS

・アンケート

・OneDrive

Microsoft Flow

 

では、始めてみましょう。

LUISの準備

LUIS は Azure で提供されている自然言語解析の Cognitive Services です。

LUISのアプリ作成の仕方はこちらのリンクを参考にしてください。

LUIS App を作成する – Japan Cognitive Services Support Blog

新しいアプリを作ります。

「My Apps」-「Create new app」を選択し、アプリを作成します。

f:id:minorun40:20180605201412p:plainf:id:minorun40:20180605202320p:plain

アプリ作成画面で「Create new intent」を選び、分類したいカテゴリとその例文を登録します。

f:id:minorun40:20180605202456p:plain

f:id:minorun40:20180605202527p:plain

f:id:minorun40:20180605202611p:plain

このような感じで、他のカテゴリを作成し、それぞれ例文を登録します。

f:id:minorun40:20180605202657p:plain

出来上がったら、右上にある、Train ボタンを押すと学習がスタートします。

以下のようなバーが出てきたら学習完了です。

f:id:minorun40:20180605202827p:plain

右上の Test ボタンを押すと意図解析のテストができます。

f:id:minorun40:20180605202932p:plain

どのようなカテゴリに分類されるのか、スコアと共に返してくれますので、ここで妥当性を判断しましょう。もし想定通りでなければ、例文を追加して→学習の繰り返しです。

完成したら、公開します。

「 Publish 」のタブを開き、「 Publish 」ボタンを押すと API として公開されます。

f:id:minorun40:20180605203137p:plain

これで LUIS の準備は終わりです。

 

アンケートの準備

実際に解析するアンケートファイルを作ります。

このアンケートで使用する列は3つだけです。

・__PowerAppsId__ 列:後で使用する Flow で読み込むユニークな行 ID を記載します。"__PowerAppsId__" という記述でないと Flow が行 ID として認識しないので注意が必要です。今回は、A000000001 から連番で振りました。

・Comment 列:実際のアンケートのフリーコメントを記載しましょう。この Comment の文章を LUIS が意図解釈します。

・Category :LUIS が意図解釈したカテゴリーをこの列に書き込みます。

f:id:minorun40:20180605203511p:plain

表を作成したら、「挿入」「テーブル」を押し、テーブルを作成します。

f:id:minorun40:20180605204151p:plain  f:id:minorun40:20180605204219p:plain

テーブルを作成しないと Microsoft Flow で読み込んでくれません。忘れずに作成しましょう。

作成完了するとこんな感じになります。

f:id:minorun40:20180605204336p:plain

作成完了したら、OneDrive の任意のフォルダにファイルを保存しましょう。

※OneDrive の作成方法はこちらをご参考ください。

OneDrive はじめてガイド - Microsoft アカウントを取得 - 楽しもう Office

その際に、同じファイルをコピーして、「アンケート出力」というファイルも作成しておきます。

※なぜ2つ作るかというと、Microsoft Flow が読み取って行を更新するという処理を書けるのですが、その際に、読み取っているファイルがロックされているため書き込めないというエラーが出るので、読み取りファイルと出力ファイルを分けています。

f:id:minorun40:20180605204437p:plain

これでアンケートファイルの作成は完了です。

 

Microsoft Flow の準備

Microsoft Flow のサインアップはこちらをご参考ください。

サインアップおよびサインイン | Microsoft Docs

Microsoft Flow のサインアップができると、以下のような画面になります。

f:id:minorun40:20180605205030p:plain

「+ 一から作成」を選びます。

もう一度「一から作成」を選びます。

f:id:minorun40:20180605205134p:plain

トリガーの作成を選択し、検索で「繰り返し」と入力します。そこで出てきた「スケジュール」を選びます。

f:id:minorun40:20180605205326p:plain

時間間隔を入力するところがありますが、基本的にデフォルト値で良いでしょう。

次に、「+新しいステップ」→「アクションの追加」を選択します。

f:id:minorun40:20180605212601p:plain

検索フィールドに「 Excel 」と入力すると、Excel ファイルに対する処理を選ぶことができます。ここで、「Excel - 行の取得」の上の方を選びましょう。

※下側は一行単位で取得するアクションとなります。

f:id:minorun40:20180605212800p:plain

行の取得のパラメータ設定となります。ファイル名のフィールドの右側をクリックすると OneDrive の接続認証となり、接続できれば OneDrive のファイルが表示されます。

ここは先ほど作成した「アンケート.xlsx」を選びましょう。

f:id:minorun40:20180605213047p:plain

正しく選択できれば、テーブル名も選択して選ぶことができます。

f:id:minorun40:20180605213107p:plain

さらに、「+新しいステップ」「アクションの追加」を選択します。

検索フィールドで「LUIS」と入力すると、LUIS のコネクタが出てきますので、「LUIS - Get prediction 」を選びます。

f:id:minorun40:20180605213227p:plain

「App id」フィールドには、LUIS アプリの App id※(先ほど作成した LUIS  アプリのSETTINGS というタブに Application ID が表示されていますので、それをコピーして貼り付けます)、「Utterance Text」には先ほどの行の取得で取得されている「Comment」が選べるようになっているので、それを選びます。

f:id:minorun40:20180605213636p:plain

そうしますとなんと、繰り返し処理(Apply to each)が勝手に作成されています。その枠内の「アクションの追加」を選びます。※ループ処理を書かなくても良いのは便利ですね。

f:id:minorun40:20180605213743p:plain

同じように検索フィールドで「Excel」と入力するとExcelの操作が出てきますので、今度は「Excel - 行を更新します」を選びます。

f:id:minorun40:20180605213910p:plain

先ほどと同じように、出力先の Excel ファイル名とテーブル名を選びますので、「アンケート出力.xlsx」を選び、テーブルを選びます。

f:id:minorun40:20180605214030p:plain

更にここで、行 IDというフィールドを選択します。ここは、右側の下の方にある「Row id」をいう値を選びます。

f:id:minorun40:20180605214128p:plain

最後に、「Category」というフィールドに LUIS からの戻り値である「Top Scoring Intent Name」を選択します。

f:id:minorun40:20180605214223p:plainこれにて完了です!

忘れずに保存して、その右にある「テスト」を押しましょう。

f:id:minorun40:20180605214346p:plain

そうすると、フローのテスト画面に映りますので、「トリガーアクションを実行する」をチェックして保存&テストを押します。

もう一度実行を聞かれますので、「フローの実行」を押します。

f:id:minorun40:20180605214446p:plainf:id:minorun40:20180605214510p:plain

 

フローが開始し始めました。

f:id:minorun40:20180605214617p:plain

100件のデータで、だいたい3分くらいで終了します。

f:id:minorun40:20180605214700p:plain

OneDrive 内の出力ファイルを見てみましょう。ちゃんと更新時刻がたった今になっていますね!

f:id:minorun40:20180605214805p:plain

アンケート出力ファイルの Category 列に分類が自動で記載されていれば成功です!

f:id:minorun40:20180605214858p:plain

適切に Category が分類されていない場合は、LUIS の例文を追加して学習させましょう。

後始末

Microsoft Flow は実行すると自動的にオンになって、今回の処理ですと15分に一回自動実行されてしまいますので、処理が終わったら忘れずにオフしておきましょう。

そうでないと Microsoft Flow の実行をし続けたり、LUIS の API をコールし続けて思いもよらない課金がされてしまいますのでご注意を。

 

いかがでしたでしょうか。

このように、Microsoft Flow を使用すれば、ノンコーディングで面倒な処理を自動化できますし、Microsoft Azure Cognitive Services と連携して AI の機能を簡単に付加することもできます。Microsoft Flow では、今回のようなループ処理や条件分岐、前段処理のデータを引き継いだりすることができるため、かなり複雑な処理を作ることも可能です。

今回は繰り返しトリガーでの Flow でしたが、OneDrive にファイルが保存されたら、、など様々なトリガーがあります。また、OneDrive 以外でも、Google スプレッドシートなどでも実施可能です。 

ぜひいろいろと試してみてください! 

 

参考リンク

Create smarter flows using Microsoft Cognitive Services LUIS | Flow Blog

Azure Machine Learning Studio でデータセットをマージする

ちょっと調べたらまとめている文書がなかったので備忘録的に。

Azure Machine Learning Studio

Azure Machine Learning Studio はデータサイエンティストでなくともノンコーディング機械学習のモデル作成、トレーニング、Web API公開まで簡単にできるサービスです。

azure.microsoft.com

データセットのインポートもローカルからのインポートからAzure 各種サービスからの連携まで様々取り揃えているのですが、

docs.microsoft.com

複数のファイル(csvなど)を取り込みたいケースってありますよね?

方法は大きく2つあります。

 

1.そもそものCSVファイルを結合して1つのファイルでアップロードする。

Azure Machine Learning Studioにアップロードする前に、前処理をして一つのファイルに結合しておくというやり方があるかと思います。

ただし、データのアップロードサイズには制限がありますので、数GBを超えるようなデータセットはローカルファイルからではなく、Azure StorageやAzure SQL DB、Azure HDInsightを使っていただく必要があります。

  参考:https://docs.microsoft.com/ja-jp/azure/machine-learning/studio/faq

 

2.別々に上げたファイルをAdd Rowモジュールで結合する。

2つのデータセットを結合するモジュールがあります。

ですので、ファイルは別々に+Newでアップロードしていただき、アップロードされたデータセットをStudioにドラッグアンドドロップで持っていき、Add Rowモジュールで結合するというやり方となります。

やってみましょう。

・事前にcsvファイルを2つアップロードしておきます。

・それぞれのcsvファイルをMyDatasetから選択し、ドラッグアンドドロップでExperimentエリアに配置しておきます。

・左側の検索フィールドで「Add Rows」を入力し、「Add Rows」モジュールをドラッグアンドドロップでExperimentエリアに配置します。

・配置したデータセットと「Add Rows」モジュールを繋ぎます。

・Runボタンで実行します。

※列が同一でないとエラーになるので注意!

f:id:minorun40:20171226141527p:plain

そうすると、二つのデータセットの行がマージされて一つのデータセットになります。

f:id:minorun40:20171226141930p:plain

f:id:minorun40:20171226141947p:plain

f:id:minorun40:20171226142034p:plain

 

ご参考  https://msdn.microsoft.com/library/en-us/Dn905871.aspx

 

このように、Azure Machine Learning Studio だけでも簡単にデータセットを結合することができます。

 

ただし、この方法は2つのデータセットしか結合できませんので、日付ごとにできた csvファイルなどを結合する場合、Add Rowsを複数並べることもできますが、ちょっと煩雑ですので、、できれば、別のサービスなどで前処理した方がスマートでしょう。

 この他、様々なデータセット加工モジュールが用意されていますので、色々試してみてください。

Azure Cognitive Services がノンコーディングでデモできます!(Intelligent Kiosk) ~その2 Realtime Driver Monitoring を試してみよう! ~

前回(Azure Cognitive Services がノンコーディングでデモできます!(Intelligent Kiosk) - 5月の青い空)の続きです。

 

さて、Intelligent Kioskが立ち上がりましたので、様々なAIのデモができるようになりました。

しかし、API Keyを登録しないと各種デモが動きません。ということで、API Keyを作成してみましょう。

まず、Azureのアカウントを用意します。もし、無いようであればこちらから。

無料の Azure アカウントを今すぐ作成 | Microsoft Azure

 

Realtime Driver Monitoring を試してみよう!~準備~

色々なデモシナリオがありますが、まずはRealtime Driver Monitoring を試してみましょう。各種デモには、必要なCognitive Services があります。Realtime Driver Monitoring には、Face API とComputer Vison API が必要です。

 

Azureポータルにログインします。

「新規」→「AI + Cognitive Services」と選びます。今回は、「Face API」を選んでみましょう。選んだら、「作成」ボタンを押します。

f:id:minorun40:20170909141047p:plain

Create画面になりますので、そこで各種設定を入れて作成します。内容的には無料枠で十分です。

f:id:minorun40:20170909141949p:plain

 

出来上がると、FaceAPIのビューが開きますので、そこで、「Keys」を開きます。

そのKEY1をコピーします。

f:id:minorun40:20170909141534p:plain

Intelligent kiosk の画面に戻り、左上のメニューを開いて「Settings」を開きます。

先ほどコピーしたKey1を貼り付けます。先ほど作成したFaceAPIのリージョンになっていることも忘れず確認しましょう。

あと、カメラ設定をするところがあるので、フロントカメラの設定を入れておきましょう(後で使います)

f:id:minorun40:20170909141914p:plain

 同じようにAzure Portal から「新規」→「AI + Cognitive Services」→「Computer Vison API 」を選びます。米国西部であることを確認して、無料枠で作成します。

f:id:minorun40:20170909222036p:plain

先ほどのFace API と同じようにKeysを開き、KEY1をコピーして、Intelligent kiosk のSettings に貼り付けます。

f:id:minorun40:20170909222823p:plain

f:id:minorun40:20170909222949p:plain

これで準備は完了です。

Realtime Driver Monitoring を試してみよう!~実践~

 いよいよRealtime Driver Monitoring を試してみます。

Intelligent Kioskのメニューから、「Demos」を選んで、「Realtime Driver Monitoring」を選択します。

f:id:minorun40:20170909223321p:plain

そうすると、ドライバーのモニタリング画面が表示されますね。

先ほど設定したカメラで撮っているものが映るようになっています。

f:id:minorun40:20170909224437p:plain

この、Realtime Driver Monitoring は、ドライバーの顔の状態をリアルタイムに分析し、異常を検知してくれます。例えば、目が閉じている、携帯電話で話している、こうした状態は異常であると検知して、それを表示してくれます。

・Head Pose
頭の位置が適正な状態かどうかを見ます。

・Mouse Aperture
口が開いているかどうかを見ます。

・Eye Aperture
目がきちんと明いているかどうかを見ます。

・Distractions
おかしな動作をしていないか。携帯電話で話している、などを検知

f:id:minorun40:20170909224607p:plain

※赤くなっているところは異常を検知

安全運転は大事ですね。眠くなったら少し休憩を入れましょう。

Drivers Idを登録してみよう!

Drivers Idという項目がありますね。こちらは、顔認証をしてくれる項目なんです。

自分の顔を登録してみましょう。

まず、メニューから「Settings」を選び、「Generate Workspace key」を押します。

f:id:minorun40:20170909225822p:plain

次に、メニューから「Face Identification Setup」を選びます。

f:id:minorun40:20170909225505p:plain

そうすると、新規追加画面に移りますので、Group の右の「+」でGroup 作成。その後、People の右の「+」で個人を作成します。

f:id:minorun40:20170909230105p:plain

そうすると、登録した名前で画像を検索してくれます。ここで、有名人であれば一発で登録が済むのですが、僕は有名ではないので、、、鈴木みのるがでてきちゃいますねw

画像の添付か、カメラでの撮影により、僕の顔写真を登録します。

f:id:minorun40:20170909230834p:plain

f:id:minorun40:20170909230927p:plain

納得いくものができたら、右上の実行ボタンを押します。

これで準備は完了です。

 

先ほどの「Realtime Driver Monitoring」に戻ると、僕の顔から名前を認識してくれています。

f:id:minorun40:20170909231111p:plain

これはUber でも活用されている技術なんですね~

www.youtube.com

これ以外にも、動画のリアルタイム分析を行ってくれる「Realtime Video Insights」や、画像のラベル判定モデルを作ることができる「Custom Vision Explorer」、カメラで撮影した画像に自動的にキャプションをつけてくれる「CaptionBot」など、Microsoft のCognitive Services の動作を、何もコーディングすることなく体験することができます。

ぜひ、いろいろと試してみて、Microsoft のCognitive Services を体験してみてください!体験してイカしたデモができたら、ぜひ周囲の方に見せてみましょう!

Azure Cognitive Services がノンコーディングでデモできます!(Intelligent Kiosk)

去る9/1に開催されたJapan Patner Conference でも、動画分析に関するCognitive Services のデモが見せられていましたが、そのデモでも使われたツール「Intelligent Kiosk」がUWP アプリケーションとしてWindows ストアで公開されています!

https://www.microsoft.com/en-us/store/p/intelligent-kiosk/9nblggh5qd84

f:id:minorun40:20170905133909p:plain

こちら、インストールして起動するだけで、Azure Cognitive Services がすぐにお試し頂けます!

これまでは、GitHub からClone してVisual Studio でビルドして実行する必要がありましたが、そうした環境が無くともいきなり立ち上がります。

 

やってみましょう。

実際にダウンロードして、起動してみると、OVERVIEWの画面になります。
右上のSign Inからスタートします。f:id:minorun40:20170905134402p:plain

Sign In画面が出ますので、ここでMicrosoft Accountがあればそれで、そうでなければ登録されているIDとパスワードでログインします。

f:id:minorun40:20170905134539p:plain

「Sign up now 」を選択して新規作成してみましょう。

f:id:minorun40:20170905134730p:plain

自分が登録したいメールアドレスを入力し、Send verification codeを押します。

すると、登録したメールアドレスにPin codeが来ますので、それをこちらの画面で入力します。

その後、パスワードと表示したい名前(Display Name)を入力して、Create ボタンを押します。

少し待つと、ログインが完了しました!

f:id:minorun40:20170905135048p:plain

メニューは、左上のf:id:minorun40:20170905135200p:plain箇所をクリックするとメニューが出ます。

f:id:minorun40:20170905135259p:plain

まずは、Settings で各サービスのAPI keyを登録し、

f:id:minorun40:20170905135434p:plain

Demos を選択して各サービスを使ってみる流れになります。

f:id:minorun40:20170905135545p:plain

結構ありますね。

とても簡単に使えますので、ぜひ試してみてください。

次回以降、いくつかのアプリを試してみたいと思います。

次回はこちら。

minorun40.hatenablog.com

Raspberry Pi オンラインシミュレータが使えるようになりました。

皆さん、IoTの検証をするためにデバイスを購入していますよね?

お金も多少かかりますし、クラウドやWeb系エンジニアとしてはデバイスのセットアップが結構面倒だったりしますね。

そうした方向けに、Raspberry Piのオンラインシミュレータが使えるようになっていました!

使い方は簡単、こちらのページで「RASPBERRY PI シミュレーターの起動」をクリックするだけ!ちなみに無料です!

docs.microsoft.com

 

起動すると、Raspberry Piのイメージ(アセンブリエリア)と、コーディングエリア、コンソールエリアが表示されます。

f:id:minorun40:20170801145205p:plain

ご使用のIoT HubのConnection Stringを設定して、実行するとIoT Hubへメッセージを送ってくれます!

送る際に、Lチカするのが地味にニクい。f:id:minorun40:20170801145908p:plain

 

このシミュレータでは以下のことが試せます。

・IoT Hubへのメッセージ送信

・IoT Hubからのメッセージ受信

・IoT Hubからのデバイスメソッド受信

 

 

コーディングエリアは自分で変更できますので、いろいろと試すことができます。

また、アセンブリ領域は、まだプレビューなのでロックされていますが、将来的には変更できるかもしれません。そうなると、夢が広がりますね(笑)

詳細な検証手順は例によって上記リンクに載っていますので、まずは試すだけでも簡単にできます。

また、ソースコードはこちらにありますので、ご確認ください。

github.com

ぜひ、お試しください!

Device Explorer が Azure Portal から使えるようになりました

Azure でIoTのシステムを構築する際に、Windowsであればデバイス管理のためのツール(Device Explorer)が提供されてきました。

github.com

f:id:minorun40:20170615151257p:plain

便利なツールであるものの、デバイス管理のたびに違うツールを立ち上げたり、デバイス作成のためにこのツールや、コードを実行するのはのはちょっと面倒、、、と思っておられたかもしれません。

 

そんな方向けに、いつの間にかAzure PortalでDevice Explorerの機能がリリースされています。

IoT Hubを作成すると、これまでなかったDevice Explorerのメニューがありますね。

Device Explorerを選択すると、今接続されているデバイス一覧が表示されます。

f:id:minorun40:20170615151928p:plain

 

「+追加」で新しいデバイスも登録できます。

f:id:minorun40:20170615152128p:plain

接続キーは自動的に発行されるので、出来上がったものをコピーしてコードに埋め込めば簡単に接続できますね。

 

ここでクエリをかけたりデバイスへメッセージを送ったりもできます。

f:id:minorun40:20170615152356p:plain

f:id:minorun40:20170615152334p:plain

一部機能(Monitorなど)は無さそうですが、これでだいぶ作業が捗りますね!

 

<ご参考>IoT Hubの各種仕様やチュートリアル

docs.microsoft.com

 <ご参考>Azure IoT SDK

github.com