ラベル Office 365 の投稿を表示しています。 すべての投稿を表示
ラベル Office 365 の投稿を表示しています。 すべての投稿を表示

2019/08/08

Office 365: Office 365 に許可されたデバイスでのみ利用させる方法

Office 365 に許可されたデバイスでのみ利用させる方法、デバイス認証というものをマイクロソフトが提供する機能だけで実現するためにはどうすれば良いか、調べてみたらいろいろとややこしかったので自分なりにメモを残しておこうと思います。

※ 脳内整理のメモ書きなのでご了承ください。
※ 間違った認識の部分もあるかもしれません、ご了承ください。
※ クライアント側もADALに対応したアプリを使用している事を前提としてます。

ライセンス的な結論としては、今後 このパターンで Azure AD Premium は必須ですね。
iOS/Android端末まで考慮すると、Intune も必要になりそうです。(そうなるとEMSですか・・・)

基本的には Active Directory Federation Service (ADFS) を念頭において考えてます。
その上で、ADFSを構築しないパターンも考えてみました。

登録されたデバイスのみ許可をするという事なので、やはり、「デバイスをどうやって登録するのか?」という点と、「登録したデバイス情報をどこに保管するか?」という点になるかと思います。

また、ちなみに制御する場所としては、
・ADFS で、認証アクセスしてきた際に登録済みデバイスかどうか制御する
・Azure AD で、条件付きアクセスで登録済みデバイスかどうか制御する

ADFSで制御するためには、Active Directory(AD)でデバイスを管理する必要があります。

考慮ポイントを纏めてみました。

■Windows端末の場合

【ADFSでデバイス認証する場合】
・ADFS2012R2にはデバイス登録する仕組み(DRS)が提供されていたがADFS2016ではなくなってる(ノンサポート)
・Windows 10 は ADFS2012R2のデバイス認証には対応していない。
・Azure ADにもデバイスを登録する仕組みがあり、Windows 10 や iOS/Android にのみ対応しており、Azure AD へデバイス登録が可能
 ⇒ Azure AD に登録されたデバイス情報は Azure AD Connect (同期サーバー)経由でADに“ライトバック”(デバイスの書き戻し) できる
  ※ ライトバックを使うには Azure AD Premium ライセンスが必要。
  ⇒ AD に Windows 10 をデバイス登録するためには、Azure AD へデバイス登録した情報をライトバックするしかない

【Azure ADの条件付きアクセスでデバイス認証する場合】
・オンプレADのドメインに参加済みのクライアントOSを、Azure ADにもデバイス登録する”ハイブリッドAD参加”を構成
 ⇒ "ハイブリッドAD参加"する事で Azure AD Premium で提供される「条件付きアクセス」の「デバイス認証」機能の ”ハイブリッドAD参加で登録済みデバイス” という条件用として使える

 ※ “ハイブリッドAD参加” の利用条件として “Windows 統合認証” があり、この条件を満たすためには以下のいずれかの構成を組む必要がある
   ・社内にADFS を構成する
   ・社内に Azure AD Connectのオプションである “シームレスSSO” を構成する
 ※ “ハイブリッドAD参加” の利用条件として Windows 7 以前の端末の場合、追加モジュール(.msi)を端末に配る必要がある

■iOS/Android端末の場合

【ADFSでデバイス認証する場合】
・ADFS2012にはデバイス登録する仕組み(DRS)が提供されていたがADFS2016ではなくなってる(ノンサポート)
・ADFS(2012まで) のデバイス登録する仕組み(DRS)に対して iOS/Android からWorkplace Joinを使ってADへのデバイス登録
・Azure ADにもデバイスを登録する仕組みがあり、Windows 10 や iOS/Android にのみ対応しており、Azure AD へデバイス登録が可能
 ⇒ Azure AD に登録されたデバイス情報は Azure AD Connect (同期サーバー)経由でADに“ライトバック”(デバイスの書き戻し) できる
  ※ ライトバックを使うには Azure AD Premium ライセンスが必要。

【Azure ADの条件付きアクセスでデバイス認証する場合】
・Azure AD Premium の「条件付きアクセス」で使える「デバイス認証」の条件が、「ハイブリッドAD参加」か「準拠するデバイス」という2つの条件
  ⇒ 「ハイブリッドAD参加」は Windows 端末の為のもの (オンプレADへのドメイン参加が必要)
  ⇒ iOS/Androidは「準拠するデバイス」の方を使うしかない
   ⇒ 「準拠するデバイス」の「準拠」の証明を得るためには、Intune の管理下にデバイスを置く必要がある
    ⇒ 「Azure AD Premium」の「条件付きアクセス」でデバイス認証するためには、iOS/Android用にIntuneの契約も必要

それぞれの具体的な方法(ADFSのDRSの構成、WorkPlaceJoin、ハイブリッドAD参加 など)は Microsoft の各種情報を参照頂ければと思います。

↓本Blog の内容をきれいに纏めてある記事がありました。。。

デバイス ベースのアクセス制御

その他、下記のサイトも参考にさせて頂きました。

オンプレミスのデバイス ベースの条件付きアクセスを計画する

[Always on the clock] Windows Server 2012 R2を使ってiOSだけがOffice365にアクセスできるようにする

2019/07/31

Office 365: Skype for Business Online が 提供終了 (2021/7/31)

※ 久しぶりの投稿がこれかという感じですが・・・

Office 365 のスイート製品で提供されてきた Skype for Business Online が Microsoft Teams への機能移行が完了してきた事もあり、ついに、提供終了される日が 2021年7月31日(米国時間だと思います) だと Microsoft からアナウンスされました。

Office 365 は重要なサービス更新は 1年前 にはアナウンスされるというお約束だったかと思いますので、この 2年前 に発表というのはよほどのインパクトを考慮してのことかなと思います。

ここまで 新規テナントについては Skype for Business Online は含まれず、Microsoft Teams になったり、250ユーザー以下などの条件に合致するテナントは、積極的に Microsoft Teams への移行を案内されてきたりしましたが、いよいよ終了という感じですね。

既存の Skype for Business Server (オンプレミス版) や Skype (無償版,コンシューマー版) については、この Skype for Business Online の提供終了の影響はないとの事。

これで、いよいよ本格的に Skype for Business Online から Teams への移行を検討する必要がでてきました。特に、Voice連携 している場合は早めに動く必要がありそうです。(その影響もあり2年前発表なんでしょう)

Microsoft Teams は、Skype for Business Online のようなシンプルなチャット/Web会議ツールではなく、チームという考え方(コミュニケーションの基盤)がベースにあり、その上での チャットやWeb会議機能が存在する事もあり (またチーム機能はオフにできない。チャット機能はオフにできるけど・・・)、少し移行するにあたり考慮点が増えるという部分があります。

Teams は使っていて間違いなく Microsoft が力を入れている製品で、ものすごい勢いで機能強化がおこなれており、もしかしたら、今後、Microsoft Teams もマルチウィンドウ対応やチャット機能切り出しなどが増える可能性もあるかもしれませんが、そういった進化の速さについてもある意味ついていく必要もあります。

移行・導入には少し高い壁のありそうな Microsoft Teams ですが、「うまく活用できれば働き方も変えれるよね」という方も多いですし、実現されている会社さんも聞きますので、うまく会社の文化と融合させながら活用していきたいですね。

Office 365 にとってもインパクトの大きな話題だなと思ったので久々に投稿してみました。

2018/02/16

Office 365: PowerShell から CSOM で SharePoint Online のリミット (429) を回避して操作する

最近、CSOM を使って SharePoint Online へ接続する際に、SharePoint Online 側の制限が厳しくなったのか、Limit に引っかかり 429 の HTTP Response エラーとなる確率が高くなってきたようです。

回避方法としては、UserAgent を付けるのと、リトライを行う事とのこと。
あくまでも 100% 回避できる訳ではない事に注意が必要です。

SharePoint Online で調整またはブロックを回避する
https://docs.microsoft.com/ja-jp/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online

C#版のサンプルコードは Microsoft から出ている(一部Bugってるが・・・)ものの、両方の対策に対応した PowerShell 版のサンプルが Microsoft から出ていないので、作ったものを自分の備忘を兼ねて書いておきます。

ちなみに、リトライを行う PowerShell のサンプルは Microsoft のサポートの森さんが記載されているので、リトライを行う部分は 森さんのコードをそのまま拝借しています。

PowerShell サンプル : SharePoint Online HTTP 調整 (応答コード : 429) 対策の増分バックオフ リトライ
https://blogs.technet.microsoft.com/sharepoint_support/2016/10/08/powershell-csom-sample-code-for-spo-http-429-incremental-backoff-retry/

以下、PowerShell の Sample コード (DLLのURLは適宜変更してください)
指定したサイト($siteUrl)内のリスト一覧を取得します。
#==========================================

Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

function ExecuteQueryWithIncrementalRetry($retryCount, $delay)
{
  $retryAttempts = 0;
  $backoffInterval = $delay;
  if ($retryCount -le 0)
  {
    throw "Provide a retry count greater than zero."
  }
  if ($delay -le 0)
  {
    throw "Provide a delay greater than zero."
  }
  while ($retryAttempts -lt $retryCount)
  {
    try
    {
      $script:context.ExecuteQuery();
      return;
    }
    catch [System.Net.WebException]
    {
      $response = $_.Exception.Response
      if ($response -ne $null -and $response.StatusCode -eq 429)
      {
        Write-Host ("CSOM request exceeded usage limits. Sleeping for {0} seconds before retrying." -F ($backoffInterval/1000))
        #Add delay.
        Start-Sleep -m $backoffInterval
        #Add to retry count and increase delay.
        $retryAttempts++;
        $backoffInterval = $backoffInterval * 2;
      }
      else
      {
        $retryAttempts++;
        throw;
      }
    }
  }
  throw "Maximum retry attempts {0}, have been attempted." -F $retryCount;
}

function AddUserAgent()
{
param([Parameter(Mandatory=$true)][object]$Context)

    $Assemblies = (
        "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll", `
        "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
    )

    $CSharpSource=@"
using System;
using Microsoft.SharePoint.Client;

public static class CSOMContexChanger
{
public static void CSOMAddUserAgent(ClientContext context)
{
            context.ExecutingWebRequest += delegate (object sender, WebRequestEventArgs e)
            {
                e.WebRequestExecutor.WebRequest.UserAgent = "NONISV|Contoso|PowerShellScript/1.0";
            };
}
}
"@

Add-Type -TypeDefinition $CSharpSource -ReferencedAssemblies $Assemblies -Language CSharp
    [CSOMContexChanger]::CSOMAddUserAgent($Context);
}

# Set Site URL
$siteUrl = "https://<TenantName>.sharepoint.com/sites/<SiteName>/"
# Set Credential
$Credentials = Get-Credential

$script:context = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
$script:context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Credentials.UserName,$Credentials.Password)

# Call UserAgent to SPContext Method
AddUserAgent $script:context

$lists = $script:context.Web.Lists
$script:context.Load($lists)

# Call ExecuteQuery with Retry Method
ExecuteQueryWithIncrementalRetry -retryCount 5 -delay 30000

$lists | ForEach-Object{ "Title: {0}" -f $_.Title }

#==========================================

2015/06/28

Office 365: Microsoft Intune が有効なテナントでは Office 365 MDM が使えない

Office 365 MDM (モバイルデバイス管理) 機能が Office 365 の標準機能として提供されたとの事で、早速、自分のテナントでも試してみたいと試みました。

Office 365 用のモバイル デバイス管理の概要

Office 365 管理画面の左のメニューに「モバイル デバイス」というものが増えています。
どうやら、ここから構成すればOK! という事なので早速クリック!

が、、、しかし!

「セットアップする必要はありません」との事。。。

よくよく読むと、すでに Microsoft Intune を同じサブスクリプションで有効化してしまっている為、Office 365 の MDM は必要ないだろう。。。という事でした。

確かに、Microsoft Intune でもろもろ iPad などの制御が可能なので必要はないのですが・・・・

という事で、断念しました。

また、別の試用版環境などでも構築して機能を見てみたいと思います。

=========
詳しい方に教えていただきました。

既に Microsoft Intune を使い始めてる人が、どうしても Office 365 MDM を使いたい場合、サポートへ問い合わせをしてお願いをすれば使えるようになるそうです。

ただし、既存の Microsoft Intune の情報が消えたり、いろいろと厄介な事になるとの事なので、そんな勇気はなく、諦めました x2。


2015/06/26

Azure: Azure AD Sync から Azure AD Connect にアップグレードしてみた

昨日、GA した Azure AD Connect ですが、これまでのディレクトリ同期ツール や Azure AD Sync (AADSync) に置き換わるものとされています。

ディレクトリ同期ツール や AADSync から簡単にアップグレード (移行?) できるとの事なので、早速、AADSync からインプレースで置き換えてみました。

元の環境は、Windows Server 2012 R2 上にインストールした AADSync で、2つの AD フォレスト と Azure AD (Office 365) を繋いでます。

■ アップグレードしてみる

早速、Azure AD Connect をダウンロード。まだ英語版しかないです。日本語版もでるのかな?
ダウンロードした MSI ファイルを実行します。

ウィザードが立ち上がり、既に同期サービスがインストールされてるよ!っと判断して、Upgrade モードになっています。
「I agree to the license terms and privacy notice.」にチェックを入れて、[Continue] を押します。

Azure AD Sync から Azure AD Connect にアップグレードする間、同期は止まるよとのこと。
[Upgrade] を押します。

後は、待つだけ。簡単楽ちんです。各種設定情報も引き継いでくれるみたいです。

次に、Azure AD の認証情報を入力しろとの事なので、Azure AD の管理者アカウント(xxx@contoso.onmicrosoft.com) を入力。

「Ready to configure」と表示されて引き継ぎ準備完了との事なので、「Start the synchronization process as soon as the configuration completes.」にチェックを入れて、「Upgrade」を押します。

待つだけ。

完了したメッセージに変わったら 「Exit」 で終了。

ちなみに、インストール後の「プログラムと機能」はこんな感じになりました。

これで一通りのアップグレードは完了です。
大きな変更はなさそうなので非常に簡単です。

ディレクトリ同期ツールからのアップグレード方法についても詳しく公開されてますね。
https://azure.microsoft.com/ja-jp/documentation/articles/active-directory-aadconnect-dirsync-upgrade-get-started/
新しいサーバーを立てて、構成情報を Export して Import することも可能との事。

■ 構成してみる

アップグレードが完了すると、デスクトップ上に "Azure AD Connect" というショートカットが出現します。
構成ウィザードのショートカットです。


起動してみるとウィザードが立ち上がってきます。

Additional tasks として、3つの選択肢が出てきます。

  •  View current configuration (現在の構成を参照)
  •  Customize synchronization options (同期オプションの変更)
  •  Configure staging mode (ステージングモードの構成)


 ・ View current configuration (現在の構成を参照)

見るだけです。


・Customize synchronization options (同期オプションの変更)

構成した同期の設定を変更したり追加したりできます。

AADSync の時から引き続きオンプレADのマルチフォレストなので、必要に応じてここで追加します。
今現在は、"DIRECTORY TYPE" が "Active Directory" しか選べませんが、いずれ他のディレクトリもサポートされる予定との事。

「Optional feature」に Preview の各種機能が増えてます(?)よね?
"User writeback","Group writeback","Device writeback","Directory extension attribute sync" が選択 Preview 機能として選択できるようになってます。これらの機能はまたいづれ試したいと思います。

どのアプリケーションを対象にするのかも変更ないです。
必要に応じて「I want to restrict the list of applications" にチェックを入れて制限します。

同期する属性の選択です。ここでも必要に応じて "I want to further limit the attributes exported to Azure AD." を選択した上で、不要なもののチェックを外します。

後は、"Start the synchronization process as soon as the configuration completes." にチェックを入れて、「Install」を押せば構成されます。

終わったらこんな感じ。

ちなみに、こんなエラーが出た場合は、過去に倣って、事前に構成済みのタスクをタスクスケジューラーから無効にしておく必要があります。

[コンパネ]-[管理ツール]-[タスク スケジューラ] で "Azure AD Sync Scheduler" を無効に設定してください。

・Configure staging mode (ステージングモードの構成)

新しくついた機能ですね。ちょっと名前的に「検証環境?」というイメージになりますが、どうやら、ディザスタリカバリー(DR)を想定した機能のようです。

プライマリーで動作する Azure AD Connect の同期サービスが長期で停止した際、あらかじめ Staging mode を有効にした別拠点のセカンダリーの Azure AD Connect の同期サービス を用意しておけば、Staging mode を無効化するだけでプライマリーとして動作するようになるとの事。

実際設定検証はやってないのですが、設定画面の画面ショットだけ・・・

 セカンダリーのサーバー側では、この「Enable staging mode」にチェックを入れれば良いという事ですね。

「Install」を押せば Staging mode が有効になります。

■ 補足

例によって Azure AD Connect は Forefront Identity Manager ベースで動いています。
よって、FIM のコンソールも見ることができます。

Program Files\Microsoft Azure AD Sync\UIShell にあります。

バージョンを確認するとちゃんと "Azure AD Connect Service"となっているのが確認できます。


同期属性の選択部分に増えた項目が並んでます。

 AADSync から増えた "SyncRulesEditor" も同じフォルダに入ってます。

同期のフィルタなどルールの変更をこのエディターからでも行うことが可能です。


また時間を見つけて Preview 機能のあたりについても見てみたいと思います。

2015/06/25

Azure: Azure Active Directory Connect が GA

以前より、Office 365 の AD 同期などでおなじみの "ディレクトリ同期ツール" "Azure AD Sync" などの後継ツールを含むサービスとして Preview が公開されていた Azure Active Directory Connect  が GA したとのこと。
Integrating your on-premises identities with Azure Active Directory

Azure AD Connect 自体は、同期サービス全体を指す感じの位置づけですね。

Connectツールのダウンロードはこちら
Microsoft Azure Active Directory Connect 

今のところ、まだ英語版のみのようですね。


ついでに、Azure AD Premium が必要なようですが、Azure Active Directory Connect Health も GA とのこと。


追々、既存の Azure AD Sync ツール を置き換えていきたいとおもいます。

2015/01/13

Office 365: 各種サービスへのPowerShellでの管理接続

今更ながら纏めてみた。


※ 全体を通じた必須モジュール

PowerShell 3.0 以上 (Windows 7 以下の場合)
http://www.microsoft.com/en-us/download/details.aspx?id=34595

IT プロフェッショナル 用 Microsoft Online Services サインイン アシスタント RTW
http://go.microsoft.com/fwlink/p/?LinkId=286152

[追記]
Windows PowerShell スクリプトの実行権限の変更が必要な場合があります。
変更する為には、PowerShell を [管理者として実行] で起動し、以下のコマンドを実行。
Set-ExecutionPolicy RemoteSigned
※ "RemoteSigned"の部分がポリシーの内容になるので適宜最適なものに変更してください。
  https://technet.microsoft.com/ja-jp/library/ee176961.aspx

■ Azure Active Directory

◇ 必要追加モジュール

Windows PowerShell 用 Azure Active Directory モジュール (64 ビット バージョン)
http://go.microsoft.com/fwlink/p/?linkid=236297

◇ PowerShell コマンド
Connect-MsolService

■ Exchange Online

◇ 必要追加モジュール

なし

◇ PowerShell コマンド
$UserCredential = Get-Credential $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection Import-PSSession $Session

■ Skype for Business Online (Lync Online)

◇ 必要追加モジュール

Skype for Business Online, Windows PowerShell Module
https://www.microsoft.com/ja-JP/download/details.aspx?id=39366

◇ PowerShell コマンド
Import-Module SkypeOnlineConnector $credential = Get-Credential $session = New-CsOnlineSession -Credential $credential Import-PSSession $session

■ SharePoint Online

◇ 必要追加モジュール

SharePoint Online Management Shell
http://www.microsoft.com/ja-jp/download/details.aspx?id=35588
# 2015/1/13 抜けていた為に追記 - 大鷲様ご指摘ありがとうございました!

◇ PowerShell コマンド
Connect-SPOService -Url https://contoso-admin.sharepoint.com -credential admin@contoso.com

2014/05/02

Office 365: Office 365 テナントに設定した ADFS サーバー (URL) を変更する

大した話ではないのですが、Office 365 の検証をしている際にあまり情報がなかったので、備忘録までに記載しておきます。

既に Office 365 を SSO として設定し、既存の ADFS サーバーとフェデレーションの設定を行っている状況で、別に建てた ADFS サーバー へ移行する際の手順です。

なお、異なる ADFS ですが 同じドメイン / 同じフォレスト に所属しているとします。

※ かなり限定的なシナリオですね

実際、オンプレミスにある ADFS / ADFS Proxy の環境を環境として残しつつ、別のエンドポイント URL として、Azure 上に ADFS / Web Application Proxy をたてて移行するシナリオで使いました。

移行先のADFSサーバー上で作業します。
Windows Azure Active Directory モジュールを含む PowerShell を起動。
Office 365 テナントに接続します。

Connect-MsolService

現状の登録済みドメインがどういったフェデレーション設定になっているか確認します。

Get-MsolDomainFederationSettings -DomainName <登録済みドメインFQDN>

⇒ 移行元の設定がずらっと表示されます

ADFS のコンテキストを設定します。

Set-MsolADFSContext -Computer <ADFSサーバーのFQDN (ローカルで接続可能な・・・ ex. fssrv.contoso.local)>

フェデレーションの設定を変更します。

Update-MsolFederationDomain -DomainName <登録済みドメインFQDN>

最後に再び、設定を確認します。

Get-MsolDomainFederationSettings -DomainName <登録済みドメインFQDN>

移行先の設定に変更されていれば完了です。


簡単な作業ですね。

2014/03/28

Office 365: ディレクトリ同期 環境下で Exchange Online の 階層型アドレス帳 を有効にする

先日、Exchange Online でも利用可能になった階層型アドレス帳 ですが、ディレクトリ同期 を行っている環境下においては、PowerShell で直接 オンライン(Azure Active Directory) の属性 を変更できない事から、PowerShel での設定だけではうまくいきません。

ディレクトリ同期環境下 での管理のセオリーは、”属性の変更はオンプレミス側でしろ” なので、オンプレミスの Active Directory の属性を構成する事で、Exchange Online の 階層型アドレス帳 を有効にする方法を試してみました。

グループ(配布グループ や メールが有効なセキュリティグループ) の階層作成の方法についてはディレクトリ同期を使っていない場合と同じで、階層にしたいグループをネストする形で階層を作成し、必要なグループにユーザーを追加すればグループ側の下準備は完了です。

ちなみに、階層型アドレス帳の部署としてサポートされている配布グループは、メールが有効な配布グループとメールが有効なセキュリティグループです。動的配布グループは階層型アドレス帳の部署としてサポートされません。

Exchange Online にて階層型アドレス帳を有効にする為に必要となる属性は以下の3つ。

[IsHierarchicalGroup]
[SeniorityIndex]
[PhoneticDisplayName]

この3つの属性が Exchange Online のユーザー や グループの属性で変更される必要があります。
しかし、この3つの属性は オンプレミス の Active Directory の属性として探しても見当たりません。


調べた結果、上記の属性と紐づきがある Active Directory の属性が存在するようです。
右側の Active Directory の属性を設定する事で、左側の Exchange Online の属性に同期されるとの事。

(左) Exchange Online側 = (右) Active Directory側
[IsHierarchicalGroup] = [msOrg-IsOrganizational]
[SeniorityIndex] = [msDS-HABSeniorityIndex]
[PhoneticDisplayName] = [msDS-PhoneticDisplayName]

ただ、この右側の Active Directory 側に必要な属性は通常の構成では存在しません。
属性の3つとも Exchange Server に必要な属性として拡張される スキーマ 属性となります。

という事で、

 ディレクトリ同期環境下において Exchange Online の階層型アドレス帳を有効に
 する為には、オンプレAD に Exchange の スキーマ拡張 が必須!

という事になります。

既に Exchange Server 2010 以降を導入済みのユーザーにとっては存在するはずの属性なので、以下のスキーマ拡張作業は必要ありません。


■ 階層型アドレス帳の為のスキーマ拡張

スキーマの拡張方法ですが、ちゃんと情報がありました。

Exchange Server 2010 サーバーで階層型アドレス帳 (HAB) 用に Active Directory スキーマを拡張する方法
http://support.microsoft.com/kb/973788/ja

Exchange Server 2010 用の情報ですが、必要となる3つの属性の要件は満たしています。

注) Active Directory のスキーマ変更は大変注意が必要な作業ですので、十分な検証を行った上で、自己責任のもとで行ってください。

上記の KB に記載されている サンプルの LDIF ファイル の内容と、ディレクトリ同期ツール で同期される項目を照らし合わせた結果、以下の項目については、今現在として 必要はありません。
(同期される項目として含まれていません)

<属性追加>
 msExchHABRootDepartmentLink
 msExchHABRootDepartmentBL
 msOrg-GroupSubtypeName
 msOrg-OtherDisplayNames
 msOrg-Leaders
 msOrg-LeadersBL

<属性の設定(上記に加え)>
 location

当然、将来的な拡張を見据えた属性の可能性もあるので、全ての項目を拡張される事をお勧めします。

ちなみに、勝手ながら必要な項目だけにスリム化した LDIF サンプル を作成してみました。
dn:CN=ms-DS-Phonetic-Display-Name,DC=X
changetype:ntdsSchemaAdd
adminDescription:ms-DS-Phonetic-Display-Name
adminDisplayName:ms-DS-Phonetic-Display-Name
attributeID: 1.2.840.113556.1.4.1946
attributeSecurityGuid::VAGN5Pi80RGHAgDAT7lgUA==
attributeSyntax: 2.5.5.12
isSingleValued:TRUE
lDAPDisplayName:msDS-PhoneticDisplayName
mapiId: 35986
name:ms-DS-Phonetic-Display-Name
oMSyntax: 64
objectCategory:CN=Attribute-Schema,DC=X
objectClass:attributeSchema
rangeLower: 0
rangeUpper: 256
schemaIdGuid::5JQa4mYt5UyzDQ74endv8A==
searchFlags: 5
showInAdvancedViewOnly:TRUE
systemFlags: 16
systemOnly:FALSE


dn:CN=ms-DS-HAB-Seniority-Index,DC=X
changetype:ntdsSchemaAdd
adminDescription:Contains the seniority index as applied by the organization where the person works.
adminDisplayName:ms-DS-HAB-Seniority-Index
attributeID: 1.2.840.113556.1.4.1997
attributeSecurityGuid::VAGN5Pi80RGHAgDAT7lgUA==
attributeSyntax: 2.5.5.9
isMemberOfPartialAttributeSet:TRUE
isSingleValued:TRUE
lDAPDisplayName:msDS-HABSeniorityIndex
mapiId: 36000
name:ms-DS-HAB-Seniority-Index
oMSyntax: 2
objectCategory:CN=Attribute-Schema,DC=X
objectClass:attributeSchema
schemaIdGuid::8Un03jv9RUCYz9lljaeItQ==
searchFlags: 1
showInAdvancedViewOnly:TRUE
systemFlags: 16
systemOnly:FALSE


dn:CN=ms-Org-Is-Organizational-Group,DC=X
changetype:ntdsSchemaAdd
adminDescription:ms-Org-Is-Organizational-Group
adminDisplayName:ms-Org-Is-Organizational-Group
attributeID: 1.2.840.113556.1.6.47.2.1
attributeSyntax: 2.5.5.8
isMemberOfPartialAttributeSet:TRUE
isSingleValued:TRUE
lDAPDisplayName:msOrg-IsOrganizational
mapiId: 36061
name:ms-Org-Is-Organizational-Group
oMSyntax: 1
objectCategory:CN=Attribute-Schema,DC=X
objectClass:attributeSchema
schemaIdGuid::C1a3SQdHoEqifOF6Cco/lw==
searchFlags: 16


dn:
changetype:ntdsSchemaModify
replace:schemaUpdateNow
schemaUpdateNow: 1
-


dn:CN=Organizational-Person,DC=X
changetype:ntdsSchemaModify
add:mayContain
mayContain:msDS-HABSeniorityIndex
-

dn:CN=Organizational-Person,DC=X
changetype:ntdsSchemaModify
add:mayContain
mayContain:msDS-PhoneticDisplayName
-

dn:CN=Group,DC=X
changetype:ntdsSchemaModify
add:mayContain
mayContain:thumbnailPhoto
-

dn:CN=Group,DC=X
changetype:ntdsSchemaModify
add:mayContain
mayContain:msDS-HABSeniorityIndex
-

dn:CN=Group,DC=X
changetype:ntdsSchemaModify
add:mayContain
mayContain:msDS-PhoneticDisplayName
-

dn:CN=Group,DC=X
changetype:ntdsSchemaModify
add:mayContain
mayContain:msOrg-IsOrganizational
-

dn:CN=Mail-Recipient,DC=X
changetype:ntdsSchemaModify
add:mayContain
mayContain:msDS-HABSeniorityIndex
-

dn:CN=Mail-Recipient,DC=X
changetype:ntdsSchemaModify
add:mayContain
mayContain:msDS-PhoneticDisplayName
-


dn:
changetype:ntdsSchemaModify
replace:schemaUpdateNow
schemaUpdateNow: 1
-

スキーママスタ の ドメインコントローラー上で LDIF ファイルを取り込みます。

 LDIFDE -i -f schema_file.txt -c DC=x #SchemaNamingContext



■ グループ / ユーザー への属性設定

スキーマの拡張が完了したら、拡張した属性に対して必要な設定を行います。
オンプレミスの Active Directory に対して ADSI エディット 等 で 値 を変更します。


ちなみに、設定するのは以下の3つの属性です。

 [msOrg-IsOrganizational] ・・・ (グループのみ) グループを階層の一部にするか? [True or False]
 [msDS-HABSeniorityIndex] ・・・ 表示順序の設定。数字が大きい方が上に表示。
 [msDS-PhoneticDisplayName] ・・・ フリガナの設定。

具体的な変更方法については、こちらが参考になるかと思います。

階層型アドレス帳の展開
http://technet.microsoft.com/ja-jp/library/ee649115.aspx

※ AD サイトや DC が複数ある場合は全ての DC にレプリケーション完了してるか確認しましょう

設定が完了したら、ディレクトリ同期ツール で 同期 を行います。
FIM Admin ツール で Operation を確認すると、ちゃんと設定した属性が追加されている事が判ります。


■ Exchange Online に対して階層型アドレス帳を有効にする

オンプレミスの Active Directory への設定が完了した後、Exchange Online 特有の設定として、
階層型アドレス帳のルートグループ (最上位のグループ) の設定だけは、Remote PowerShell を使って Exchange Online に対して直接設定を行う必要があります。

Exchange Online へ PowerShell で接続します。接続方法は こちら をご覧ください。

ルートにするグループを指定します。
Set-OrganizationConfig -HierarchicalAddressBookRoot "Contoso,Ltd"

※ このサンプルの場合 "Contoso,Ltd" がグループ名 (Name属性) です


■ Outlook 2007 SP2 以降 で確認する

階層型アドレス帳は Outlook 2007 SP2 以降で動作します。(OWA では動きません)
メールの宛先等の選択画面にて、[ 組織 ] タブが増えていれば成功です。



ディレクトリ同期ツール を導入済みの Exchange Online ユーザーの方で、階層型アドレス帳 の導入をされる方のご参考になれば。

2014/03/27

Office 365: Access Web アプリ のデータを Excel で利用する

SharePoint Onlone 上で利用可能な Access Web アプリ ですが、Access 2013 クライアントから作成・編集をして、簡単に作成可能なフォームで簡単なデータベースを作成する事が可能です。データは 1GB までという制限はあるものの、SQL Azure に格納されるようです。

非常に有用に活用できそうなのですが、実際にデータを入力していくと、それを活用する事も考えないといけません。一番、データを活用するのに適しているアプリという事で、Access Web アプリ で入力したデータを、Excel 2013 からアクセスして利用する方法について書いておきたいと思います。

っというのも、結論から言うと Excel から Access Web アプリのデータベースにアクセスする為には、SQL Naitive Client 経由でアクセスする必要があり、通常の SQL Server との外部データ連携ウィザードではアクセスできません。

というか、やり方は調べているうちに見つけたこちらの Blog を試してみた結果です (笑)

Visualize your Access 2013 web app data in Excel
http://blogs.office.com/2013/01/22/visualize-your-access-2013-web-app-data-in-excel/

手順通りに・・・
Access Web アプリ を Access 2013 で開きます。
そして、[ファイル] からバックステージを開き、[情報] セクションを開きます。
ここに SQL Azure データベース の情報が表示されています。

さらに詳しい情報を表示する為に、接続の [管理] を開き、 [読み取り専用接続を有効にする] をクリックします。

そうすると、設定が変更され、データベース側で読み取りの設定が可能になります。
再び、接続の [管理] を開くと 無効 になっていたメニューが選択可能になっていて、[読み取り専用接続の情報を表示] を選択すると、"SQL Server の接続情報" が表示され、ユーザー名やパスワードなどの情報も入手する事が可能です。


この情報を使って、Excel から データベース に対してアクセスすれば良いという事になります。
で、Excel を開き、[データ] タブの [その他のデータ ソース] にある [SQL Server] で接続したい所なのですが、上記の設定を使ってもエラーでアクセスができません。

クライアントの IPアドレスが Azure の Firewall で許可されていないという事らしいです。もちろん、Azure マネージメントポータル へのアクセス権もありません。

で、解決方法として上記でも記載しましたが、SQL Server Native Client 経由であればアクセス可能です。

再び、Excel の [データ] タブの [その他のデータ ソース] にある [データ接続ウィザード] を選択します。

[データ接続ウィザード] にて [その他/詳細] を選択します。

[データ リンク プロパティ] の [プロバイダー] の選択にて、[SQL Server Naitive Client 11.0] を選択します。

[ 接続 ] タブに移動して、上記の Access バックステージ にて取得した "SQL Server 接続情報" を元に、"サーバー名" "ユーザー名" "パスワード" "データベース名" を入力して、[ 接続テスト] を行い、問題なければ [ OK ] をクリックします。

もし、接続テストでうまくいかない場合は、Access に戻り、接続の [管理] を開き、 [この場所] を選んで、現在のPCからの接続を許可するように設定を変更してください。

[ データ接続ウィザード ] を進めます。ここからの データベースとテーブルの選択 等 は適宜。




このように、ピボットテーブルのフィールドとして取り込むことができました。

Excel 以外のアプリケーションでも応用が利きそうです。
ちなみに、昨今話題の PowerBI の Power Query だと、もう少し簡単に取り込むことが可能なようです。