MS_CRMIFD - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

CRMインターネット展開用の構成(IFD)

概要

CRM インターネット展開用の構成
IFD:Internet Facing Deployment

要件

Internet 経由でのアクセスの場合に必要になる。

構成

補足(IFD の本質): IFD は「インターネットに公開する設定」ではなく、
認証方式を Windows 統合認証からクレームベース認証へ切り替える構成である。
社内では Kerberos が使えるが、
社外からは使えない。そこで AD FSSTSとして立て、
SAML トークンによる認証に置き換える。

「ポート転送などはサポートされない」というのは、
単に外から届けばよいという話ではないことを意味している。
CRMのクライアント要件
タブレット・スマートフォンのネイティブ アプリに IFD が必須とされているのも、
同じ理由による。

要件

クレームベース認証

クレームベース認証でサポートする STS

  • WS-Trust v1.3
  • AD FS
    • v2.0 : Windows Server 2008 R2 別途ダウンロードしてインストール
    • v2.1 : Windows Server 2012 に同梱
    • v2.2 : Windows Server 2012 R2 に同梱

Webサイト

バインディング

  • HTTPS バインディング
  • 単一のバインディング(HTTP + HTTPS は NG)

AD FS同居の場合

  • AD FS が使用するので CRM で「既定の Web サイト」(80 番ポート)は使用しない。
  • ただし、HTTPS バインディングの 443 番ポートは CRM で使用したいので、
    AD FS が使用する「既定の Web サイト」の
    HTTPS バインディングのポートを 443 番ポートから(444 番等へ)変更しておく。
    これは、AD FS のインストールの前に行っておく。

補足: 「AD FS のインストールの前に行っておく」という点が重要である。
AD FS は既定の Web サイトの 443 番を掴んでしまうため、
後から動かすのは面倒になる。
CRMのインストールと構成でも
「AD FS が優先使用する『既定の Web サイト』を CRM で使用しないこと」と
注意されているが、同居構成では構築順序そのものが制約になる。
なお、AD FS を別サーバに分ければこの問題は生じない。

DNSレコード

AD FS

  • sts.contoso.com

組織レコード

  • contosoinc.contoso.com

検出 Web サービス

  • dev.contoso.com

Webアプリケーション

  • auth.contoso.com

補足(なぜ 4 つも名前が要るのか): CRMのサーバ機能
フロントエンドの役割に対応している。

名前 対応する役割
sts. AD FSSTS
auth. Web アプリケーション サーバー(認証の入口)
dev. 検出 Web サービス(ユーザの組織を探す)
<組織名>. 組織 Web サービス(組織ごとに別名になる)

組織ごとに DNS 名が増える点が運用上のポイントで、
マルチテナント(複数組織)構成では
ワイルドカード証明書が必要になる理由でもある(次節)。

証明書

デジタル証明書、公開キー証明書

AD FSの証明書

フェデレーション サーバーのための証明要件
https://technet.microsoft.com/ja-jp/library/Gg308501.aspx

  • サービス通信証明書

    • STS の Web サイト(sts.contoso.com)の証明書
    • IIS で使用する SSL 証明書と同じ証明書
  • トークン証明書(AD FS が初期構成時に生成)

    • メタデータの署名
    • SAML トークンの署名
  • トークン解読証明書(AD FS が初期構成時に生成)

    • SAML トークンの解読
    • 既定の解読証明書として IIS の SSL 証明書を使用する。

CRMの証明書

  • Web サイト暗号証明書

    • CRM の Web サイトの証明書

    • 内部名・外部名を使用してアクセスされる場合、
      サブジェクトの別名に対応した SSL サーバ証明書を使用

    • CRM Web サーバーの役割を複数のコンピュータにインストールする場合、
      ワイルドカードに対応した SSL サーバ証明書を使用

  • クレーム暗号証明書

補足(秘密鍵のアクセス許可は定番のハマりどころ): MMC
証明書スナップインで述べたとおり、
証明書をストアに入れただけでは、サービスの実行アカウントは秘密鍵を読めない
[すべてのタスク]→[秘密キーの管理]から
CRMAppPool の ID に読み取り権限を与える必要がある。
これを忘れると「証明書はインストールされているのに認証できない」という
切り分けの難しい症状になる。

証明書の更新

  • 有効期限切れの 1 ヶ月前には更新する計画を立てる。

  • AD FS が初期構成時に生成する証明書は自動更新。

    • トークン証明書
    • トークン解読証明書

AD FS 2.0の初期構成

前提条件

前提条件のソフトウェア

準備

  • AD FS の外部名(e.g.: sts.contoso.com)を指しているサービス通信証明書を
    ウィザードの開始前に Web サイト上にインストールしておく必要がある。

インストール

  • ウィザードの起動
  • スタンドアロン フェデレーションサーバー
  • フェデレーションサービス名で証明書の選択

要求プロバイダー信頼の構成

  • 要求プロバイダー信頼が自動的に追加
  • 要求規則を要求プロバイダー信頼に追加
    • Active Directory の要求規則の編集 → 規則の追加
    • 要求規則テンプレート → LDAP 属性を要求として送信
    • 規則の構成

Dynamics CRMでクレームベース認証を構成

展開マネージャで構成

ウィザードを開始

以下のいずれかの方法でウィザードを開始

  • 「操作」ウィンドウで「クレームベース認証の構成」をクリック
  • 「タスク」ウィンドウで「クレームベース認証の構成」をクリック
  • コンソール・ツリーで「Microsoft Dynamics CRM」を右クリック
    して「クレームベース認証の構成」をクリック
  • 「操作」プルダウン・メニューで「クレームベース認証の構成」をクリック

フェデレーション・メタデータのURLを入力

「セキュリティトークンサービスを指定します」のページで、
STS のフェデレーション・メタデータの URL を入力する。
https://sts.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml

# SSL を 444 番ポートに変更していれば、https://sts.contoso.com:444 とする。

クレーム暗号証明書の指定

「暗号証明書」を指定しますページでクレーム暗号証明書を選択。
事前に、フロントの役割の全てにインストールしておく。

システムのチェック

(元ページ未記載)

選択内容の確認

  • Dynamics CRM のフェデレーション・メタデータの URL をメモする。
    AD FS に信頼されている証明書利用者として Dynamics CRM を追加する時に使用する。

クレームベース認証の無効化

IFD が構成されている場合、IFD も無効化される。

PowerShellで構成

http://www.firebrandtraining.dk/pdf/learn/microsoft/dynamics-crm-2015-courseware.pdf

コマンドレットの追加

Add-PSSnapin Microsoft.Crm.PowerShell

クレームベース認証を有効にする。

#Get the current settings into a variable
$ClaimsSettings = Get-CrmSetting claimssettings
#Set the enabled parameter to true
$ClaimsSettings.Enabled = $true
#Set the Encryption certificate and the Federation Metadata URL
$ClaimsSettings.EncryptionCertificate = "CN=*.contoso.com, OU=Domain Control Validated, O=*.contoso.com"
$ClaimsSettings.FederationMetadataUrl = "https://sts.contoso.com/federationmetadata/2007-06/federationmetadata.xml"
#Enable claims-based authentication
Set-CrmSetting $ClaimSettings

# SSL を 444 番ポートに変更していれば、https://sts.contoso.com:444 とする。

移行メモ(正誤の可能性): 上記の最終行は $ClaimSettings となっているが、
変数名は $ClaimsSettingss あり)が正しいと思われる。
引用元 PDF の記載をそのまま残しているため、元の表記のままとした
実行する際は変数名を確認すること。

AD FS 2.0の証明書利用者信頼

証明書利用者信頼の追加

Dynamics CRMクレームベース認証が有効になった後、
Dynamics CRM の証明書利用者信頼を AD FS に追加する。

  • IFD アクセスのみ、内部アクセスのみの場合、証明書利用者信頼は 1 つだけ。
  • IFD アクセスと内部アクセスの場合、2 つの証明書利用者信頼が必要。

AD FS 管理コンソールの「操作」ウィンドウで
「証明書利用者信頼の追加」をクリックし、ウィザードで次の手順を実行。

  • 「データソースの選択」の
    「オンラインまたはローカルネットワークで公開されている証明書利用者についてのデータをインポートする」から、
    Dynamics CRM のフェデレーション・メタデータの URL を入力する。

    • 内部アクセスの場合
      http://内部サーバー名:ポート/FederationMetadata/2007-06/FederationMetadata.xml
    • IFD アクセスの場合
      http://外部名/FederationMetadata/2007-06/FederationMetadata.xml
  • 「表示名の指定」ページで表示名を入力

  • 「発行承認規則の選択」ページで「すべてのユーザに対してこの証明書利用へのアクセスを許可する」をオンにする。

  • , etc.

証明書利用者信頼の要求規則の追加

要求規則についての詳細は、この辺りを参照のこと。

  • 要求規則を記述する。

    • AD FS
      • 要求に適用される条件
      • 承諾される入力方向の要求
      • 発行される出力方向の要求
  • 3 つの要求規則が必要。

    • UPN パススルー
    • プライマリ SID パススルー
    • Windows アカウント名を名前に変換
  • 手順

    • AD FS 管理コンソールで「証明書利用者信頼」に移動し、
      「証明書利用者信頼」を右クリックし「要求規則の編集」をクリック。

テンプレ

  • 「要求規則の編集」のページで「規則の追加」をクリックする。
  • 「変換要求規則の追加ウィザード」ページで「AAA」する。
  • 要求規則名ボックスに「BBB」と入力する。
  • 入力方向の要求の種類で「CCC」を選択する。
  • 出力方向の要求の種類で「DDD」を選択する。
  • すべての要求値をパススルーするオプションを選択する。
  • 「完了」をクリックする。

UPNパススルー

  • AAA:「入力方向の要求をパススルーまたはフィルター処理」を選択し「次へ」をクリックする。
  • BBB:UPN パススルー(もしくは同等の語句)
  • CCC:UPN
  • DDD:-

プライマリSIDパススルー

  • AAA:「入力方向の要求をパススルーまたはフィルター処理」を選択し「次へ」をクリックする。
  • BBB:プライマリ SID パススルー(もしくは同等の語句)
  • CCC:プライマリ SID
  • DDD:-

Windowsアカウント名を名前に変換

  • AAA:「要求規則テンプレート」で「入力方向の要求を変換」を選択し「次へ」をクリックする。
  • BBB:Windows アカウント名を名前に変換(もしくは同等の語句)
  • CCC:Windows アカウント名
  • DDD:名前

移行メモ(正誤): 元ページの「もしくはは同等の語句」は
「もしくは同等の語句」の誤記と判断し、修正した(3 箇所)。

補足(3 つの要求規則が意味するもの): CRM は
UPNSID の 2 つでユーザを識別している。

CRMの展開マネージャを使用した管理
「ユーザのマップ」で AD の GUID にリンクさせると説明されているのは
この SID のことで、ドメインをまたぐと変わるため
再展開時のマッピングが必要になる。
3 つ目の「Windows アカウント名を名前に変換」は、
表示用の名前を渡すための規則である。

IFDの構成

展開マネージャで構成(IFD)

展開マネージャでインターネットに接続する展開の構成ウィザードを開始

ウィザードを開始(IFD)

以下のいずれかの方法でウィザードを開始

  • 「操作」ウィンドウで「インターネットに接続する展開の構成」をクリック
  • 「タスク」ウィンドウで「インターネットに接続する展開の構成」をクリック
  • コンソール・ツリーで「Microsoft Dynamics CRM」を右クリックして「インターネットに接続する展開の構成」をクリック
  • 「操作」プルダウン・メニューで「インターネットに接続する展開の構成」をクリック

ドメイン名

「ドメイン」ページで次のドメインを入力(DNS レコード参照)。

  • Web アプリケーション

    • 外部ドメイン名
    • contoso.com
  • 組織レコード

    • 外部ドメイン名
    • contoso.com
    • 組織に接続するには外部ドメイン名の前に組織名をつける(?なにこれ?)。
      • contosoinc.contoso.com
  • 検出 Web サービス

    • 検出 Web サービスのホスト名
    • dev.contoso.com
  • 443 以外のポートを使用する場合、
    そのポート番号をドメイン名に付加する必要がある。

    • contoso.com:444 など。

補足(著者の「?なにこれ?」への回答): これは
マルチテナントのための命名規則である。
1 つの展開に複数の組織を持てる(→ CRMの展開マネージャを使用した管理)ため、
どの組織にアクセスしているかを FQDN のサブドメインで表現する

https://<組織の一意名>.contoso.com/

CRMのインストールと構成
「データベース名は URL にも使用される。従って、短めに設定したほうが良い」
とされているのは、ここに現れるためである。
組織が増えるたびに DNS 名が増えるので、
証明書にワイルドカードが必要になるという話にも繋がる。

外部ドメイン名

「外部ドメイン」ページで次の外部 URL を入力(DNS レコード参照)。

  • Web アプリケーション

    • 外部ドメイン名(外部 URL)
    • auth.contoso.com
  • 443 以外のポートを使用する場合、
    そのポート番号をドメイン名に付加する必要がある。

    • contoso.com:444 など。

システムのチェック(IFD)

(元ページ未記載)

選択内容の確認(IFD)

(元ページ未記載)

IFDの無効化

(元ページ未記載)

PowerShellで構成(IFD)

http://www.firebrandtraining.dk/pdf/learn/microsoft/dynamics-crm-2015-courseware.pdf

コマンドレットの追加(IFD)

Add-PSSnapin Microsoft.Crm.PowerShell

IFDを有効にする。

#Get the current settings into a variable
$IFDSettings = Get-CrmSetting ifdsettings
#Set the enabled parameter to true
$IFDSettings.Enabled = $true
#Set the IFD Domain Values
$IFDSettings.DiscoveryWebServiceRootDomain="dev.contoso.com"
$IFDSettings.ExternalDomain="auth.contoso.com"
$IFDSettings.OrganizationWebServiceRootDomain="contoso.com"
$IFDSettings.WebApplicationRootDomain="contoso.com"
#Enable claims-based authentication
Set-CrmSetting $IFDSettings

移行メモ: 元ページではこの節の見出しが
「クレームベース認証を有効にする。」となっていたが、
内容は IFD の設定であるため、見出しを「IFD を有効にする。」に改めた
(コード中のコメント #Enable claims-based authentication
引用元のまま残している)。

IFDアクセスに対する証明書利用者信頼の追加

証明書利用者信頼の追加の(IFD アクセスの場合)の手順を実行。

参考

AD FSでのクレームベース認証

以下のように説明されている。

Microsoft Dynamics CRM >> Active Directory およびクレームベース認証
https://msdn.microsoft.com/ja-jp/library/Gg334502.aspx

Security Assertion Markup Language (SAML) トークンの

  • パッシブ モード(Microsoft Dynamics CRM, CRM Online で WS-Federation を使用する場合)または
  • アクティブ モード(Windows Communication Foundation (WCF) クライアントで WS-Trust を使用する場合)

での使用を規定する一連の WS-* 標準です。

本 Wiki 内


Tags: 認証基盤, クレームベース認証

⚠️ **GitHub.com Fallback** ⚠️