MS_CRMIFD - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
-
TOP > Dynamics CRM > CRMのインストールと構成
- CRMインターネット展開用の構成(IFD)
- CRMの展開マネージャを使用した管理
CRM インターネット展開用の構成
IFD:Internet Facing Deployment
- Microsoft Dynamics CRM の IFD を構成する
https://technet.microsoft.com/ja-jp/library/dn609803.aspx
Internet 経由でのアクセスの場合に必要になる。
- ブラウザー経由
- Outlook 用 Microsoft Dynamics CRM 経由
補足(IFD の本質): IFD は「インターネットに公開する設定」ではなく、
認証方式を Windows 統合認証からクレームベース認証へ切り替える構成である。
社内では Kerberos が使えるが、
社外からは使えない。そこで AD FS をSTSとして立て、
SAML トークンによる認証に置き換える。「ポート転送などはサポートされない」というのは、
単に外から届けばよいという話ではないことを意味している。
CRMのクライアント要件で
タブレット・スマートフォンのネイティブ アプリに IFD が必須とされているのも、
同じ理由による。
- WS-Trust v1.3
-
AD FS の
- v2.0 : Windows Server 2008 R2 別途ダウンロードしてインストール
- v2.1 : Windows Server 2012 に同梱
- v2.2 : Windows Server 2012 R2 に同梱
- HTTPS バインディング
- 単一のバインディング(HTTP + HTTPS は NG)
- 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 を別サーバに分ければこの問題は生じない。
sts.contoso.com
contosoinc.contoso.com
dev.contoso.com
auth.contoso.com
補足(なぜ 4 つも名前が要るのか): CRMのサーバ機能の
フロントエンドの役割に対応している。
名前 対応する役割 sts.AD FS(STS) auth.Web アプリケーション サーバー(認証の入口) dev.検出 Web サービス(ユーザの組織を探す) <組織名>.組織 Web サービス(組織ごとに別名になる) 組織ごとに DNS 名が増える点が運用上のポイントで、
マルチテナント(複数組織)構成では
ワイルドカード証明書が必要になる理由でもある(次節)。
デジタル証明書、公開キー証明書
フェデレーション サーバーのための証明要件
https://technet.microsoft.com/ja-jp/library/Gg308501.aspx
-
Web サイト暗号証明書
-
CRM の Web サイトの証明書
-
内部名・外部名を使用してアクセスされる場合、
サブジェクトの別名に対応した SSL サーバ証明書を使用 -
CRM Web サーバーの役割を複数のコンピュータにインストールする場合、
ワイルドカードに対応した SSL サーバ証明書を使用
-
-
クレーム暗号証明書
-
CRM と STS 間のデータ暗号化。
-
CRM の Web サイト暗号証明書と同じものでも良い。
-
フロントエンドの役割の全てにインストール。
-
-
CRM Web サーバーの役割の実行アカウントである CRMAppPool は、
クレーム暗号証明書の秘密鍵に対する読み取りアクセス許可が必要。
-
-
補足(秘密鍵のアクセス許可は定番のハマりどころ): MMC の
証明書スナップインで述べたとおり、
証明書をストアに入れただけでは、サービスの実行アカウントは秘密鍵を読めない。
[すべてのタスク]→[秘密キーの管理]から
CRMAppPool の ID に読み取り権限を与える必要がある。
これを忘れると「証明書はインストールされているのに認証できない」という
切り分けの難しい症状になる。
-
有効期限切れの 1 ヶ月前には更新する計画を立てる。
-
AD FS が初期構成時に生成する証明書は自動更新。
- トークン証明書
- トークン解読証明書
前提条件のソフトウェア
- PowerShell
- .NET 3.5 SP1
- IIS
- WIF
-
AD FS の外部名(e.g.:
sts.contoso.com)を指しているサービス通信証明書を
ウィザードの開始前に Web サイト上にインストールしておく必要がある。
- ウィザードの起動
- スタンドアロン フェデレーションサーバー
- フェデレーションサービス名で証明書の選択
- 要求プロバイダー信頼が自動的に追加
- 要求規則を要求プロバイダー信頼に追加
- Active Directory の要求規則の編集 → 規則の追加
- 要求規則テンプレート → LDAP 属性を要求として送信
- 規則の構成
- 要求規則名:UPN 要求規則
- 属性のストア:Active Directory
- LDAP 属性:User-Principal-Name
- 出力方向の要求の種類:UPN
- 展開マネージャでクレームベース認証を有効にする。
- Dynamics CRM のための証明書利用者信頼を追加する。
- 構成すると自動的に有効になり、内部アクセスと外部アクセスに適用される。
以下のいずれかの方法でウィザードを開始
- 「操作」ウィンドウで「クレームベース認証の構成」をクリック
- 「タスク」ウィンドウで「クレームベース認証の構成」をクリック
- コンソール・ツリーで「Microsoft Dynamics CRM」を右クリック
して「クレームベース認証の構成」をクリック - 「操作」プルダウン・メニューで「クレームベース認証の構成」をクリック
「セキュリティトークンサービスを指定します」のページで、
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 も無効化される。
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となっているが、
変数名は$ClaimsSettings(sあり)が正しいと思われる。
引用元 PDF の記載をそのまま残しているため、元の表記のままとした。
実行する際は変数名を確認すること。
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 の
- 要求に適用される条件
- 承諾される入力方向の要求
- 発行される出力方向の要求
-
AD FS の
-
3 つの要求規則が必要。
-
手順
-
AD FS 管理コンソールで「証明書利用者信頼」に移動し、
「証明書利用者信頼」を右クリックし「要求規則の編集」をクリック。
-
AD FS 管理コンソールで「証明書利用者信頼」に移動し、
- 「要求規則の編集」のページで「規則の追加」をクリックする。
- 「変換要求規則の追加ウィザード」ページで「AAA」する。
- 要求規則名ボックスに「BBB」と入力する。
- 入力方向の要求の種類で「CCC」を選択する。
- 出力方向の要求の種類で「DDD」を選択する。
- すべての要求値をパススルーするオプションを選択する。
- 「完了」をクリックする。
- AAA:「要求規則テンプレート」で「入力方向の要求を変換」を選択し「次へ」をクリックする。
- BBB:Windows アカウント名を名前に変換(もしくは同等の語句)
- CCC:Windows アカウント名
- DDD:名前
移行メモ(正誤): 元ページの「もしくはは同等の語句」は
「もしくは同等の語句」の誤記と判断し、修正した(3 箇所)。
補足(3 つの要求規則が意味するもの): CRM は
UPN と SID の 2 つでユーザを識別している。
- UPN — 人が読める識別子(
[email protected])- プライマリ SID — AD 内部の一意な識別子
CRMの展開マネージャを使用した管理の
「ユーザのマップ」で AD の GUID にリンクさせると説明されているのは
この SID のことで、ドメインをまたぐと変わるため
再展開時のマッピングが必要になる。
3 つ目の「Windows アカウント名を名前に変換」は、
表示用の名前を渡すための規則である。
展開マネージャでインターネットに接続する展開の構成ウィザードを開始
以下のいずれかの方法でウィザードを開始
- 「操作」ウィンドウで「インターネットに接続する展開の構成」をクリック
- 「タスク」ウィンドウで「インターネットに接続する展開の構成」をクリック
- コンソール・ツリーで「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など。
-
(元ページ未記載)
(元ページ未記載)
(元ページ未記載)
http://www.firebrandtraining.dk/pdf/learn/microsoft/dynamics-crm-2015-courseware.pdf
Add-PSSnapin Microsoft.Crm.PowerShell#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 アクセスの場合)の手順を実行。
以下のように説明されている。
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-* 標準です。
- Dynamics CRM
- CRMのインストールと構成
- CRMの展開マネージャを使用した管理
- CRMのクライアント要件
- クレームベース認証
- フェデレーション サービス (AD FS)
- WS-Federation / SAML
Tags: 認証基盤, クレームベース認証