迷走ITProですわな~

ITPro駆け出しによるブログ。ゆるくいきます

JICS 2017 振り返り

予め記載させて頂くと、この記事はあまり技術的な話ではないです。

これですね。参加してきました。
※仕事の都合でAM中のセッションは聞けず

nosurrender.jp

AD FSを入り口として「Digital Identity」領域にハマって1年半ぐらい経ちますがこの領域の動向は非常に興味深いです。 改めての部分もありますが、面白かった内容を掻いつまんで記載していきたいと思います。

1. SNS IDを活用したB2C向けのID基盤

元々エンタープライズ領域ではMicrosoftのADが非常に高いシェアを誇っていましたが、クラウド・モバイル活用により社員のIDの在り方を改めて考え直す必要が出てきています。 また大学などの教育機関でも多くの場合、所属する学生に対してなんらかのIDを払い出してサービスを提供している形態になってきています。
しかし、普段の生活においてエンドユーザーはそれらのIDを必要としません。FacebookやLINE、インターネットショッピングに組織から払い出されたIDは使えません
利便性だけを考えるとFacebookやLINEに登録しているID(個人ID)と組織のIDを完全に同一のものにするのが理想的ですが、現在の状況を考えるとまだまだ難しいです。(プライバシー面(個人側)や、セキュリティ面(組織側)で)
そこで、一歩引いて組織から払い出されるIDと個人が利用しているIDを紐づけることで利便性を向上させる動きが出てきています。(Azure AD B2C + LINE ID等)
組織間コラボレーションを目的としたAzure AD B2Bというサービスもあるように、IDはもはや一つの組織の中で閉じるものでは無くなってきています。
将来的には個人IDで、自分に必要なすべてのサービスを利用できる日が来るかもしれませんね。

2. トラストフレームワークの基本と今後の適用分野

この業界でトラストフレームワークと聞くと真っ先に思いつくのがPKIでしょうか。これも基本的には考え方が同じです。
IdPとRP/SPが乱立する中、それぞれのID Federation確立時にIdPやSP/RPをセキュリティ面等でアセスメントするのは非常に非効率です。
そこでそれらのIdPやSP/RPが信頼に足るかを第3者機関によるトラストを付与しようという働きかけですね。
既に欧米では始まっている動き(TFPAP等)ですが、日本ではまだ大学のネットワークで発足しているGakuNinぐらいようです。
学術認証フェデレーション 学認 GakuNin
政府としてもトラストリポジトリの重要性を認知させるため、試作段階ものがあるようです。(XMLベースで作成されており、システムからの読み取りも容易な形式)
https://trustlist.openlabs.go.jp/
これらの目的はあくまでも組織間ID Federationの活性化なので、これ自体が営利目的に運営されるのは避けてもらいたいですが、仕組みとしては経済の活性化に繋がる取り組みかと思います。

3. 基礎から OAuth と OpenID Connect

OAuthとOIDCのプロトコルの詳細セッションなので内容は下記参照。
デジタルID最新動向(1):「OAuth 2.0」の基本動作を知る (1/4) - @IT

以前から広く言われていることですが、OAuthは認可のプロトコルであり、認証に使うのはセキュリティ上危険であることを改めて強調されていました。

4. Achieve Balance between Security, Usability and Privacy with Invisible Identity

企業側はセキュリティを中心にID基盤を構想しますが、過度なセキュリティのために利便性を欠いた環境になっているとエンドユーザーはそれを回避したがります。
例えば・・・

  • 多数のID・パスワードの設定 → 全て同一にする(個人で利用するサービスと同一Passを利用)
  • パスワードの定期的な変更の強制 → 覚えられないからメモに書いておく

など、これらは企業が過度なセキュリティを押し付けた結果、セキュリティホールが生まれていることになります。
結果として、セキュリティは強まるどころか弱まっている(目的と真逆の結果になっている)ことを認識すべきだと思います。
ユーザーエクスペリエンスの向上に関しても、ディズニーで利用されているバンドを例に挙げて解説されていました。
もしTDRに導入されたら “開園ダッシュ” がなくなる!?「ディズニー・ワールド」MyMagic+ 完全ガイド(1/5) - ディズニー特集 -ウレぴあ総研

5. Be Self Sovereign! Block Chain+Identityが目指す姿

Identityを自分で管理できない世界は非常に危険なのではないか。(Yourdentity
近年ID Federationの普及により、個人IDの世界でも利便性は向上しきていますが結局のところIdPに自分のIdentityを握られているのが現状です。(FacebookGoogle等)
仮にFacebookGoogleアカウントが停止してその復旧が困難な場合、SAML、OAuthやOIDCで繋いでいる全てのIdP、SP/RPも利用ができなくなります。(組織IDの場合、望ましい状態かと思いますが)
個人IDの最終コントロール権は手元に残さないと、IdPの一存で個人のIDが停止されてしまうことを認識しましょう。
そして、それを解決する光となるのがBlock Chainによる分散台帳技術かもしれません。(Mydentity

今後のDigital Identity領域が楽しみです。

SharePoint Onlineにおける通知機能の補完方法

SharePointの通知にはリボンメニューから設定できる「個人用通知」と、SharePoint Designerで設定する「ワークフローのメール送信」がありますが、いずれも実際に使ってみると少し機能が足りないと感じることが多いです。
※個人用通知では、全く足りないですが・・・

私が過去に不足感を感じた用途は以下になります。

  • ワークフローを起動するタイミングが「アイテムが作成されたとき」or「アイテムが変更されたとき」しか設定できない f:id:michaelowen628:20170816205008p:plain
  • 匿名ユーザーの投稿や編集では、ワークフローの起動に失敗する

この問題に対応するために別途タスクスケジューラに対して条件に合うアイテムを「更新」するスクリプトを登録することで、SharePoint Designerで設定したワークフローを起動するようにして実現していることも多いかと思います。

オンプレミスのSharePoint Serverであればそれでいいのですが、上記の方法ではSharePoint Onlineに対応することができないです。
そこでSharePoint Onlineにおいて、上記問題を解決する方法を2点ご紹介させて頂きます。

  1. Office 365 サイト用の Azure Web ジョブ ("タイマー ジョブ") の使用の開始 | MSDN f:id:michaelowen628:20170816212652p:plain

  2. オンデマンド Flow による新しい SharePoint 通知 – MS Japan Office 365 Tech Blog f:id:michaelowen628:20170816212948p:plain

それぞれのソリューションを簡単に比較すると以下のようになります。

【価格】

  • Azure Webジョブ + SharePoint Designer
    Azure WebジョブはAzure App Serviceのコストがかかってきます。 ただ、他で利用しているAzure Web Appにのせることも可能です。

  • Microsoft Flow
    制限はありますが、多くのOffice 365ライセンスにプランが含まれています。
    プラン | Microsoft Flow

【機能】

  • Azure Webジョブ + SharePoint Designer
    SharePoint Online内で完結するのであれば、基本的にやりたいことはできます。
    Exchangeや、Skype、Dynamics等他のMicrosoft アプリと連携すると不利。
    ※Azure Webジョブ側にアップロードするスクリプトにコードを記載すれば多くのことを実現できるが、基本的にはSPDのトリガー補助を想定

  • Microsoft Flow
    SharePoint Online内で完結する場合、SPDのワークフローと比較して複雑なフローになりがちですが、機能面ではSPDにほとんど追いついていると考えられます。
    他のOffice 365アプリ等と連携する場合、とても強力です。

【運用】

  • Azure Webジョブ + SharePoint Designer
    SharePointリストと連携する等、実装を工夫することで、事前に想定される運用作業は軽減可能です。
    しかし根本的な実装面で改修が必要な場合、SPDスクリプトの理解及びその環境が必要になります。
    Powershell+CSOM等のスクリプトをオンプレミスで利用している場合、参照するDLLと合わせてアップロードすることでSharePoint Onlineでも同じスクリプトを利用可能です。

  • Microsoft Flow
    フローが複雑になりがちですが、ブラウザのみで比較的容易に編集可能です。   Json,zip形式でインポート/エクスポート可能ですが、当然ながらオンプレと異なる実装となります。

将来的にMicrosoftは、SharePoint DesignerとInfopathの開発を打ち切るとアナウンスしていることからも、Microsoft Flowの利用にも慣れておきたいところですね。

なお、今回はよく直面する問題として通知機能を中心に記載していますが、このソリューションはSharePoint Onlineに対してあらゆるスケジューリングタスクを実現してくれますので、応用範囲は多岐に渡ります。
是非色々試してみてください。

Azure上でNested Virtualizationが利用可能に

最近色々ゴタゴタしていたので久しぶりの投稿になります。

タイトルの通り、Azure上のVMNested Virtualizationが利用可能になったようですね。
(※一部のサイズに限定されているようですが)

azure.microsoft.com

オンプレでは、Windows Server 2016から既にこのNested Virtualization機能は利用できるようになっているので、Azureの仮想化基盤が追いついてきた形になります。
ちなみにオンプレの場合は、Hyper-Vホスト側で以下のコマンド実行が必要だったのですが、Azureではどうなるのでしょうか・・・

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

まぁ何はともあれ、これでAzure上でHyper-V周りの検証も実施できるようになりました。Docker for Windowsも内部的にはHyper-Vの機能を利用することになるので、今まではAzure上のVMで利用することができなかった仮想化周りの検証が捗りますね。

docs.docker.com

SharePoint Server 2013 利用状況ログについて

ちょっとSharePointネタで最近ハマったものを投稿します。

SharePoint Server 2010から移行する場合等は特に注意していただきたいのですが、SharePoint 2013から利用状況分析機能が大きく変化しています。
SharePoint 2010でアクセス解析等を行う場合、Web Analytics Serviceを使っていたと思いますが、こちら2013以降廃止されています。
SharePoint 2010 から SharePoint 2013 への変更点

で、2013以降代わりに利用状況レポートがあるのですが、これが少し曲者です。 検索クエリの分析等は問題なくできるのですが、利用状況のレポートをダウンロードしても数値がカウントされていない・・・?
f:id:michaelowen628:20170513150923p:plain

色々調べていると、どうやらStandard Editionでこのレポートは使えない!?との情報有り。
公式ブログ見てもUsage Reporting and LoggingUsage AnalyticsYesになってるけど大丈夫か(笑)
SharePoint 2013 onpremise edition comparison chart – SharePoint & Cloud

で、さらに色々調べているうちに以下のようなブログも発見。
SharePoint 2013 – Usage Analytics (the story) – SharePoint Support Blog PowerShell Script to Workaround No Data in SharePoint 2013 Usage Reports | The Frog Pond of Technology

ブログに記載の下記コマンドを実施してReceiverを追加してみたところ、確かにアクセス数が記録されるようになりました。
※コマンドの英語の部分を一部日本語に変更する必要がありました。

$ad = Get-SPUsageDefinition | where {$_.Name -like”分析の利用状況”}
$ad.Receivers.Add(“Microsoft.Office.Server.Search.Applications, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”,”Microsoft.Office.Server.Search.Analytics.Internal.AnalyticsCustomRequestUsageReceiver”) 
$ad.EnableReceivers = $true

$pd = Get-SPUsageDefinition | where {$_.Name -like”ページの要求”}
$pd.Receivers.Add(“Microsoft.Office.Server.Search.Applications, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”, “Microsoft.Office.Server.Search.Analytics.Internal.ViewRequestUsageReceiver”)
$pd.EnableReceivers = $true 

ただMSのサポートにも問い合わせたところ、やはりこの機能はStandard CALでは使えないものとなっているようで、上記ブログの手順で有効化した場合は未サポートとなる旨の回答を頂きました。
ご利用に際してはご注意下さい。

Powershell DSCによるSQL Serverのインストール 【Part 2】

Part 1はこちら t-wakabayashi.hatenablog.com

少し間が空いてしまいました。
前回は、DSCリソースモジュールの配置まで実施しました。
このモジュールですが、実際に配置されたフォルダは以下のパスにあります。
C:\Program Files\WindowsPowerShell\Modules\xSQLServer
f:id:michaelowen628:20170420231427p:plain

中にはDSCリソースは勿論、Examplesフォルダの中にConfigrationのサンプルが記載されたものも入っています。
今回は、基本的にそのサンプルをそのまま使って流してみます。
C:\Program Files\WindowsPowerShell\Modules\xSQLServer\6.0.0.0\Examples内にあるSQLPush_SingleServer.ps1を使います。

中はこんな感じですね。
f:id:michaelowen628:20170420232003p:plain

流石にそのまんま完全に使うことはできず、以下のように環境依存している部分を見つけて修正してあげる必要があります。

  • 構成対象のコンピュータ名
  • mofファイルの出力先
  • SQL Serverのインストールディレクト
  • OS,SQLメディアのドライブ
  • 管理者、サービスアカウント情報

また、環境の面では構成対象のマシンに対して以下のような最低限のセットアップはしてあげます。

ワークグループの端末に対して構成を行うことも可能ですが、以下のような追加の設定が発生します。
t-wakabayashi.hatenablog.com

では、ここまでで準備は整ったのでまずmofファイルの生成を行います。
f:id:michaelowen628:20170420234504p:plain

エラー(;‘∀’)
管理共有を利用してDSCリソース送り付けるためのFWが空いてなかったようです。。。空けました。
f:id:michaelowen628:20170420234618p:plain

再トライ!
f:id:michaelowen628:20170420234726p:plain いけましたね。構成予定のマシンにもDSCリソースがコピーされていることも確認できます。

それでは、実際のConfigrationを実行!( ˘•ω•˘ ) f:id:michaelowen628:20170421000738p:plain

再起動されて・・・状況追えんのかーい!
冪等性が担保されているので、もう1回実行。。。
f:id:michaelowen628:20170421001822p:plain

完了しました。
構成対象の状態も軽く確認。
f:id:michaelowen628:20170421002153p:plain
できてそうな雰囲気! ちょっと、Test-DSCConfigrationが上手く動いていないようなのですが構成は成功しているような気がします(笑)

とりあえずお試しということで、細かいところはすっ飛ばして実験してますが、 実際に利用する際にはカスタムDSCリソースを自分で修正・加工できるぐらいの状態でやりたいですね。
また後日、SQLSharePointぐらいは自動で構成するシナリオで記事を書かせて頂こうかと思います。

Powershell DSCによるSQL Serverのインストール 【Part 1】

PowerShell DSCってなんぞや?の方はこちらを一読ください。 www.atmarkit.co.jp

クラウドやDocker等、開発者にとって検証環境を用意するのがどんどん楽になっているのは間違いないですが、構築・構成管理の自動化技術はまだまだ一般的なWindows SIの現場に浸透しているとは思えません。 特に私のような従来のオンプレSIでバリバリやってる現場ですと、結構無縁の世界に生きてます(笑)

そんな私ですが、興味はあるのでこのPowerShell DSCでInfrastructure(Configration) as Codeの扉を叩こうかと思った次第です。
とりあえずタイトル通り、SQL Server 2014をWindows Server 2016に展開してみようかと思います。
SQL Server 2016じゃない理由は後述

ちなみに勉強ネタとしては以下2点。
日本語で素晴らしい記事を書いてくださっている方がいらっしゃったので熟読させて頂きました。 あとは実際MVAのデモで雰囲気を掴んでTryあるのみですね。(※英語ですが耳がついていけなくても十分参考になります)

www.adventar.org mva.microsoft.com

一先ず、DSCお試しなのでPUSHモードで実験します。
DSCに関する構成は既定のまま
f:id:michaelowen628:20170408231313p:plain

で、SQL Serverに関するDSCリソースは既定で配置されていないので、GitHubからとってきます。 さすがにお試しで、カスタムDSCリソースは書けません。。。MSのPowerShellチームを中心にオープンに開発されているようなので利用させて頂きます。 ※これが現時点でSQL Server 2016のインストーラに対応していないようなので今回は2014になります。(SSMS分離とかね)

DSCリソースの配置ですが、Linuxのパッケージ管理apt-getみたいな形で管理する方法と、オフライン環境において自分で配置する方法があります。

・オフライン環境
SQL ServerのDSCリソースファイルは以下なので、ダウンロードして展開したものをそのままC:\Program Files\WindowsPowerShell\Modulesに置きます。
GitHub - PowerShell/xSQLServer

・オンライン環境
以下のコマンドで自動配置・更新が可能です。

Find-Module -name xSQLServer | Install-Module
Get-DscResource *SQL*

こんな感じ
f:id:michaelowen628:20170408232525p:plain

次回はこのDSCリソースを使って、シンプルなSQL Serverを展開してみます。

Let's Encryptを使ってADFS用の証明書を発行 【Part 3】

これの最終回になります。
t-wakabayashi.hatenablog.com

まずは、AAD ConnectウィザードからADFSで利用している証明書更新作業を行います。(WinRMでの構成を実施している場合のみ)
※WinRMを構成していない場合は、各ADFS,WAPの証明書を頑張って更新する必要があります。

f:id:michaelowen628:20170329233749p:plain f:id:michaelowen628:20170329233752p:plain f:id:michaelowen628:20170329233756p:plain

AAD Connectから一発でいけるのは楽でいいですねホント。 以前は結構めんどくさかったのですが。。。
※こんな感じ
AD FS 3.0におけるSSL証明書更新 | 日々徒然

それでは早速外部(WAP経由)からIEを使ってアクセステスト。
ブラウザ既定で入っているIdenTrust 社の証明書「DST Root CA X3」によって、中間証明書「Let’s Encrypt Authority X3」に対するクロス署名が行われているため、クライアントに証明書を入れることなくブラウザアクセスが可能です。 f:id:michaelowen628:20170329233801p:plain

あとは、先進認証を有効化していない場合のネイティブアプリケーション(OutlookSkype等)によるアクセスにおいて、MFGからWAPに対するアクセスが発生するシナリオ(WS-Trustを利用)です。
※Office 2013以降であれば、先進認証(OAuthを利用)を有効化することでMFGからのアクセスを回避可能です。

このシナリオはアクセス元がクライアントではなくMFGとなるため、MFGがWAPから提示される証明書を信頼しているかどうかという話になります。
この動作検証の主旨はそこです。

で結果ですが、繋がりました。 Office ProPlusですが、Exchange Onlineはアプリケーション側が既定で先進認証無効のため、WS-Trustの認証のはずです。 f:id:michaelowen628:20170330005113p:plain

Outlook側の 認証も「クリア」になっています。(先進認証の場合は、「ベアラー」となります) f:id:michaelowen628:20170330011909p:plain

以上の結果、ADFSの検証においてLet’s Encryptの証明書は問題なく使えそうです。 実際のお客様の環境に対してはまだまだ受け入れていただけないでしょうが、動作検証のハードルが下がるので是非ご活用いただければと思います。