汎用 CSV コネクタ - テクニカル リファレンス ガイド (プレビュー)
この記事では、汎用 CSV (GCSV) コネクタについて説明します。 この記事は次の製品に適用されます。
MIM 2016 の場合、コネクタは Microsoft ダウンロード センターからダウンロードできます。
このコネクタの動作を確認するには、「 Generic SQL Connector step-by-step (Generic SQL コネクタのステップ バイ ステップ) 」の記事を参照してください。
注意
Azure AD プロビジョニング サービスでは、完全な MIM 同期のデプロイなしで、CSV ファイルにユーザーをプロビジョニングするための軽量のエージェント ベースのソリューションが提供されるようになりました。 ニーズを満たしているかどうかを評価することをお勧めします。 詳細については、こちらを参照してください。
汎用 CSV コネクタの概要
汎用 CSV (GCSV) コネクタを使用すると、CSV ファイルに保持されているユーザーとグループの ID データを、Microsoft Entra Connect Provisioning Agent (ECMA2Host) や Microsoft Identity Manager 2016 (MIM2016) などの Microsoft 製品と統合できます。
PowerShell を使用してインポートまたはエクスポート操作の前後に ID データを管理する機能など、さまざまな機能があります。 バイナリと参照、修飾文字列値のサポート、および複数値文字列を含む複数のデータ型のサポートを提供します。
この記事では、汎用 CSV コネクタの機能と、MIM 2016 用に構成する方法について説明します。
次の表に、コネクタの現在のリリースでサポートされている機能の概要を示します。
機能 | 詳細 |
---|---|
複数の製品サポート | このコネクタの使用は、次の Microsoft 製品でサポートされています。 |
サポートされている CSV ファイル | このコネクタは、最大 3 つの CSV ファイルの構成を使用して、ユーザー (必須) とグループ (省略可能) の管理をサポートします。 |
PowerShell を使用した操作前/後処理 | このコネクタは、インポートまたはエクスポートの前後にユーザーとグループの ID データの前処理または後処理を容易にするために、最大 4 つの PowerShell スクリプトの構成をサポートします。 |
CSV ファイルエンコードがサポートされています | コネクタは、すべての既定の (またはインストールされている) サーバー エンコードの種類 (Unicode、UTF-8、UTF-7、ASCII など) をサポートしています。 |
サポートされている CSV フィールド のデータ型 | コネクタでは、次の属性データ型がサポートされています。 |
CSV フィールド区切り | 文字列値の先頭と末尾を修飾するためのコンマ (,) または印刷可能なアルファメリック文字のサポート。 |
文字列修飾のサポート | 文字列値の先頭と末尾を修飾するための二重引用符 (") または印刷可能なアルファメリック文字のサポート。 |
複数値文字列のサポート | 複数値文字列のサポート |
サポートされているコネクタ操作 | コネクタでは、次の操作がサポートされています。 |
スキーマ | スキーマ検出は動的ですが、完了するには手動で構成する必要があります。 フィールドは、指定された区切り記号 (または "値区切り記号" と呼ばれます) に基づいて動的に識別されます。 フィールド データ型は、構成時に手動で指定されます。 |
前提条件
コネクタを使用する前に、同期サーバーに次の機能があることを確認します。
- Microsoft .NET 4.6.2 Framework 以降
- 次の ID の種類の目的のスキーマを含む CSV ファイル。
- ユーザー ファイル (必須)
- グループ (省略可能)
- グループ メンバー (グループを使用する場合は必須)
- (省略可能)次の操作の種類イベントの前処理と後処理を管理するための PowerShell スクリプト。
- インポート前 – このスクリプトは、インポート操作が実行される前に実行されます。
- インポート後 – このスクリプトは、インポート操作の実行後に実行されます。
- [エクスポート前] – このスクリプトは、エクスポート操作が実行される前に実行されます。
- エクスポート後 – このスクリプトは、エクスポート操作の実行後に実行されます。
MIM 同期サービス アカウントのアクセス許可
重要
MIM 2016 同期サービス アカウントは、CSV ファイルに対してファイル操作を実行し、前処理/後処理 PowerShell スクリプトを実行するセキュリティ コンテキストです。 このサービス アカウントには、構成されているすべての CSV ファイルと PowerShell ファイルに対する読み取り/書き込みアクセス許可が必要です。 また、構成されているスクリプトを実行するには、適切な PowerShell ExecutePolicy アクセス許可 も必要です。
新しいコネクタの作成
次の一覧は、このガイドで説明されている手順の概要です。 まず、MIM Syncs 管理 ロールを持つアカウントを使用して、次のタスクを実行する必要があります。
- MIM 同期Service Managerから [新しい管理エージェント (MA) の作成] ウィンドウを開きます。
- コネクタの種類として [ 汎用 CSV コネクタ ] を選択します。
- インポートまたはエクスポートする CSV ファイルのファイル パスと名前を指定します。
- CSV ファイルのファイル エンコード、値区切り記号、複数値区切り記号、およびテキスト修飾子を指定します。
- 最初の行の値をヘッダー フィールドとして使用するかどうかを選択します。
- CSV ファイルからインポートまたはエクスポートするオブジェクトの種類と属性を選択します。
- MA のパーティション、実行プロファイル、マッピングの詳細を構成します。
- PowerShell スクリプトのスクリプト パスとパラメーター (存在する場合) を指定します。
- MA を実行して、インポート、同期、またはエクスポート操作を実行します。
汎用 CSV コネクタを作成するには、 Synchronization Service で [ 管理エージェント ] と [ 作成] を選択します。 汎用 CSV (Microsoft) コネクタを選択します。
接続
[接続] ページには、[ユーザー]、[グループ]、[グループ メンバー] CSV ファイルのファイルの場所が含まれています。
次の図は、[ 接続] ページの例です。
このページでは、次の CSV ファイルの場所を指定します。
- ユーザー ファイル: ユーザー レコードとその属性値を含む CSV ファイルの完全修飾パス。 このファイルは必須です。
- グループ ファイル: グループ レコードを含む CSV ファイルの完全修飾パス。 このファイルは省略可能です。
- メンバー ファイル: グループ メンバー参照レコードを含む CSV ファイルの完全修飾パス。
重要
MIM 同期サービス アカウントには、指定されたすべての CSV ファイルに対する 読み取 りおよび 書き込み アクセス許可が必要です。 前述のように、ユーザーのみが構成されている場合、グループ ファイルとメンバー ファイルは必要ありません。
新しい Generic SQL コネクタを作成すると、[接続] 画面が最初に表示されます。 最初に、次のセクション情報を指定する必要があります。
機能
このページでは、コネクタの機能について説明します。 コネクタの機能は固定されており、変更することはできませんが、コネクタの動作に関する情報を提供するために、ここで説明します。
次の図は、[ 機能 ] ページの例です。
次のセクションでは、個々の構成とその意味の一覧を示します。
- 識別名スタイル (LDAP): GCSV コネクタは、LDAP (ライトウェイト ディレクトリ アクセス プロトコル) 構文を使用して DN (識別名) を構築し、コネクタ 空間内の各 User オブジェクトまたは Group オブジェクトを一意に識別します。 すべての DN 値は、 CN=[ANCHOR_VALUE],Object=[User|グループ]、O=CSV。
-
オブジェクトの確認 (標準): 通常、同期エンジンは、エクスポート後の後続のデルタ インポートでオブジェクトを再度取得できると想定しています。 これは通常、同期エンジンの動作方法ですが、すべての接続されたシステムがこの方法で動作するわけではありません。 この [標準] 設定により、フォローアップ インポートに警告が表示されなくなります
exported-change-not-reimported
。 - エクスポートの種類 (MultivaluedReferenceAttributeUpdate): エクスポートの種類は、同期中にオブジェクトを書式設定してターゲット システムに送信する方法を指定します。 MultivaluedReferenceAttributeUpdate は、Microsoft Entra IDで動作するように設計されたエクスポートの種類です。 変更された属性のみが送信されます。 値型属性の場合は AttributeReplace を使用し、参照属性には AttributeUpdate を使用します。
- 正規化 (なし): 正規化とは、データを一貫した形式に標準化することを指します。 None は、特定の正規化ルールが適用されていないことを意味します。 データは、コネクタによる追加の変換なしでそのまま残ります。
スキーマ 1 (CSV ファイル形式の構成)
GCSV コネクタでは、3 種類の区切り記号 (または区切り記号) を使用して、CSV フィールドとその値を区切って解析します。
このページには、これらの区切り記号の文字値の設定と、ファイルを CSV として作成するために使用されたエンコードの種類が含まれています。
次の図は、 スキーマ 1 (CSV ファイル形式の構成) ページの画像です 。
次のセクションでは、個々の構成の一覧を示します。
- スキーマ検出にヘッダーを使用する: このオプションを選択すると、コネクタは各 CSV ファイルの最初のレコードを ID データ レコードではなくヘッダー レコードとして扱うように指示します。 このオプションが選択されていない場合、コネクタは Attribute という名前 に一意のインクリメントされた整数値 ( Attribute1、 Attribute2 など) を追加して割り当て、の最初の行を ID データ レコードとして扱います。
- 値の区切り記号: この文字は、CSV レコードのフィールド (つまり値) を区切ります。 コンマ (,) が既定ですが、印刷できる任意の英数字を使用できます。
- 複数値区切り記号: この種類の区切り記号は、複数値の文字列 (プロキシ アドレスなど) または参照属性 (下位など) の個々の値を区切るために使用されます。既定値はセミコロン (;)ですが、印刷可能な英数字は使用できます。
- テキスト修飾子: 文字列値に区切り記号として解釈される文字 (コンマなど) が含まれている場合は、CSV パーサーが文字列を 1 つのフィールドとして正しく解釈できるように、値を修飾する必要があります。 二重引用符 (") は既定ですが、印刷できる任意の英数字を使用できます。
注意
CSV ファイルのスキーマには、複数値のフィールドが含まれていないか、文字列修飾を必要とする値が含まれていない場合がありますが、区切り文字の種類ごとに一意の印刷可能文字を指定する必要があります。
- [ファイルのエンコード]: この設定は、[接続] タブに追加された CSV ファイルで使用されるエンコードを示します。CSV ファイルのエンコードと一致していることを確認します。
注意
CSV ファイルのエンコードの種類がわからない場合は、既定の Unicode エンコードの種類を使用してください。 Unicode は、多くの文字と記号をサポートする一般的な標準であり、ほとんどの言語または文字セットでテキスト データをエンコードする場合に適したオプションです。
スキーマ 2 (ID と参照フィールドの構成)
アンカー値は、CSV ファイル内のレコードの一意の識別子です。 1 つのレコードと他のレコードを区別します。 GCSV コネクタでは、この値を使用して、関連するコネクタ スペース オブジェクトを識別する識別名 (DN) も作成されます。
このページでは、[接続] ページに一覧表示されている CSV ファイルごとにアンカー属性の設定が設定されます。
次の図は、 スキーマ 2 (ID と参照フィールドの構成) ページの例です 。
次のセクションでは、このページの個々の構成の一覧を示します。
-
User
- User Anchor: ユーザー レコードのアンカー値として機能する Users ファイルのフィールド。 Users ファイルの最初のヘッダー フィールドが既定の選択肢です。
- User Anchor 属性の種類: これは、選択したアンカーの属性の種類です。
-
グループ
- グループ アンカー: グループ レコードのアンカー値として機能する Groups ファイル内のフィールド。 グループ ファイルの最初のヘッダー フィールドが既定の選択肢です。
- [Group Anchor attribute type]\(グループ アンカー属性の種類\): これは、選択したアンカーの属性の種類です。
-
メンバー
- 親グループ ID: Groups CSV ファイルの親グループと同じ (アンカー) 値を持つ Members ファイル内のフィールド。 既定では、Members ファイルの最初のフィールドが使用されます。
- メンバー ID: Users または Groups CSV ファイルと同じ (アンカー) 値を持つ Members ファイル内のフィールド。 メンバー ファイルの 2 番目のフィールドは、既定で選択されています。
- メンバー オブジェクトの種類: メンバーのオブジェクトの種類を示す "User" または "Group" 文字列値を含むフィールド。 このフィールドは、メンバー ファイルに 2 つ以上のフィールドが含まれている場合にのみ必要です。 [オブジェクトの種類] フィールドには、文字列値 "User" または "Group" のみが含まれている必要があります。このフィールドが見つからない場合、コネクタは Members ファイル レコードが User オブジェクト メンバーを参照していることを前提としています。 メンバー ファイルで見つかった 3 番目のフィールドは、既定で選択されています。
重要
アンカーとして使用するように指定される属性の名前は、すべてのオブジェクト型スキーマで一意である必要があります。 これには、グループ メンバー ファイルで指定されたアンカーが含まれます。
スキーマ 3 (ユーザー ファイル属性スキーマ構成)
このページでは、Users CSV ファイルのスキーマで識別される各フィールドのデータ型と、複数の値を含めることができるかどうかを指定して説明します。
次の図は、 スキーマ 3 (ユーザー ファイル属性スキーマ構成) ページの例です 。
次のセクションでは、属性データ型の割り当てを行う際の考慮事項を示します。
サポートされるデータ型
GCSV コネクタでは、次のセクションのデータ型の使用がサポートされています。
- ブール値: true または false のいずれかを指定できる値。
- バイナリ: 一連のバイトとして格納される値。通常は、画像やその他のファイルなどのデータを格納するために使用されます。
- 整数: 小数点以下の桁数を含まない整数の値。
- 文字列: テキスト データを格納するために通常使用される一連の文字である値。
- 参照: 別のユーザー オブジェクトへの参照である値。 CSV ファイルで参照値を指定するには、参照されるユーザー オブジェクトのアンカー値をフィールドに設定します。
重要
ユーザーまたはグループ参照属性は、ユーザー オブジェクトの参照にのみ使用できます。 これは、オブジェクト型フィールドが指定されている限り、ユーザー参照とグループ参照の両方を含むことができる Group オブジェクトの Member 属性には適用されません。
サポートされている Multiple-Value データ型
コネクタでは、次のデータ型に対してのみ複数値属性の使用がサポートされています。
- String
注意
User オブジェクトと Group オブジェクトの両方のスキーマに同じ名前の (アンカー以外の) 属性がある場合、それらの間に異なるデータ型が割り当てられない可能性があります。 どちらも同じデータ型を共有する必要があります。
スキーマ 4 (グループ ファイル属性スキーマ構成)
このページは、グループ CSV ファイルのスキーマで識別される各フィールドのデータ型と、複数の値を持つことができるかどうかを指定および説明するためのページです。
次の図は、 スキーマ 4 (グループ ファイル属性スキーマ構成) ページの例です 。
スキーマ 3 で提供されるガイダンス (ユーザー ファイル属性の構成もこのセクションに適用されます。 .
最初の完全インポート操作を実行すると、コネクタ スペースは次の図のようになります。
グローバル パラメーター (PowerShell スクリプトの構成)
このページでは、インポート操作やエクスポート操作の前後に実行される PowerShell スクリプトを構成できます。 これらの機能により、ID ユーザーとグループ レコードに対してさまざまな前処理アクションと事後処理アクションを実行する機会が提供されます。
次の図は、[ グローバル パラメーター] ページの例です。
次のセクションでは、このページの個々の構成設定の一覧を示します。
- スクリプトのタイムアウト (分): スクリプトが自動的に中止されるまでに実行される分数。 この設定の既定値は 100 で、0 より大きい値が必要です。
- 事前インポート スクリプト ファイル: インポートの前に実行する必要がある PowerShell スクリプトへの完全修飾パス。 この設定は省略可能であり、値は必要ありません。
- インポート後のスクリプト ファイル: インポート後に実行する必要がある PowerShell スクリプトの完全修飾パス。 この設定は省略可能であり、値は必要ありません。
- 事前エクスポート スクリプト ファイル: エクスポートの前に実行する必要がある PowerShell スクリプトへの完全修飾パス。 この設定は省略可能であり、値は必要ありません。
- エクスポート後スクリプト ファイル: エクスポート後に実行する必要がある PowerShell スクリプトの完全修飾パス。 この設定は省略可能であり、値は必要ありません。
PowerShell スクリプトの実行と入力パラメーター
GCSV コネクタは、構成された各 PowerShell スクリプトを独自のセッションで実行し、ステージ間でのパラメーターの受け渡しはサポートされていません。
コネクタは、OperationType という名前の各スクリプトに 1 つの入力パラメーターを渡します。 このパラメーターの値は、実行される実行プロファイル操作によって異なり、次の 3 つの値のいずれかになります。
重要
インポート操作またはエクスポート操作前の CSV ファイルの動的な作成はサポートされていません。 実行プロファイルを実行するには、すべての CSV ファイルが存在する必要があります。
PowerShell 入力パラメーター: OperationType
入力パラメーターの使用はサポートされていませんが、GCSV コネクタは、すべての PowerShell スクリプト OperationType
の実行に 1 つの入力パラメーターを渡します。
- Full – この値は、完全なインポートまたは完全エクスポートの操作中に提供されます。
- Delta – この値はエクスポート操作中に提供されます。
このパラメーター値は、PowerShell スクリプトのロジック内で使用して、実行する適切な前処理/後処理操作またはアクションを決定できます。
Provisioning Hierarchy
CSV ファイルは階層構造に情報を格納しないため、GCSV コネクタは階層型プロビジョニング構成をサポートしていません。
次の図は、[ プロビジョニング階層 ] ページの例です。
パーティションと階層
GCSV コネクタは、次の LDAP 形式に従って、コネクタ スペース内のすべてのユーザーおよびグループ レコードに対して個別の識別名 (DN) を構築します。
CN=[ANCHOR_VALUE],Object=User|Group,O=CSV
次の図は、[ パーティションと階層] ページの例です。
オブジェクトの種類
GCSV コネクタでは、少なくとも User オブジェクトの種類を選択する必要があります。 Group オブジェクトの種類の選択は省略可能です。
次の図は、[ オブジェクトの種類] ページの例です。
属性
このページには、選択したすべてのオブジェクト型スキーマのすべての属性の正規化された一覧が表示されます。
次の図は、[ 属性] ページの例です。
注意
Member 属性は、Groups が選択されている場合にのみ存在し、グループ メンバー CSV ファイルに保持されているオブジェクトへの参照が含まれます。
アンカー
GCSV コネクタでは、対応する CSV ファイルのアンカー ID フィールドとは異なる複雑なアンカーやアンカー属性の構成の使用はサポートされていません。
このページに表示されるアンカーの指定を変更するには、スキーマ 2 (アンカー構成) に戻ります。
次の図は、[ アンカー] ページの例です。
CSV レコードのプロビジョニング
GCSV コネクタが新しい User オブジェクトまたは Group オブジェクトを対応する CSV ファイルに追加するには、新しいコネクタ スペース オブジェクトをプロビジョニングする必要があります。
MIM 2016 宣言型プロビジョニングを使用するか、独自の MIM 同期規則拡張機能を記述するかにかかわらず、新しいコネクタ スペース オブジェクトには、次の形式を使用して DN が構築されている必要があります。
CN=[ANCHOR_VALUE],Object=User|グループ、O=CSV
次の表に、各コンポーネント値の詳細を示します。
コンポーネント | Notes |
---|---|
CN=[ANCHOR VALUE] | 共通名 (CN) は に対して一意の値である必要があり、CSV ファイルの指定されたアンカー フィールドに書き込まれます。 |
Object=User/Group | このコンポーネントは、このコネクタのオブジェクトの種類を示します。 "User" または "Group" のみがサポートされます。 |
O=CSV | すべての GCSV コネクタ スペース オブジェクトに共通するルート コンポーネント。 |
次の図は、新しい User オブジェクトを GCSV コネクタにプロビジョニングするときに DN を適切に構築する方法を示す 同期規則 です。
次のコードは、 Metaverse Rules Extensions を使用した同等のプロビジョニング ロジックを示しています。
void IMVSynchronization.Provision(MVEntry mventry)
{
if (mventry["employeeID"].IsPresent)
{
ConnectedMA GCSVConnector = = mventry.ConnectedMAs["Generic CSV Conenctor"];
if (GCSVConnector.Connectors.Count == 0)
{
CSEntry csentry = GCSVConnector.Connectors.StartNewConnector("user");
//Sets DN to "CN=[ANCHOR_VALUE],OBJECT=[User|Group],O=CSV"
csentry.DN = GCSVConnector.EscapeDNComponent("CN=" + mventry["employeeID"].Value).Concat("OBJECT=User,O=CSV");
csentry["AccountName"].StringValue = mventry["accountName"].StringValue;
csentry["CountryCode"].IntegerValue = 1;
csentry["DisplayName"].Value = mventry["displayName"].Value;
csentry["ProxyAddresses"].Value = mventry["proxyAddressCollection"].Value;
csentry["IsActive"].BooleanValue = true;
csentry["Manager"].Value = mventry["manager"].Value;
csentry["ProfilePic"].Value = mventry["pic"].Value;
csentry.CommitNewConnector();
}
}
}
前の図では、 関数を EcapeDNComponent()
使用して、アンカー値が LDAP 構文に準拠するように適切にエスケープされていることを確認します。
重要
DN を構築するときにアンカー値を不適切にエスケープすると、エラーが発生 invalid‑dn
します。
CSV フィールドの書式設定の例
次のセクションでは、CSV ファイル内のさまざまなデータ型を書式設定する方法の例を示します。 すべての例 次のセクションでは、コネクタの既定のフィールド区切り記号設定を使用することを前提としています。
- 値の区切り: コンマ (,)
- 複数値区切り記号: Semi-Colon (;)
- テキスト修飾子: 二重引用符 (")
例: テキスト修飾
文字列値に区切り記号として解釈される文字 (コンマなど) が含まれている場合は、CSV パーサーが文字列を 1 つのフィールドとして正しく解釈できるように、値を修飾する必要があります。
次のセクション CSV の例では、 DisplayName フィールドに修飾テキストとして書式設定された値がどのように含まれているかを示します。
EmployeeID,DisplayName
E001,"Smith, John"
E002,"Doe, Jane"
E003,"Perez, Juan"
例: 複数値を持つ文字列を区切る
1 つの文字列フィールド内に複数の文字列値を指定するには、 値を複数値区切り記号で区切ります。 次のセクション CSV の例では、複数の値を持つ ProxyAddress フィールドの方法を示します。
EmployeeID,DisplayName,ProxyAddresses
E001,"Smith, John",SMTP:john.smith@contoso.com;smtp:js001@contoso.com
E002,"Doe, Jane",SMTP:jane.doe@contoso.com;smtp:jd002@contoso.com
注意
複数値の String では、文字列修飾値の使用もサポートされます。 テキスト修飾値は、複数値の区切り記号で区切る場合があります。
例: 参照フィールド
CSV ファイルで参照値を指定するには、参照されるユーザー オブジェクトのアンカー値をフィールドに設定します。 次のセクション CSV の例では、[マネージャー] フィールドに参照先のユーザー レコードのアンカー値が含まれています。
EmployeeID,DisplayName,Manager
E001,"Smith, John",
E002,"Doe, Jane",E001
E003,"Doe, Jane",
E004,"Perez, Juan",
例: バイナリ フィールド
CSV ファイルでバイナリ値を表現するには、CSV ファイルと同じエンコードの種類を使用する base64 文字列に変換する必要があります。 次のセクション PowerShell 関数は、文字列値を Unicode で base64 でエンコードされた文字列にエンコードする方法を示しています。
function ConvertTo-Base64([string]$text)
{
$bytes = [System.Text.Encoding]::Unicode.GetBytes($text)
$encodedText = [System.Convert]::ToBase64String($bytes)
return $encodedText
}
text という入力パラメーターを受け取り、Unicode で base64 でエンコードされた文字列を返す C# の同等の関数を次に示します。
public static string ConvertToBase64(string text)
{
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(text);
string encodedText = System.Convert.ToBase64String(bytes);
return encodedText;
}
例: ブール型フィールド
ブール型フィールドを含む CSV ファイルでは、値を示すために True または False のテキストを使用する必要があります。 次のセクションでは、
EmployeeID,DisplayName,IsActive
E001,"Smith, John",true
E002,"Doe, Jane",true
E003,"Perez, Juan",false
既知の制限事項
次の一覧には、GCSV コネクタの既知の制限事項が含まれています。
-
参照属性
- group Member 属性以外の複数値参照属性はサポートされていません。
- 参照値は、ユーザー オブジェクトを参照する必要があります。 グループ オブジェクトへの参照はサポートされていません。
-
アンカー
- ユーザー オブジェクトとグループ オブジェクト間のアンカー値の重複はサポートされていません。
- アンカー属性の名前は、ユーザー スキーマとグループ スキーマ間で一意である必要があります。
-
PowerShell
- PowerShell スクリプトへの入力変数の渡しはサポートされていません。