第19回 Office 365 勉強会:感想
第19回 Office 365 勉強会というのに行ってきました。初参加でした。気になったところだけ感想です。
今の Office 365ってこんな感じ?
Groups/Teams周りと変わりつつあるO365サービスについて。
MyAnalytics
E5でついてくる機能。本命はMyAnalyticsの企業版であるWorkPlaceAnalyticsらしい。MSとしてはこの機能をプッシュしたいらしい。ということで、僕個人の会社アカウントもMyAnalyticsが有効になっているのだが、正直使えないという印象がある。というのは、Outlookの予定表を正としてデータ分析をしているのだが、午前半休だからOutlookの予定表に"午前半休"と4時間くらいの予定をぶっこむと、それを"会議"と認識したりする。原因として、Outlookで予定を作成する時に、"空き時間",“予定あり”,“外出中"くらいしかまともな選択肢がなく、細かい属性に落とし込めない。これが他社のスケジューラーだともうちょい選択肢があったりするのだが…。一案として、Outlookの"分類"をGPOで縛って特定の選択肢を必ず表示するようにし、それをユーザーが選ぶことを強制させる事があるが、それをMyAnalyticsに連携するのは無理なんだろうな…。
また「会議中にメールを送る事は悪なのか?」「メールは送ってないかもしれないけど、IMはしてるかもしれないし、ネットサーフィンしてるかもしれない。IMやネットサーフィンはMyAnalyticsでは検知できない」など、いろいろとツッコミがある。少なくとも、その会議が「有用かどうか判定」は、会議中の内職の内容を全て把握し、それが会議から派生した事柄かまでを判定しないといけないので、現状もこれからも正直厳しいと思う。
…と僕は感じており、MyAnalyticsのAIに対する納得感がないので、アドバイスを信用できない、という感情になる。WorkPlaceAnalyticsのリリース時にそれらがどこまで改善できているかが気になりますが…。
Flow/PowerApps/Forms周りの話、社内のpoweruserを味方につける
Flowくらいしか使ってないので正直実感がないですが、便利は便利なんだろうな、と思います。1点気になるのはNotes → Sharepoint移行の時によくある「昔○○さんが作ったワークフローを勝手に使ってるんですよー。辞めちゃって誰も仕組み分からないんですけど」や「Notesのアプリってたくさんあるけど何が使われてるかよくわからないから、念のため全部移行したいよね」問題。便利さの対極に発生する問題なのでどうしようもないが、情シスが管理できないサービスの利用が進めば進むほどOffice365へのロックインが進んで、他社サービスに移行し辛くなる気がするな。
なので展開にあたってはある程度ガバナンスを利かせたい。例えば、1人5つまでしかFlowを作れないようにするとか(適当)。そうすれば、実際に使っているFlowだけが残りやすくなる。あと1年毎に棚卸をして、不要なFlowやPowerAppsは消すとか。けどそれが出来ないから各社Notes移行の時に苦労してるんだろうな。
この辺りをMyAnalyticsで通知してくれればいいかも。例えば「このFlowは○ヵ月トリガーを検知していません」とか「このフローは動いていますが、リアクションを取っているユーザーがいません。」とか。Teamsには非アクティブのチームを自動的に削除する設定が追加されるらしいし、ILMも意識した管理者設定が出来れば助かるな。
Hololens…ではなくPowerBIの話
Hololensデモはテンションが上がる!もうなんでもかんでもHololens使ってデモしようw PowerBIの話。PowerBIもそうだが、Teams,Flow,PowreAppsも使ってみようと思わないと使えない。受け身では使えない。例えばWindowsにフリーソフトたくさん入れてるような人は自然に使うだろうし、そうじゃない人は使えない。現状、うちの会社もExcel中心で業務をやっているが、その中でPowerBIを使った方が便利なものはどんどん移管していくべきだな、と思ったとはいえ、こういう系のデモだとBtoCの想定が主であるため、BtoBが中心のSIerでどうやって使おうかなぁ…と考えつつ、結局使ってないのが現状です。
私、PowerBIとかPowerAppsってあんまりワクワクしなくて、管理者設定系の方が気になっちゃいます。管理者があれこれ試行錯誤して、ユーザーの皆様にサービスを提供するような。それは多分職業柄ってのと、その方が俺が面白いじゃん、って事かな。ユーザーがPowerBIとかPowerApps使ってゴリゴリやる方がみんなが面白いよね、ってのは頭じゃ分かってるんですけど。
あーけどFlowなんかは自分で使ってみてすげー便利だと思うからみんなにも進めたいと思うし、やっぱPowerBIとかPowerAppsの便利さが自分で分かってないだけなのかな…。うーん。
SfBBotの話
自分でがんばって作ろうとして挫折してたので非常に助かりました!!!めっちゃよかった~。開発者じゃないので、お作法系が分からず詰まってましたがこのセッションを受けたからには必ず作りきろうと思います。
座談会
印象に残ったのは、Office 365で障害が発生した時にどう伝える?というのと、Sharepointをファイルサーバーに出来るのか、という点。前者は、大声で伝えるとか電話で連絡するとかFAXするとか、昭和の古典的なソリューションで面白かったです。弊社の場合、Office 365に限らずシステムがよく落ちるので(…)「なんか調子悪いなー」「今メール見れないっぽいよ」「んじゃ飯行こう」で終わりそうです。。。Sharepointファイルサーバー問題は、現行のファイルサーバーの闇の深さによると思ってて、闇が深いとSI側も闇にとらわれる、というイメージ…。あとは使い勝手ですね。やっぱエクスプローラーでファイル一覧みたいじゃん、ブラウザ不便じゃん、と。僕はOD4B同期ツールを使ってドキュメントライブラリを同期する事でエクスプローラー閲覧を実現しているのですが、ドキュメントライブラリに大容量ファイルを置かれてたまに死にます。ファイルサーバーをそのまま移行というより、SPOのメリット・デメリットを把握した上で、ユーザーの使い方も変える前提で展開しないとクレームになると思います。
以上です。
初めての勉強会で馴染めるか不安でしたが、良い意味でセミナーみたいで、内輪なアットホーム感もありつつ初めての人を歓迎する雰囲気もあり、よかったです。座談会でディスカッション出来て、みんな同じような事に悩んでるんだな、と分かりました(Microsoftさんなんとかしてください。)
レポ書くのに写真1枚も撮ってない事に気づきました…。せめてお菓子くらいは撮影しとけばよかったです。次回参加時の反省にします。
Azure上に作成した仮想マシンを作業時だけサイズ変更して快適に利用する(その他仮想マシン作成後のメモ)
Azure上の仮想マシン、最低サイズのBasic_A0だと料金は約1000円/月なのですが、これだとまともに操作できないレベルに遅い。快適に操作するならBasic_A3くらいだが、約5000円/月くらいとなり辛い。
作業時以外はマシンをシャットダウンして課金を抑えるのもいいが、ADのような常時起動前提のサーバーの場合、長期間シャットダウンするとトラブルの元となるため、作業時のみサイズ変更をして終わったら元に戻すスクリプトを作成する。
powershellでログイン
スクリプトのみで自動ログインをする場合、こちらとなる。
$secpasswd = ConvertTo-SecureString "[パスワード]" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential ("[ID]", $secpasswd) Login-AzureRmAccount -Tenant "[テナントID]" -Credential $mycreds -ServicePrincipal
ただし上記は組織アカウント(xxx@テナント名.onmicrosoft.comのようなアカウント)を使った場合で、マイクロソフトアカウント(xxx@gmail.comとかxxx@yahoo.comとか、MS以外のアカウント)の場合、上記手順は使用できず、単純にLogin-AzureRmAccountで対話的にログインする必要がある。
ではマイクロソフトアカウントでAzureを契約(会社で契約しない限りそれが普通)した場合はどうなるか?以下のブログにある通り、最初にテナントを作成したのがマイクロソフトアカウントの場合、サブスクリプションもそれに紐づいているので、組織アカウントを共同管理者として設定する必要がある。
Azure PowershellでMicrosoftアカウントを利用してのAdd-AzureAccountについて https://social.msdn.microsoft.com/Forums/ja-JP/fd253f40-539a-46c0-8fd2-0500f8712918/azure-powershellmicrosoftaddazureaccount?forum=windowsazureja
サイズ変更
仮想マシンのディスク サイズを Azure PowerShell から拡張する方法 - Japan Azure Technical Support Engineers' Blog https://blogs.technet.microsoft.com/jpaztech/2016/04/18/azure-vm-disk-resize/
Azure 仮想マシンをPowerShellからスケールアップする - 浅草橋青空市場 http://asazure.hatenablog.jp/entry/2015/08/24/173456
を参照に
スケールアップ
$vmconfig = get-azurermvm -name [マシン名] -ResourceGroupName [RG名] $vmconfig.HardwareProfile.VmSize = "Standard_A3" $res = Update-AzureRmVM -ResourceGroupName [RG名] -VM $vmconfig if($res.StatusCode -ne "OK") {"StatusCodeがOKではありません"}
スケールダウン
$vmconfig = get-azurermvm -name [マシン名] -ResourceGroupName [RG名] $vmconfig.HardwareProfile.VmSize = "Basic_A0" $res = Update-AzureRmVM -ResourceGroupName [RG名] -VM $vmconfig if($res.StatusCode -ne "OK") {"StatusCodeがOKではありません"}
サイズ変更~マシン再起動までを実施するのでコマンド終了まで数分かかる。
余談:OS停止/起動
Azure PowerShell にて新ポータル (ARM) の VM を自動的に停止・開始・再起動する - Japan Azure Technical Support Engineers' Blog https://blogs.technet.microsoft.com/jpaztech/2016/02/23/vmstop-start-restart/
Stop-AzureRmVM -ResourceGroupName [RG名] -Name [マシン名] -Force Start-AzureRmVM -ResourceGroupName [RG名] -Name [マシン名] Restart-AzureRmVM -ResourceGroupName [RG名] -Name [マシン名]
メンバーサーバーなど使用しないとき以外はシャットダウンするマシンはこちらを使う
余談:OSデプロイ後の日本語化
OSデプロイ後は言語もタイムゾーンも全て英語で、細かい設定をいろいろ実施しなければいけないのですが…全てスクリプトで完結されている神がいました。ありがとうございます。
Azure IaaS 上に作成した Windows Server 2016 仮想マシンの UI を日本語化する | 焦げlog http://kogelog.com/2016/10/18/20161018-01/
Azure VM の日本語 UI を PowerShell で設定 at SE の雑記 http://blog.engineer-memo.com/2013/11/24/azure-vm-%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E-ui-%E3%82%92-powershell-%E3%81%A7%E8%A8%AD%E5%AE%9A/
余談:ADへの昇格
Windows Server 2016 で AD DS (Active Directory Domain Services) のセットアップ | blog.yottun8.com
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
AD DS のドメイン コントローラーへの昇格 | blog.yottun8.com
$password = ConvertTo-SecureString -String "[パスワード]" -AsPlainText -Force Install-ADDSForest -DomainName "almea.jp" ` -DomainNetbiosName "ALMEA" ` -ForestMode "WinThreshold" ` -DomainMode "WinThreshold" ` -SafeModeAdministratorPassword $password ` -DatabasePath "C:\Windows\NTDS" ` -LogPath "C:\Windows\NTDS" ` -SysvolPath "C:\Windows\SYSVOL" ` -CreateDnsDelegation:$false ` -InstallDns:$true ` -NoRebootOnCompletion:$false ` -Force:$true
余談:AADCのインストール
Azure AD Connect: カスタム インストール | Microsoft Docs https://docs.microsoft.com/ja-jp/azure/active-directory/connect/active-directory-aadconnect-get-started-custom
O365でアプリケーション登録→APIアクセスの続き
認証コード取得の自動化を検討
認証コードは取得から一定時間経過すると無効になってしまうので定期的に取得したい。前回書いた通り
- 以下のフォーマットで認証エンドポイントにアクセス
- https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=[クライアントID]&resource=https%3a%2f%2foutlook.office365.com%2f&redirect_uri={リダイレクトURL}
- このようなレスポンスがあれば成功
- https://localhost/myapp?code=[認証トークン]&session_state=[セッション情報]]
と、やりたいのはレスポンス先のURL(リダイレクト先URL)に含まれる認証トークン文字列の取り出してある。
Invoke-WebRequestで取得を試みる
Invoke-WebRequest -url "https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=[クライアントID]&resource=https%3a%2f%2foutlook.office365.com%2f&redirect_uri={リダイレクトURL}"
を実行し戻り値にリダイレクト先のURLが含まれていないか調べたが、存在しなかった。
"リダイレクト先 url 取得"はどの言語でも話題になっており、例えばURLステータスコードが302だからURLを追跡するなどの方法が書いてあったが、上記アクセスは200で返ってくるので追いようがない(というかリダイレクト処理じゃないし)
で、気づいたのが、これはリダイレクト先のWebサイトで開発を行い、ブラウザからのアクセスが発生した場合、code=[認証トークン部分]を自動的に取り出すようなプログラムを実装する必要があるとわかった。今回、ローカルのPC環境から実行したいだけなので、まさかこれだけのためにローカルにWebサーバー立ててプログラム開発するのも面倒なので、手動取得する事にした。
※ 認証API v2.0 だと302で返ってくるらしい
ExchangeOnlineにアクセス
認証コードは手で取る事にして、前回のブログの「4. プログラムからアクセス」でaccess_tokenをゲットします。
$response = Invoke-RestMethod -uri $url -Method Post -Body $body -ContentType $ContentType $response.access_token #> アクセストークン
このアクセストークンをヘッダーに含めてアクセスします。
$headers = @{ "Accept" = "Application/json" "Authorization" = ("Bearer " + $response.access_token) } $ContentType = "Application/json"
例えば、受信トレイの最新10件を取得するスクリプト
Invoke-RestMethod -uri "https://outlook.office.com/api/v1.0/me/folders/inbox/messages?$top=10" -Method Get -ContentType $ContentType -Headers $headers
例えば、JSONファイルの中身の予定を登録するスクリプト(詳細は別エントリで書きます)
Invoke-RestMethod -Uri "https://outlook.office365.com/api/v1.0/me/events" -Method Post -InFile ".\jsontest.json" -ContentType 'application/json' -Headers $headers
が実行できます。
こうなると、繰り返し処理していろいろやりたいところなのですが、アクセストークンには時限があるので定期的に再取得してやる必要があります。めんどくさ…。やっぱv2でアクセスしないといけないのか…。
O365でアプリケーション登録→APIアクセスしようとして
はまったわー
やりたいこと
- Office365を契約
- AzureADにアプリケーションを登録
- アプリケーションのアプリケーションID,秘密鍵を使ってアクセストークンを取得
- プログラムからアクセス
1. Office365を契約,AzureADにサインアップ
O365はE5を契約。
サインアップ後、裏でデプロイされたAzureADにアプリケーション登録しようとAzureクラシックポータルにアクセスするが、AzureADサインアップ時にエラーになる。
パターン1. サインアップでエラー
電話による認証、クレジットカードによる認証を進めたところ、サインアップでエラーになった。原因不明。
パターン2. 電話による本人確認でエラー
そんな事を繰り返していたら、電話認証で番号を入れたタイミングで「アカウントを確認できませんでした。サポートにお問い合わせください。 」というエラーが出るようになった。想像だが、同じ電話番号で何度も認証していたらこのエラーが出るのではないか。証拠として、適当な電話番号を入力したときはエラーが出ずに認証コード入力画面になった(その番号の人、すいません)
2. AzureADにアプリケーションを登録
AzureADにアプリケーション登録をする手順は3つあるようです。
- Azureクラシックポータルから登録
- Azureポータル(以前、プレビューと言われていたものから登録)
- Office 365 ユーザーとエンタープライズ ユーザーのサインインを可能にする – Microsoft ID プラットフォームから登録
1.は今までのセオリーだったもの。
2について。最近、AzureクラシックポータルからAzureポータルへの機能移転が進んでおり、旧来Azureクラシックポータルでやっていたアプリ登録もAzureポータルから出来るようになったようです。
左ペインのAzure Active directory -> アプリの登録 -> +追加からアプリを登録。適切な権限を付与してキーを作成する。ただし、この機能はプレビュー版なので動作が怪しい可能性があります。(今回は大丈夫だったぽい)
んで、3はいったいなんなの?という話ですが、どうやらMSは商用のOffice365も私用のOutlook.comも同じコードで開発できるよう、RESTのエンドポイントを統一し、組織アカウントでログインすれば商用O365を、個人アカウントでログインすれば、Outlook.com側を触るようなAPIを実装しているらしい。
v2.0 endpoint の OAuth を使った Client 開発 (Azure AD と MSA への対応) – Tsmatz
そのアプリ登録のフロントエンドが、上記リンクの「Microsoft ID プラットフォーム」というわけ。ここからアプリ登録すると、裏側の仕組みとしてはログインした組織アカウントのAzureADにアプリ登録されるだけ。しかも、現状では「Microsoft ID プラットフォーム」画面からはGraph API関連の権限しか付与できず、outlook APIの権限はコントロールできない様子。
将来的に、製品個別のAPIがGraph APIに統一されるのを見越せば、本命は「Microsoft ID プラットフォーム」なんだろうけど、現時点では特別にこれを使う理由はなさそうです。
認証API v1.0 と v2.0について
よくわかってないです。
- API エンドポイントが違う
- 使える機能が違う(ほんと?)
- v2.0 認証エンドポイント プレビューを使用した Office 365 API と Outlook.com API の認証 | MSDN
- 現時点では、メール、連絡先、予定表のみ
- GraphAPIだから、それだけしか使えないんじゃないの?
- Outlook API v1.0 と v2.0とは関係ない(ほんと?)
- なので、認証はv2.0を使うのがよさそう?
3. アプリケーションのアプリケーションID,秘密鍵を使ってアクセストークン(認証トークン)を取得
認証API v1.0での認証手順
- 以下のフォーマットで認証エンドポイントにアクセス
- https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=[クライアントID]&resource=https%3a%2f%2foutlook.office365.com%2f&redirect_uri={リダイレクトURL}
- このようなレスポンスがあれば成功
- https://localhost/myapp?code=[認証トークン]&session_state=[セッション情報]]
当初、リダイレクトURLとホームページURLを不一致としていたら、認証コードが取れなくてめちゃくちゃハマった。リダイレクトURLを"https://portal.office.com"に設定していたせいかもしれないが…。以下のようなレスポンスしか返ってこなかった。
ひとまずマニュアル通り、https://localhost/myapp宛にリダイレクトする設定にした。ここでもハマって、どこかのサンプルでhttp://localhost/myappをリダイレクト先に指定していたのでコピペしたら、実はhttpsでないと全て無効なURLとなってしまうらしいことが分かった。どこにも書いてないんですが…。
認証API v2.0での認証手順
Get Started with the Outlook REST APIs - Outlook Dev Center
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
- 以下のフォーマットで認証エンドポイントにアクセス
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=[クライアントID]&redirect_uri=[リダイレクトURL]]p&response_type=code&scope=[スコープ]]
スコープはこんな感じで指定する↓
v2.0 認証エンドポイント プレビューを使用した Office 365 API と Outlook.com API の認証 | MSDN
今回、自分で登録したカスタムアプリを認証API v2で認証しようとしたところ、ブラウザバーに
Application+[クライアントID]+is+not+supported+for+this+API+version.
という表記が返り、エラーとなってしまった。おそらく、アプリケーションにめちゃくちゃ権限を付与してしまい、その権限のうち1つが認証API v2ではノンサポだからではないか。…となると、認証APIのバージョンによって使える機能も違うという事?認証API 1.0専用の権限をアプリに付与してしまうと、認証API 2.0で許可されない?
ということで、認証API v1.0だけで進めることにします。
メモ:参考にした記事
- Office 365 API 入門 – Tsmatz
- Get Started with the Outlook REST APIs - Outlook Dev Center
- Using PowerShell and the Office 365 REST API with OAuth. – Ron Ben Artzi
v2が出て一年以内だからか、v1とv2が混在してるのでややこしい。
4. プログラムからアクセス
3.で取得した認証トークンを元に、postを投げてやる
$url = 'https://login.microsoftonline.com/common/oauth2/token' $Body = @{ "grant_type" = "authorization_code" "code" = [認証コード] "client_id" = [クライアントID] "client_secret" = [クライアント秘密鍵] "redirect_uri" = "https://localhost/myapp" "resource" = "https://outlook.office365.com/" } $ContentType = "application/x-www-form-urlencoded" Invoke-RestMethod -uri $url -Method Post -Body $body -ContentType $ContentType
結果、
token_type : Bearer scope : Calendars.Read Calendars.Read.All Calendars.Read.Shared Calendars.ReadWrite Calendars.ReadWrite.All Calendars.ReadWrite.Shared Contacts.Read Contacts.Read.All Contacts.Read.Shared Contacts.ReadWrite Contacts.ReadWrite.All Contacts.ReadWrite.Shared Directory.AccessAsUser.All Directory.Read.All Directory.ReadWrite.All email Exchange.Manage Files.Read Files.Read.All Files.Read.Selected Files.ReadWrite Files.ReadWrite.All Files.ReadWrite.AppFolder Files.ReadWrite.Selected full_access_as_user Group.Read.All Group.ReadWrite.All IdentityRiskEvent.Read.All Mail.Read Mail.Read.All Mail.Read .Shared Mail.ReadWrite Mail.ReadWrite.All Mail.ReadWrite.Shared Mail.Send Mail.Send.All Mail.Send.Shared MailboxSettings.ReadWrite Notes.Create Notes.Read Notes.Read.All Notes.ReadWrite Notes.ReadWrite.All Notes.ReadWrite.CreatedByApp offline_access openid People.Read People.ReadWrite profile Reports.Read.All Sites.Read.All Sites.ReadWrite.All Tasks.Read Tasks.Read.Shared Tasks.ReadWrite Tasks.ReadWrite.Shared User.Read User.Read.All User.ReadBasic.All User.ReadWrite User.ReadWrite.All expires_in : 3600 ext_expires_in : 0 expires_on : 1478335851 not_before : 1478331951 resource : https://outlook.office365.com/ access_token : アクセストークン refresh_token : リフレッショトークン id_token : IDトークン
権限めっちゃついてるw 自分でつけたんだけど…。
注意
サンプルコードに"resource"の指定がなかったため抜かすと、
"error":"invalid_resource","error_description":"AADSTS50001: Resource identifier is not provided.\r\nTrace ID
みたいなエラーが出た。エラーコード"AADSTS50001"でググると以下のURLがヒット(ppt注意)
Cloud Authentication Troubleshooting and Recipes for Developers
結論としては、resourceの指定は必要でした。
疲れたので今日はここまで。
Microsoft Tech Summit 2016に行ってきたメモ
行ってきました。
Microsoft Tech Summit|Microsoft
月並みな表現だけどエキサイティングでした。地に足の着いた技術と未来の技術がセットになってて面白かったです。
Day1
キーノート
- Security! Management! !Inovation
- セキュリティ担保したモバイル利用、devops、クラウド基盤を利用したリアルタイムモニタリングとかすごいよ
- 旧来型っぽい大企業でも採用して上手くいってるよ
- なので「うちの会社は無理そう…」とかないし
- AIはヤバイ
- botもくる
- エンタープライズで導入始まってる
- どっちもMSで基盤持ってる
- HoloLens日本で売るよ
- 詳しくは動画参照:【Tech Summit】KEY001 いま、企業の IT が求めるセキュリティと管理、そして IT ヒーローによるイノベーション - YouTube
- 詳しくはまとめ記事参照:Microsoft Tech Summit基調講演:マイクロソフトは「セキュリティ」「管理」「イノベーション」で企業のデジタルトランスフォーメーションを強力に支援 (1/2) - @IT
11:30-12:20 Office 365 で実現する一歩先の情報漏えい対策(SEC002)
- 最近のクラウド時代の流行り→CASB:Cloud Access Security Broker
- クラウドに侵入されたら検知したいけど、ふつーの環境だと平均200日くらい経ってから気づくのでやられたい放題
- そこでOffice 365 Advabced Security Management
- 怪しいOffice365ユーザーを見つけて、管理者に通報する機能
- ありえない移動とか、大量のファイルのダウンロードなどを検知
- 管理者がやることはたった3つ
- 高度なセキュリティの管理を有効にする
- アラートメールが来たらポータルで確認する
- 脅威と認められたらユーザーを制御
- Cloud App Security
- ライセンス
- Advanced Security Management:E5付属。単品で300円/人
- Cloud App Security:EM+S E5付属。単品で売ってる?
- 組織にE3とE5のユーザーが混在してたりする場合はどうするんだろう?
- SRに略(★Todo2)
- アクティビティログ:180日保持 アラート:永久保存
- アクティビティログはエクスポート可能
- 使用できるOffice365ライセンスはE5
12:45-13:35 Azure ネットワーク設計と運用のツボ(DEP005)
- 多分このセッションはスライド資料の方が理解が深まる
- パブリックIPなくても中から外に繋がる。
- サブネットに対してNSGをつけられる。(仮装マシン個々につけてもいいがサブネットにつける方が自然
- NSGないとつるつる
- 絶対にNSGを削除しないでね
- ユーザー定義ルート
- サブネットの内側に定義できるルーティング設定
- 複数NICマジ無駄。オンプレと違って倍速とかならない
- リージョン間の距離
- VNETピアリング
- 複数のVNETを簡単に接続できる
- 旧VNETと新VNETも繋げちゃう
- なので旧でVNET組んだから移行できない…とかはない
- 1GB一円
- AXN
- 超早い。40~50Gbps
- そのうち全部のIaaSマシンに乗りそう
- azure内の通信はMS内で閉じるが、CDN宛のものはインターネット出る
- azureのipは毎週水曜日にリリースされている
- VPNゲートウェイでBGPサポートしたから自由度増えた
- ただしStandard以上
- プラン説明とか→About VPN Gateway| Microsoft Azure
- インフラエンジニアもJSONでテンプレ作って展開しよう
- そんでバージョン管理してInfrastructure as Code (IaC)
- canary vm
- ネットワークのサポートは絶対入ってね〜!!!
14:00-14:45 アイデンティティのMVPが語るAzureADとアプリ連携の勘所(SEC020)
- ID管理を導入するにあたって注意すべき事
現実的な対応
- 識別子
- アプリケーションの認証プロトコル
- OIDC/SAMLじゃないっす対応
- 対応すまで待とう、は無理なので…
- パスワードSSO
- ブラウザにアドオンを入力し、ID/Passwordを代理入力
- Chormeで自動でID/Pass覚えるのとあんま変わらん
- ログインURLが静的じゃないとだめなど製薬あり
- ブラウザにアドオンを入力し、ID/Passwordを代理入力
- Azure AD WAP
- Kerberosじゃないとだめ、などの制約
- AzureADWAP + PingAccess連携(ヘッダー認証)
- WAM連携
- パスワードSSO
- などに逃げる
- WAN連携とヘッダー認証がよくわかってなかったので勉強する(★Todo3)
- ネットワークの問題
- 拠点ネットワークを絞り込み、無理な場合は例外ユーザーとか作る。
- マイナー拠点対応、偉い人対応、みたいな
- 拠点ネットワークを絞り込み、無理な場合は例外ユーザーとか作る。
- デバイス
- 聞きそびれた
表1
AAD側 | - | アプリ側 | - |
---|---|---|---|
UPN | 123@foo.jp | LoginID | emp1234 |
displayname | 山田太郎 | displayname | 山田太郎 |
ExtensionAttribute1 | emp1234 |
- 表2
属性 | SAMLトークン属性 |
---|---|
UPN | nameid-fornat:unspecified |
nameid-fornat:unspecified | |
Onpremisessamaccountname | nameid-fornat:WindowsDomainQualifiedName |
ExtentionAttribute1-15 | nameid-fornat:emailaddress |
extractmailperfix() | nameid-fornat:emailaddress |
15:15-16:05 他と同じOffice365で満足ですか?Office365のAPIでオリジナルサービスに進化させる(APP009)
- AzureADにアプリケーション登録
- 組織で開発中のアプリケーション
- クライアントID と クライアントキー取得
- アプリケーションのアクセス許可、デリゲートされたアクセス許可
- HTTP Request投げる → authコード取得
- でAPI叩けるよ
- 必要な権限だけ付与しないと、怪しいfb連携アプリみたいになっちゃうよ
- バッチ処理の権限
- 最近企業にウケるもの。Bot,AI,IoT。
- Cognitive service,WebJob使って楽に面白く
- APIでオリジナルサービスに進化させる
- Exceed1の事例
- 英単語勉強アプリ
- Bossから来る英文メールの頻出単語をリストアップし、勉強できる
- API利用のコツ
- Q1. outlook.とgraph.のAPIが混在している
- Q2. SfBのドキュメントなくない?
- LUIS超楽
- 関連:CogBot_CognitiveBotOverview_20161020 - Docs.com
16:30-17:20 AzureADでクラウドの認証基盤を統合したいけど、IDの安全性はどうする?(SEC008)
- あんまりメモってない
- 後でスライド期待
17:45-18:35 Cloud First、Mobile FirstにおけるID管理とは?-人(Identity)から始まるアクセス制御-(SEC004)
- IDを分散させるとセキュリティが低下する
- AzureADP使えばIP制限可能。アプリ毎にアクセス制御も可能
- Intuneは進化中でiOSのIMEI登録して許可したデバイスからしかアクセスできないように出来る
- すんませんあんまメモってない
- ID系のセッションは後でまとめよう
Day2
9:00-9:30 PowerShellの新しい相棒 Visual Studio Code(APP017)
- 'code .'でvscode起動
- 拡張紹介
- vscode-pandoc
- markdownをpdfとかHTMLにする
- PlantUML
- UMP図を書く
- vscode-pandoc
- デバッグにはlanuch.jsonというのが必要だが、自動で作成されるので意識しなくてもよい
- PSISE開発チームメンバーとVScodeの開発チームメンバーが同じ
- 日次でアップデートしてるよ
- 日本からのフィードバック待ってるよ
- SJIS開けないのどうにかしてほしい
9:55-10:25 お客様とパートナー様のOffice365導入・定着化を支援するFirstTrack Center(PRD013)
- EOPとかATPにも対応している。Notesからの移行についても対応している(IMAPとは別で)
- その他は知ってる事でした
10:50-11:40 Office365におけるID統合とアクセス制御のベストプラクティス(PRD004)
- オンプレ組織とO365ディレクトリ同期のデザインパターンについて
- 知ってる事だったけど、空ですらすら話せない(考えないと話せない)のでもうちょい浸透させよう
- 利用リージョンが分かれるとき、最も近いデータセンターに接続される
- 例えばO365日本テナントを米国で利用する場合、米国のCDNを引いて米国のO365フロントエンドにアクセスしバックエンドのMSネットワーク経由でデータを取り出す
- よってインターネット帯域の消費はしない
- ただし、O365ポータルとExOLのみ。SfB,SPOは近くのサイトに接続。
- Onedriveはどうなんだろう…?
- SRに(★Todo4)
- Office365への他テナントへのアクセス制御もうすぐ来るぽい
12:00-12:45 [ランチ付き] Azure IaaS 応用編~実務で使えるVMとPaaSの組み合わせ~(SNR001)
- ごめーん知ってる事ばっかりだった
13:10-14:00 プロトコルマニアックス~ OAuth 2.0/OpenID Connect/FIDO 2.0/SAML 2.0 違いと用途(SEC010)
- SAML 2.0
- RP Initiated
- IdP Initiated
- RP Initiatedがよく使われる。最初にAppにログイン試行する方法。
- OAhth 2.0
- SAMLとOAuthの違い
- 情報を出すのがIdPか本人か
- OAuthは認可をするプロトコルなので、アプリケーションは不安
- OIDC
- 2014年に登場
- OAuthにユーザーの認証機能を組み込んだもの
- OAuth2.0 + ID Token
- 企業の話
- 企業だからといって勝手にSAML2.0で個人情報出していいのか?OIDCで個人に確認を取って出すべきではないのか。
- FIDO 2.0
- 生体認証とかでサービスを使いたい
- 「パスワード以外の選択肢」スライドが素晴らしい。
- "パスワードはすぐ盗まれる"と言葉で言っても、こういうスライド1枚の破壊力
- パスワードとPINの違い
- まとめ
14:25-15:15 クラウドで守る! Exchange Online の最新セキュリティ対策(PRD005)
- EOP/ATPの話
- だいたい知ってた
- EOP新機能:Anti-spoofing protection
- EOPを通ると自然に有効になる。去年くらいから実装。
- 怪しげなメールにはプレビュー画面でNoticeする。
- 詳しくはこちら→How antispoofing protection works in Office 365 – Terry Zink: Security Talk
- EOP新機能:Zero-hour Auto Purge: ZAP
- EOPがスパムと認定した後でも、過去にユーザーが受信したメールをさかのぼって迷惑メールフォルダに移動する or 削除する
- ただし未読のメールのみ
- ATP
- URL Trace機能
- 現時点ではリストベースの判断。
- マジかよ知らんかった
- 今後は、実際に開いてページの中身を確認する(Sandbox)。動的であるので安全だが、ちょっと遅いかも?Linked Content Detonationというらしい
- 現時点ではリストベースの判断。
- Dynamic Delivery
- 今までだとATP通るのに5分~10分かかってしまう。これからは本文だけは送って添付ファイルは後から送る機能
- これ欲しかった
- 今までだとATP通るのに5分~10分かかってしまう。これからは本文だけは送って添付ファイルは後から送る機能
- URL Trace機能
- ATPの拡張
- ExOL以外にも広がってくよ~
- 値段変わらないのかな?
- ExOL以外にも広がってくよ~
- DKIM署名対応
- Q1. ATPって送信元によってATPする、しないを選べないの?
- A1. 送信者が組織内のメールだとATPされない。それ以外だと問答無用でされる。
15:40-16:30 詳説 - Rights Management Services / Azure Information Protection(SEC016)
- RMSの話
- それ以外は知ってる事でした
15:40-16:30 Xamarin と Azure で、超効率的にクラウドと繋がるモバイルアプリを作ろう!(APP005)
16:55-17:45 OMS Log Analytics によるビッグデータログの分析方法の解説と実演(DEP002)
- 最近インフラやってないけどSCCMとOMSでこういう事出来たなら速攻導入したかった
- Sandbox環境もあるので是非
- URL忘れた
18:10-19:00 条件付きアクセスを徹底理解 - Azure Active Directory で実現する場所とデバイスの“条件付きアクセス制御”-(SEC007)
- 他のID系のセッション出たので知ってる事ばかりだった
18:10-19:00 エバンジェリストが注目のこの人と語る IT キャリアの多様性と未来(SPL005)
- コント…?
- 面白かったです
参加したセッションまとめ
- ID系
- アクセス制御
- Day1:16:30-17:20 AzureADでクラウドの認証基盤を統合したいけど、IDの安全性はどうする?(SEC008)
- Day1:17:45-18:35 Cloud First、Mobile FirstにおけるID管理とは?-人(Identity)から始まるアクセス制御-(SEC004)
- Day2:10:50-11:40 Office365におけるID統合とアクセス制御のベストプラクティス(PRD004)
- Day2:18:10-19:00 条件付きアクセスを徹底理解 - Azure Active Directory で実現する場所とデバイスの“条件付きアクセス制御”-(SEC007)
- デリバリ
- Day1:14:00-14:45 アイデンティティのMVPが語るAzureADとアプリ連携の勘所(SEC020)
- 仕様
- アクセス制御
- O365系
- App
- Day1:11:30-12:20 Office 365 で実現する一歩先の情報漏えい対策(SEC002)
- Day2:14:25-15:15 クラウドで守る! Exchange Online の最新セキュリティ対策(PRD005)
- Day2:15:40-16:30 詳説 - Rights Management Services / Azure Information Protection(SEC016)
- Dev
- Day1:15:15-16:05 他と同じOffice365で満足ですか?Office365のAPIでオリジナルサービスに進化させる(APP009)
- Day2:9:00-9:30 PowerShellの新しい相棒 Visual Studio Code(APP017)
- Ope
- Day2:9:55-10:25 お客様とパートナー様のOffice365導入・定着化を支援するFirstTrack Center(PRD013)
- App
- Azure系
- Day1:12:45-13:35 Azure ネットワーク設計と運用のツボ(DEP005)
- Day2:12:00-12:45 [ランチ付き] Azure IaaS 応用編~実務で使えるVMとPaaSの組み合わせ~(SNR001)
- その他
まとめ
- はらへった
- 近くにコンビニほしかった
- 2日で6万円の元取るためにレッドブルとモンスター飲みまくった
- 5本飲んだので1000円分
- OneNoteっていうかSurfaceのペンをもっと使おうと思った
- ID系出過ぎた
- 全然関係ないセッションにもっと出ればよかった
- 内容濃かったから腹落ちさせて整理展開しないとな~
関連
Visual Studio CodeでPlane Text(.txt)で自分独自記法のハイライト表示
Sublime Text - Plain Text(.txt)で自分独自記法のハイライト表示 - Qiita
と同じく、僕もメモ帳ベースで自分独自記法のTodoリストを使ってます。
サクラエディタだとこんな感じ。
VSCodeでの独自シンタックスハイライト方法を調べてみました。
マニュアルなど
に載っています。簡単にまとめると
- tmLanguageファイルの用意
- VSCode用にコンバート
- VSCodeにインポート
となります。では1.から行きます。
1. tmLanguageファイルの用意
多分これが一番めんどくさいのですが、自分独自記法のtmLanguageファイルを用意します。サクラエディタだと簡単に書けるのに…。
tmLanguageの作り方の詳細は別でまとめるとして、今回は
に投稿されているソースを元にコンバートします。
※ メモ:tmLanguageファイルの書式
TextMate Manual » Language Grammars
2. VSCode用にコンバート
用意したtmLanguageファイルを使用してコンバートをします。手法は最初のVisual Studio Code Colorizersに載っています。作業の前に"Yeoman and the VS Code Extension generator"というものをインストールしなければいけないです。
The Yo Code Visual Studio Code Extension Generator
さらに、"Yeoman and the VS Code Extension generator"をインストールするために、npmというNode.jsのパッケージ管理システムをインストールしなければいけないようです。
How to Install Node.js® and NPM on Windows - Treehouse Blog
これらの準備が整った後、
yo code
でコンバートを開始します。参考までに画面ショットを載せておきます。
ここでの設定なのですが、tmLanguageファイル中のfileTypesに準拠しないと、コンバートは成功するもののVSCode起動時に正常にパッケージを読み込んでくれずシンタックスハイライトが効かない状態となります。
<key>fileTypes</key> <array> <string>log</string> </array>
おそらく、生成されるpackage.jsonとsyntaxes配下のファイル紐づけの問題かと思いますが、詳しいことは分かりませんでした。
3. VSCodeにインポート
実行したフォルダ直下に以下のような言語パッケージが生成されるので、
それを
%USERPROFILE%\.vscode\extensions
に配置してVSCodeを再起動します。
結果
ひとまず、シンタックスハイライトが効いていることを確認できました。この状態になれば
%USERPROFILE%\.vscode\extensions
配下のtmLanguageファイルを直接いじって色を変える・ワードを追加するのもOKかと思います。おかしくなったら言語パックをアンインストールして本手順を1から実施します。
サクラエディタ使いがVisual Studio Codeを使い始めた
理由はいろいろありますが使い始めました。
モダンなエディタを触りたい
2000年代前半のテキストエディア全盛時代よりサクラエディタでメモ書き~スクリプト開発してきました。2000年代後半にIDEが流行り始めた時も、開発者ではない・インストールに手間がかかる・重いなどの理由でテキストエディタを使い続けてきました。
そして2016年。Windowsに標準でIDE(Powershell ISE)が装備され、次世代テキストエディタ(sublime text,Atom)が登場し、軽くて無料のIDEが流行り始めた今、さすがにテキストエディタ一択ではいかんでしょということで時代についていく道を選択しました。
選んだもの
Visual Studioが無料ではありましたが、そこまでがっつり開発しない & 全機能を使い倒せる自信がなかったため、テキストエディタベースのものを選択。MSに親和性のある仕事をしているってことで、Visual Studio Codeを使うことにしました。
VSCodeのいい所
軽い
文字を打つのにストレスではない。これが一番大きい。少なくとも触った感触はサクラエディタと同等以上ではないといけなかったので、これは必須条件でした。
マルチプラットフォーム
Windows,Linux,MacOSで同じ操作性。サクラエディタを使ってて一番困ったのは、他のOSで全然動作しない、ということでした。MacOSを使っている時期に、Windowsエミュレーター上でがんばって動かしてたことはあったけど…。無理やり。
モダン
インテリセンス対応、シンタックスハイライト対応、gitへのアップロード対応など。つまりVisual Studio Codeについていけば、自然と最新を追っていける…?
将来性
MSが見てるので、いきなりぽしゃったり明後日の方向に行くことはないかな、と。dropboxやEvernoteなどの事例もあり、当初良くても数年後に斜陽になっている製品に乗るのが怖い今日この頃です。
今のところ実施した設定など
コマンドパレットをcmd.exeではなくpowershellで開きたい
Plane Text(.txt)で自分独自記法のハイライト表示
公式の方は基本的な文字列操作から書いてあるので覚えるまではここを参照。