ATP AntiSpoofingについて

E5なくても使えるようになったやつについてです。

Set up Office 365 ATP anti-phishing policies | Microsoft Docs

ATP Anti Spoofingとは

f:id:teraco:20181018003633j:plain

新GUI(セキュリティ&コンプライアンスセンター)で新たに設定可能となったATP フィッシング対策機能となります。

動作ポイント

f:id:teraco:20181018003630j:plain

今までのスパムフィルターの位置で動作します。名前は"ATP"とついていますが、動作ベースで理解するならEOPの一部として理解したほうがいいかもしれません。

設定検討項目

  • 偽装対策(Anti-phishing protection)
  • なりすまし対策(Anti-spoofing protection)
  • フィッシング対策(Anti-phishing protection)

の3つを設定します。設定箇所は3つですが、英語ページだと、Anti-phishing protectionとAnti-spoofing protectionの2種類と定義されています。

docs.microsoft.com docs.microsoft.com

偽装対策(Anti-phishing protection)設定項目

機能 説明 入力可能な値
保護対象のユーザー 攻撃者による偽装から保護する内部と外部のユーザーを最大で 60 人追加します。成り済まされる可能性の高いユーザー、例えばシステム管理者や役員を追加することをお勧めします。 内部ユーザー(最大60名)
保護対象のドメイン 攻撃者による偽装から保護する外部のドメインを追加します。例えば、よくメールのやり取りをする関連会社など。 外部ドメイン
保護対象のユーザー 攻撃者による偽装から保護する内部と外部のユーザーを最大で 60 人追加します。成り済まされる可能性の高いユーザー、例えばシステム管理者や役員を追加することをお勧めします。 内部ユーザー(最大60名)
保護対象のドメイン 攻撃者による偽装から保護する外部のドメインを追加します。例えば、よくメールのやり取りをする関連会社など。 外部ドメイン
処理 偽装ユーザー、偽装ドメインが発見された際のアクションを、それぞれで指定できます メッセージを他のメールアドレスにリダイレクトする/メッセージを受信者の迷惑メールフォルダーに移動する/メッセージを検疫する/メッセージの配信と[BCC]行への他のアドレスの追加を行う/配信される前にメッセージを削除する/処理を何も適用しない
偽装ユーザーに関するヒントを表示 偽装ユーザーと判断した場合にヒントを表示します。 有効/無効
偽装ドメインに関するヒントを表示 偽装ドメインと判断した場合にヒントを表示します。 有効/無効
通常とは異なる文字に関するヒントを表示 保護対象かどうかにかかわらず、例えばaDmIn@c0ntos0.comというユーザーからメールが送信された際に、ヒントを表示します。 有効/無効
メールボックス インテリジェンス ユーザー毎にメール送受信状況をチェックし、ユーザーがよくやり取りするユーザーを保護ユーザーと定義します。 有効/無効
信頼できる送信者とドメイン ここで指定したユーザー、ドメインには本ポリシーを適用しません 内部ユーザーまたは外部ドメイン

なりすまし対策(Anti-spoofing protection)設定項目

機能 説明 入力可能な値
なりすましフィルターの設定 なりすまし対策による保護の有効化の選択をします オン/オフ
処理 なりすましを検知した際の処理を選択します メッセージを受信者の迷惑メールフォルダーに異動する/メッセージを検疫する

フィッシング対策(Anti-phishing protection)設定項目

機能 説明 入力可能な値
高度なフィッシングのしきい値 フィッシング攻撃の可能性があるメッセージを Office 365 がどの程度積極的に処理するかを制御します。 1-標準/2-積極的/3-より積極的/4-もっとも積極的

利用方針

いろいろいじって楽しむ分には問題ないですが、世の中的な実績が少ないためエンタープライズ向けの適用は慎重に行うのが良いと思います。ポリシーを限定したユーザーに適用する事が出来るので、まずはそこから試すのがいいでしょう。

余談

呼び名 セキュリティリスク 定義
スパムメール なし ユーザーが受信登録していないにもかかわらず、送信されてくるメール。ランダムなエイリアス + ドメイン名を宛先に送られる、あるいは名簿業者などからメールアドレスが漏れ、勝手に送られてくるもの。
バルクメール なし ユーザーが受信登録行為を行い、結果として送信されてくるメールのうち、”迷惑”と感じるメールの事。どこまでが”有用”であり、”どこからが”迷惑”であるかはユーザーの主観によるが、Exchange Onlineではバルクメールの閾値を1~9の9段階で定義し、閾値以上のメールを”スパム”と扱うことが出来る
迷惑メール なし スパムメール、バルクメールの総称。迷惑メールはマルウェア、フィッシングメールと違い、ユーザーを騙して金銭を奪うような意図はない
マルウェア あり 悪意のある添付ファイルやHTML形式の埋め込みが行われ、セキュリティの甘いPCで開くことによって、PCに悪影響を与えるもの。主にバックドアやキーロガーなどを仕掛け、最終的にはクレデンシャルの取得、金銭・データの取得につなげようとする意図のメール
フィッシング あり 悪意のある添付ファイルの代わりに悪意のあるリンクが文中に存在し、リンクにアクセスする事でマルウェアと同じような結果を得ようとする意図のメール。
スプーフィング あり 送信者アドレスと送信した人物が本当に一致しているのか、確認できないメール。システム的な事象であり、悪意のあり,なしは関係ない。ほとんどが悪意があり送信者を偽っているものであるが、社内システムからExchange Onlineに送信され、SPFが登録されていないものなどが”スプーフィング”扱いとなり、結果としてフィッシングスコアが上がり、マルウェアメールと判定されてしまう場合がある。

分かりやすくセキュリティリスクあり・なしで語りましたが、必ずしも"なし"なわけではありませんので注意。

Teams会議を録画したら自動的にMicrosoft StreamにUPされて、会議で発言した人物を自動検出してくれる機能について

まとめ

  • "会議で発言した人物を自動検出してくれる機能"はMicrosoft Streamに実装された映像検知AIの機能であり、Teamsで録画したかどうかは関係ない
  • Teamsで会議をしたとしても、映像内に人物が十分に拡大できていないとMicrosoft Streamで検知できない。

詳しく

表題のようなシナリオでIgniteで発表があり、実際の製品でも既に使用できるようになっています。

で、これがうまく機能するなら、自分が出席しない会議の録画を後から見直して、キーマンがしゃべった所だけ重点的に聞く、という事が出来るのでよいと思いました。あと、複数人の会話が含まれる議事録を自動で文字起こしで作りたい(別ブログ)でも調べましたが、現状の音声認識ソフトだと複数人が参加する議事録を自動で文字起こしするのは難しいので、これも会議の録画を見ながらしゃべった人を特定する事で、議事録を楽に、正確に書き起こすことが出来ればいいなと思いました。

やってみた

試しに、5,6人の会議で全員Teams会議に参加し、会議を録音してみました。結果、以下が分かりました。Teamsの機能とStreamの機能で分けて書きます。

Teamsの録画機能

  • 録画をONにした時の動作
    • Teamsアプリの内部で映し出されている映像と入力されている音声を記録する
  • 誰かが資料を共有する前
    • 参加者のアイコンか、参加者が映像をONにしている場合、PCのカメラデバイスでとらえた映像が表示される
    • 参加者が多数の場合、発言した = PCの音声デバイスに入力があった参加者のアイコン(あるいは映像)がフォーカスされる
      • これはSkype時代から存在した機能
  • 誰かが資料を共有した後
    • 資料が前面に表示され、参加者のアイコン(あるいは映像)は録画領域の外にはじき出される

Streamの映像検知AIの機能

  • 映像の中の"顔"ぽいものを検知し、口の動きが"発言"していれば、発言しているとみなす
  • "顔"が小さすぎる場合、検知しない
  • 資料が前面に表示され、参加者のアイコン(あるいは映像)は録画領域の外にはじき出される場合、検知しない

検証結果

社内の会議と、youtubeの映像で確認しました。社内の会議は冒頭のtwitterで張り付けた通りですが、Excelで資料共有した瞬間に参加者のアイコンが録画画面外に移動してしまったので人物検知ができなくなってしまいました。

youtubeの映像はこちらを利用させていただきました。


Password-less Auth using Azure AD | Best of Microsoft Ignite 2018

例えば1:21の時点で女性が発言をしていますが、カメラワークが切りかわった1:28では人物を検知しなくなっています。

f:id:teraco:20181006145915j:plainf:id:teraco:20181006145918j:plain

結論

  • PCの画面共有をすると、Teamsの画面がPCの画面(ExcelやPPTなど)に切り替わるので、結果的に人物検知しなくなる

ということでダメじゃね?ということになりました。普通、Teams会議する時は資料共有しますしね。もしこれを解決するなら、資料共有はSkype for Business、会議音声録画だけTeamsでやればうまくいきます(死

Ignite2018参加レポ

Ignite2018に行ってきました。技術的な発表は頭がオーバーフローしてまとめきれないので…ひとまず旅行記だけ書いていきます('ω')

会場までの所要時間

行き

  • 家→成田まで:2時間 + 待ち2時間 = 4時間
  • 成田→ダラス→オーランド:10時間 + Transit待ち3時間 + 3時間 = 16時間
  • オーランド → 会場 = 30分

合計:20時間30分

帰り

  • 会場 → オーランド = 30分 + 待ち2時間 = 2時間30分
  • オーランド → シカゴ → 成田:3時間 + Transit待ち2時間 + 13時間 = 18時間
  • 成田→家まで:+ 2時間

合計:22時間30分

でした。

f:id:teraco:20181002004355j:plain

遠いですね(白目) 品川は近くてありがたいです。

会場について

大きさ

デカい。広い。具体的には、1日終わった時点で万歩計が15,000とかになってました。セッションを聞きながら運動もできるイベント…?会場の端→端の移動だと5分~10分歩くので、次のセッションまでの時間計算重要。ちゃんとしたスニーカーを履いていくとよいです。

f:id:teraco:20181002004358j:plain

googlemapsで計ったら端→端は700mくらいでした…。会場が広いので、迷う人は迷うと思います。私は地図感覚が良いので、2日目くらいには名前をきけば大体の場所とそこへの最短ルートが思い浮かびましたが、そうじゃない人は紙で地図を印刷して行くとよいと思います。

寒さ

比較的寒かったですが、想像していたほどではなかったです。私は寒さに強いので、ほとんどのセッションは半袖長ズボンでしたが、寒さに耐えられないセッションは、持参のダウンを羽織ってました。軽くて小さいユニクロウルトラライトダウンは有能でした…。

あと、Tipsとして、寒いときはアメリカナイズなおデブちゃんの隣に座ると、熱気であったかいという事が分かりました…。

f:id:teraco:20181002004508j:plain

こんだけ密度高いとあったかいです。

無線LAN

比較的繋がりました。特にPCで無線LANを拾えなかったことはなかったと思います。スマホだと途切れることもありましたが、単純にスマホの調子が悪かっただけだと思います。環境は良かったです。

電源

潤沢でした。事前情報だと、コンセントの取り合いになると聞いていましたが、ホテルの壁から直接取れるし、会場に設置されたスペースにも電源が配置されていました。

私個人は、電源が取れなかった時に備えて、PC用のバッテリーと予備のPCも持って行ったのに、全くの無駄でした。そもそもPCをあまり使わなかったのと、Surface Bookのバッテリーの持ちがすごぶる良くて、バッテリーが50%を切ることはありませんでした。

参考までにバッテリーはこんなのです。飛行機の手荷物として持ち込めます。

イベント環境

ライブ配信の利用

ほとんどのセッションが、MyIgnite(Ignite参加者専用ページ)で同時中継をしてました。よって会場に行かなくても手元のPCでセッションを受講する事が出来ます。もちろん、会場に行った方が臨場感があって面白いです。ライブ動画の利用シーンとしては、移動時間がなくて、歩きスマホ(周りに気をつけましょう)でセッション見ながら、次のセッションに移動するとか。

あと、セッションを12個同時に配信しているサテライト会場があり、手元のイヤホンで見たいセッションに音声を合わせる神スペースがありました。「つまんねーなー」と思ったら手元のスイッチで音声を切り替えられるので、どのセッションに出るか迷ってる時はここでチェックするのがお勧め。英語堪能なら左右で違うセッションを聞くことも可能です(死

f:id:teraco:20180926113604j:plainf:id:teraco:20180926121236j:plain

飯、飲み物

おいしかったです。

f:id:teraco:20180926081157j:plainf:id:teraco:20181002004657j:plainf:id:teraco:20180925080340j:plain

写真がおいしくなさそうなのはほっといてください。

事前情報だと飯はクソマズで会場外のフードコートに長蛇の列ができる…と聞いていましたが、そんな事はなく。2日目の昼食だけ冷え冷えの弁当で、それはちょっと微妙だったのですが、後で聞くと去年は全部それだったようです(そりゃキツい。 美味いといっても毎朝ベーコンとエッグとクロワッサン、と代わり映えしないので、飽きはきます。会場の周りも所謂リゾート地でピザにハンバーガーにステーキしかないので、ちょっとキツい。例えば日本で言うと、毎日高速のサービスエリアとかディズニーランドの中の飯だけ食ってろ、と言われているようなもので、5日間ずっとは飽きます。

案内

そこら中にTシャツ来た案内の人が立っているので、迷ったら聞けばよいです。

セッションの選び方

今回、セッションの数は1627個ありました。多すぎます。てことで行く人達で話し合ったのが「(レベル)100とか200のセッションは(エンジニアにとっては)つまらないだろうから、300とか400のセッションを受けよう」です。それで絞り込んでも400~500個にしか減らないので大変。やはり我々、日本の文化圏の人間なので、スピーカーの名前を見て「お、こいつのセッションなら面白い!」と思えないのが厳しいです。

てことで初日は各自で回ったうえで、夜に集まって2日目以降の作戦を話し合いました。結果、20分のセッションの優先度を下げようとなりました。20分のセッションは、日本のイベントだと10分間の"シアターセッション"にあたるもので、エクスポ会場の端でゲリラ的に行われるようなものです。

初日に回ったメンバーの話を総括すると75分とか45分のセッションに比べて、新しい情報が出てくることは少ない事が分かったので、2日目以降は優先度を下げました。とはいえこれも難しく、MS社員じゃないMVPの人がしゃべるセッションはそこでしか聞けない内容が含まれていたりする…。

最終的には、ほとんどのセッションは後でも動画で見れる事を考えて、自分が課題を持っていて、スピーカーに質問したくなるセッションを選んでいました。

ちなみに今回、興味があるセッションをExcelに書き出して纏めました。Ignite公式アプリの調子が悪かったり、いろんな条件でセッションを絞り込みたいときに便利でした。

f:id:teraco:20181002004812j:plain

旅行準備

ホテルや航空券

会場近くのホテルはすぐに埋まってしまうので、Igniteへの参加が決定したら出来るだけ早くホテルを取った方がよいと思います。航空券についても、直前になればなるほど値上がりし、乗り継ぎが多かったり変な時間のものになってしまうので、余裕をもって取った方がいいでしょう。

持ち物

海外だからといってそんなに必要なかったです。基本的にはホテルと会場の往復なので、会社に行く程度の荷物+着替え3泊分で洗濯しながら回してました。現地で参加者特典のかばんも貰えますし、エクスポ会場を回ればメーカーロゴ入りのTシャツももらえるので、ワンチャン服さえも要らない…。夜に遊びに行ったりお土産を買いこんだりする人はそのための準備が必要でしょう。

twitterアカウントやLinkedInアカウントの準備

会場で仲良くなった人と連絡先を交換する際、メールじゃなくてtwitterアカウントを教えあうことが多かったです。もちろん、メールでもOKだと思うのですが、twitterの方が相手とよりカジュアルに繋がれるので私としてはお勧めです。(エンジニアの必携ツールですよね)

まとめ

  • 行くことが決まり次第
    • ホテルを抑える(重要!)
    • 航空券を抑える
    • twitterアカウント,Linkedinアカウントを開設
      • 海外の人とつながる時、その場でtwitterアカウントを教えあうことが多かったです。
    • パスポート、ESTAなど海外に行く準備
  • 3週間前くらい
    • セッションスケジュール確認&ラボ申し込み
      • ラボ系は早く申し込まないと埋まってしまうので注意!
    • 必要であれば英語の練習
  • 前日
    • 持ち物整理

Monthly Office 365 Update (2018年6月分,7月分,8月分)

Office 365のアップデートを定期的にチェックして気になったものをピックアップするシリーズ。ブログタイトルはMonthlyですが例によって3か月分。いや、月イチでチェックするほどでもないんですよね~。

チェックソース

twitterで「O365の更新予定を把握できるサイト」が話題になりましたが、一番情報量が多いのはOffice 365 Roadmapだと思います。しかしながら、

  • RSSを吐いていないのでチェックしづらい
  • 重要な更新はメッセージセンターとか各種ブログで通知される
  • EOPの動作などサイレント修正されるものも多い

ので、最近はあんまり見てないです。まぁ「あの機能、どうなったかなー」って思って能動的に探したりするときですね。そんでリリース中止されてるのを知ったりとか。

Office 365 メッセージセンター

MC141695 New feature: Support for third party storage providers in Outlook on the web

OWAで3rdパーティーのストレージサービス(多分boxとかgoogle drive)からファイルを添付したり受信したメールのファイルを保存したりできる。これ、Teamsでは規定で有効で、何も気にせずONにすると情報漏えいしまくるという鬼設定だったのですが、OWAでは規定でOFFの状態でリリースされるので一安心。会社公式でboxとか契約しているならONにする感じですね。

ここで気になったのは"今流行りのflowでboxやgoogle driveへのデータ保存を禁止するにはどうすればいいの?"ということ。WebプロキシなどでクライアントPCからのアクセスを制御していても、flow(O365 = クラウド) ⇔ box間の通信だからファイルアップロードできちゃうよね~と。

調べてみると、flow管理センターというものはあるものの、ここでboxやgoogle driveを禁止することはできない様子。日本のエンタープライズ向けに展開するなら、こういう所はコントロールしたいなー。あるいは管理者がLogic Appsなどで中央集権的に管理するか。

MC142447 Updated feature: SharePoint Online storage allocation

シェアポで組織に割り当てられるストレージが1TB × (5GB * ユーザー数)から、1TB × (10GB * ユーザー数)に増えた様子です。TeamsやStreamのデータなど、自然に使っているだけでシェアポの容量をどんどん消費してしまう状況なので、これはうれしいっすね。

MC143579 New feature: Known Folder Move is now available for OneDrive for Business

OD4Bの同期ツールで、デスクトップや写真フォルダなど、システム既定のフォルダを同期できるようになりました。Google driveなどでは既に有効になっていたので、機能自体に目新しさはないですが、エンタープライズ要件で「ランサムウェア対策やPCのデータバックアップのために、デスクトップのファイルを自然にクラウドにUPしたい」みたいなのがあるので、使えますね。

MC143715 Updated feature: Multi-Factor Authentication and self-service password reset preview

MFAとSSPRの登録画面が新しくなる様子。企業さんが手順書とか作ってるなら変更しないといけないですね。まーfacebookとかamazonなど、ユーザーとして二要素認証を体験する機会が増えてるので、この手の手順書は必要なのか?と思うけど…(年配の方には必要?)

MC143889 We’re correcting the Office.com Conditional Access Policy behavior

ExOL条件付きアクセスを設定しているときに、Office.comにログインした際にアクセスできないアプリが表示され、クリックするとアクセス不可となってしまうので、そもそもパネルを表示しないようにした、という変更のようです。

MC144247 New feature: Idle Session Signout is now available for SharePoint and OneDrive for Business

シェアポとOD4Bでも、OWAのようなセッションタイムアウト値が指定できるようになりました。OWAの場合、デフォルト6時間だけど、シェアポ/OD4Bは規定でこの機能がオフのようなので、O365に対する認証要件を検討した後、オンにすればいいでしょう。

MC145014 Updated feature: Audit features in Exchange

ExOLのメールボックスに対する監査ログが規定で有効となる様子。前からやれよ、な変更なのですが、監査ログを記録できるほどExOLの基盤が強化された(?)ので規定で有効になったのかな。SI案件の時はやらないと後から問題になるので気を付けポイントなのですが、こーいう設定忘れに期待する規定値OFFはやめてほしい。

MC145909 Updated feature: OneDrive for Business admin center setting is now honored by Outlook Desktop

OD4B管理センターでどんなポリシーを設定しても、OutlookでOD4Bのファイルを添付する際、既定で"組織のユーザーは編集可"で共有されるのですが、実はこれはバグ(仕様)で、OD4B管理センターで設定したポリシーがちゃんと効くようになりましたよ、とのこと。正直、この機能を使いこなしている会社はいないのでほぼ問題ないんじゃないかなと。

MC146001 A new TLS certificate is coming to Exchange Online

ExOLで使っているTLS証明書が変わるので、オンプレサーバーなど中継でURL指定している場合は注意してください、とのこと。

Exchange Online が TLS を使って Office 365 でのメール接続をセキュリティ保護する方法 - Office 365

その他情報

O365ロードマップより。

Feature ID: 31459 Disable Basic Authentication in Exchange Online using Authentication Policies

ユーザー単位、テナント単位でBacis認証を禁止できる機能がリリース。リリース予定時期は2018年 Q4(10月-12月)。

Feature ID: 15080 Mailbox Plan Enhancements

今は1通当たりの最大メールサイズくらいしか使い物にならないMailbox Planですが、今後機能を拡張する予定らしいですね。…ってSet-MailboxPlanをチェックしても全然コマンド拡張されてへんやんけ!と思っていたところ、GitHubの過去ログを発見。

Update Set-MailboxPlan.md · MicrosoftDocs/office-docs-powershell@13fb63e · GitHub

確かにここまで設定が出来れば、だいぶ"ポリシー"として使えそうな感じです。

Microsoft Streamに社内勉強会の録画をUPした感想

Office 365の機能の1つにMicrosoft Streamってのがあります。動画をUPし社内に共有できるもので、社内限定youtube的な使い方が出来ます。今回、社内で開催した自分主催の勉強会動画をUPしたので、気づいたことの感想です。

UPしようと思った理由

  1. 勉強会に参加しない人がいる。
  2. 後日その人に「前にやってた勉強会の内容教えて」と言われて教えるのが面倒。
  3. 「この動画見てから質問に来てね」と勉強会動画を提示したい

です。フリーのデスクトップ録画ソフトで録画したものをファイルサーバーに置いてもいいんだけど、面白そうなのでStreamを使ってみることにしました。

動画の作成方法

  1. 勉強会をTeamsで録画
  2. Teams録画が終了次第、自動的にStreamにUPされる。

以上です。めっちゃ簡単。「勝手にUPされちゃうの?映っちゃいけないものが映ってるんだけど」ってなりそうですが、Teams会議に参加した人しか動画を見る権限がないのでOK。内容を確認後、全社公開や、権限を絞って公開します。

なお、映っちゃいけない画面にモザイクをかけて再UPしたい、となると、一度Streamから動画をダウンロードして動画編集ソフトで編集後、新規動画としてUPする形になります。結構めんどくさい。

StreamにUPした時の工夫

せっかく動画をUPしたので、見やすいようにしました。

1. 動画に目次をつける

hh:mm:ss形式で説明文を書くことで、動画の該当時刻にジャンプできるリンクが自動生成されます。

f:id:teraco:20180802155603j:plain

後から動画を見返す人が1時間くらいの動画を最初から見るのは大変だと思うので、必要な動画部分にジャンプできるようにしました。目安として、2,3分に1つ、目次を作りました。

なおこの目次は完全に手動で作成していますが、PPTに記載済みの目次に、話題が切り替わるタイミングの時刻を記録していくだけだったので、20分~30分ほどで作成できました。

2. 動画に字幕を付ける

電車の中など音を出せない環境で動画を見る時に字幕があればいいなぁ…と思って付けましたが、これがめちゃくちゃ大変でした。字幕の元ネタとして、勉強会の音声を自動書き起こししたテキストデータを編集したのですが、まず書き起こし精度が悪い。今回、対面の勉強会なので参加してくれる人を意識したしゃべりにしたのですが、音声書き起こされるように意識してしゃべらないと精度が悪いと思いました。

2点目は、そもそも動画の音声に合わせて字幕を表示するのに、動画編集的なスキルが必要、ということです。

  1. 動画でしゃべりだすタイミングで適切に字幕を表示する
  2. その字幕を適切なタイミングで消す
  3. 長文の場合、動画が見やすいように、適切に字幕を区切って表示する

という調整が難しく…。ざっくり1秒単位の調整だと違和感があり、かといってミリ秒単位でこだわると、いくら時間があっても足りません。

なお、動画ファイルはWebVTTという形式でUPすればよく、UPしたデータはStream側で保存し、後から再UPもできます。WebVTTはただのテキスト形式であり扱いやすく、これは良かったのです。形式は以下の通り、1行目にWEBVTTって書いて、3行目以降に字幕を表示する時間と、テキストの内容を記載していきます。

WEBVTT

0:00:07.000 --> 0:00:14.000
では、○○の講習会を始めたいと思います。
0:00:27.000 --> 0:00:34.000
この講義というかミーティングは、録画する予定です。 これを見てる人はもう録画されてるのを見ているんじゃないかな、と思っています。
0:00:35.000 --> 0:00:42.000
録画の関係でプレゼンモードではなく、パワーポイント普通に表示する方針で行こうと思います。

そんなのもあって、10分の書き起こしをするのに1時間くらいかかりました。ここで、よく考えたら電車の中でみたけりゃイヤホンすればいいんじゃね?と気づいたので、字幕作成はやめました。

今後の改善点

1. 字幕について

一番効果的な改善策は英語でしゃべればStream側で自動テキスト書き起こしして字幕作ってくれるよですが、そりゃ厳しいので…。全文書き起こしは時間がかかるので、重要なところだけ字幕を表示する、などの対応をすることでしょうか。まぁ前述の通り、イヤホンで聞けばいいし、目次作ればある程度話題を選んでジャンプできるので、字幕機能は使わなくてもいいかな、と思いました。

2. しゃべってる人の様子を動画に乗せる

PPTの画面だけを動画で流すより、しゃべってる人の顔やしぐさも一緒に乗せた方が、動画への没入感が高いらしいです。もしこれを実現する場合、PPTの画面としゃべり手の両方を録画して、動画編集ソフトでそれをミックス…としなければならず面倒ですが、Teamsの場合、発表者のアイコンが右下に表示されるので、Teams会議にカメラONで参加して録画すると、自然とPPT画面 + 自分のしゃべってる姿がStreamにUPされるのでよいかな、と思いました。

分かりづらいけど、右下に表示されてる箱っすね。

f:id:teraco:20180802161725j:plain

まとめ

東進衛星予備校が成功してるし、LinkedInLearingやSchoo!、TechAcademyなどの動画学習サイトも盛況。個人的にも、ただ資料を配布するより、動画もまとめて提供するのが効果が高いと思います。今まではハードルが高かったですが、Teams + Streamで簡単に実現できるので、みなさんも試してみてください。

バッチサーバー、Azure functions、LogicApps、Flowの違い

ひょんな事から kenakamuさんとお話しする機会があり、自分なりに整理できたのでメモ。

背景

Azure functionsにも慣れ「これがサーバーレスかー!おもろー!」とコードを書きまくって動かしていたところ、コードの行数が200行を超え、コードから呼び出すためにfunctionsにUPするモジュール(Azure Powershell)なども増え、コードとモジュールの管理が必要となる。「これってバッチサーバー上で動かしているのと、何が違うんだろう…?」と思ったのが、考えるきっかけです。

また、LogicAppsとFlowの違いを説明することが多いので、まとめようと思いました。

比較表

- バッチサーバー Azure functions LogicApps Flow
料金 ○無料 ○無料 ×有料 ○無料
簡易さ ×コード ×コード ○GUI ○GUI
自由度 ◎自由 ○自由 △サービスの制約あり ×サービスの制約あり
時間制限 ○なし ×あり ○なし ○なし
基盤 ×IaaS ○PaaS ○PaaS ○PaaS
安定性 ○高 △中 ×低 ×低
権限 ○管理者 ○管理者 ○管理者 ×ユーザー

料金

LogicAppsはステップ毎に課金が発生。バッチサーバー、Azure functions、Flowはあえて"無料"と書かせていただきましたが、バッチサーバーはサーバー費用、Azure functionsは実行回数とCPU時間による課金、Flowは500回/日の回数制限があります。

ただ、ちょっと動かすだけならfunctionsとFlowは無料で使え、バッチサーバーも環境がある場合(ほとんどある)は、実質無料で使えます。

簡易さ / 自由度

LogicAppsとFlowはGUI、バッチサーバーとAzure functionsはコードで動かす必要がある。GUIの場合、設計書がなくてもある程度意味が分かるのが大きなメリット。つーかお客さんが設計書なしでもOKと言ってくれる。もちろん、作成の背景を記した要件定義書は残しておいた方がよいが…。一方、コードの場合、プログラムができない顧客に引き渡すとき & 自社管理用にプログラム設計書はほしい。GUIなら気軽に変更でき、それが設計書となることから、Logic Apps、Flowの方が、気軽にあれこれいじれるメリットはある。

その簡易さと引き換えにコードには自由度がある。バッチサーバーはIaaS環境を自分でいじれるので自由度◎、Logic AppsはAzure functionsと連携できるので自由度△としました。

時間制限

これはAzure Functionだけの制約で、1回の実行時間が5分(工夫すれば10分)となる。5分あればある程度の処理は出来るが…。一方他は実質時間制限なし。

基盤

バッチサーバーはIaaSとなり、基盤の再起動タイミングなどを考慮して設計することが必要。

安定性

LogicAppsやFlowは(実績ベースだと)起動に失敗し、うまく動かないことがある。一方、IaaS上でタスクスケジューラーやJP1で動かす場合、ほぼ確実にプログラムがキックする。…という意味で、こういう評価にさせてもらいました。Azure functionsの実績は手元にないので、とりあえず"中"にしました。

権限

Flowだけがユーザー権限であり、ユーザーが自分が出来る範囲のタスクをFlowで実装するもの。よってLogicAppsが元になっているとはいえ、自分ができないことはFlowにも出来ないです。(本当に抜け道がないか自分で確認したわけではないけど、設計思想はそう。)

なので「Flowでいろいろできちゃうかもしれないから、禁止しよう!」はナンセンス。まぁ中には、手動で私用のGmailにメールを送るのはいいが、自動転送はシステム的に禁止する、などのナンセンス運用の企業もあるが…。

管理者が実行するスクリプトのための比較表なので、〇管理者 / ×ユーザーとしてしまったけど、ユーザー権限だから逆にいいこともあり、一概には言えません。

ユースケース

Office 365 ライセンス付与、初期ユーザー設定バッチ

Office 365の運用ではほぼ確実に必要なバッチであり、サーバーレスの概念の登場前はバッチサーバーで動かしていたのがほとんどと思われる。これは引き続きバッチサーバーで動かした方がよいのではないか、と思えてきました。

まず、管理者業務なのでFlowは除外。1ユーザー毎に発行するコマンドが多く、LogicAppsで処理すると処理が長くなりそうな事。AzureADのユーザー属性によって処理内容を変化させる必要があり、分岐のパターンによってはコードで実装したほうがスマートであること。コマンドが通らなかった場合の、エラーハンドリングが必要なこと(例外処理が多い)など。

ログ監視バッチ

一定期間毎にクラウドサービスのログにアクセスしてデータをエクスポートする。これはコマンドは単純ですが、ログが大量の場合、APIからの戻り時間が不安なため、バッチサーバーで実行したほうがいいかもしれません。

使い分け基準

1. 管理者が実施するアクションか、ユーザーが実施するものか

これでFlowかそれ以外かを分けられます。

※ ただし、本来管理者が実施する業務だが、無料のFlowを使いたいため、システムアカウント権限でFlowを動かす方法はあり。"本来すべきではない"かもしれないけど。

2. タイマージョブか、そうではないか

もしタイマージョブ以外、例えばHTTPトリガーの場合、バッチサーバー上で動かすプログラムをHTTPトリガーで動かすのは面倒であるため、バッチサーバーは使わない方がよいと考える。

3. 短時間で終わるかどうか

もし5分以内に終わらない、あるいは終わらない可能性があれば、自動的にAzure functionsは候補から外れる。

4. ミッションクリティカルなアクションであるか

1度くらい失敗して、それに気づかなくてもよいかどうか。もしそれがNGなら安定性の高いバッチサーバー or Azure functionsで動作させるべきである。1回失敗しても、翌日に成功 or ユーザーリトライでOKだったらLogic Appsでよい。

5. Logic Appsの標準パーツで大半のフローを実現可能かどうか?

例えばExchange Onlineのユーザー設定は現状GraphAPIも用意されておらずPowerShellからしか行えないため、多数のコマンドを発行するならLogic Appsを使う意味は少ない。

6. 2~5で判断がつかない場合

タイマージョブで、そこそこ短時間で終わり、1回失敗しても翌日リトライすればOK、Logic Appsと2,3のAzure Functionsを組み合わせれば実現可能の場合。その場合にどの製品を使用するかは会社の開発ポリシーによります。例えば、Azure FunctionsはLogic Appsの部品としてのみ使用を許可、それ単体では動かさない、よって20行以上のコードを書くのは禁止する、など。

おそらく社内にコーディング規約的があるとすると1つの関数に実装する機能は1つまでなど、ある程度のポリシーがあるはずです。それと同じことをクラウド製品でも検討する必要があると思います。

まとめ

kenakamuさんがおっしゃっていたのは「なんでもできるからこそ、製品が生まれたニーズを知り、最適な使い方をする必要がある。」とのこと。

私自身、これだけサーバーレスだiPaaSだともてはやされていたとしても、コードを書いて、バッチサーバーで動かす方がいい場合もあると思いました。