取り込み CSV の仕様
CSV 一括取込画面でアップロードする CSV ファイルの仕様について説明します。
ファイル形式
- 文字エンコーディングは UTF-8 固定です。BOM 付きの UTF-8 でも取り込めます(BOM は読み込み時に除去されます)。
- Excel で編集した CSV を保存する場合は「CSV UTF-8(コンマ区切り)」を選択してください。Shift_JIS で保存された CSV は取り込めません。
- 1 行目はヘッダー行(カラム名の行)とし、2 行目以降を 1 レコードとして処理します。
- 値にカンマやダブルクォート、改行を含める場合は、CSV の一般的な作法どおりダブルクォートで値を囲みます。
- 値の前後の空白と改行は取り除かれます。値の途中の改行はそのまま登録されます。
カラム名(ヘッダー)の仕様
- カラム名は LDAP の属性名を指定します。大文字と小文字は区別しません(
userPasswordとuserpasswordは同じ扱いです)。 - カラムの並び順は問いません。
- 同じ属性を指すカラムが複数存在する場合はバリデーションエラーになります。
- リソースタイプがユーザーの場合は
username、グループの場合はgroupnameカラムが必須です。これらがエントリーを特定するためのキーになります。 - 属性値が入っていないカラム(空文字)はスキップされます。ただし、登録・属性変更の対象となる属性が 1 つもない場合はバリデーションエラーになります。
特別なカラム
parentDNには、ベースの suffix から見た相対的な DN を指定します。ベースの suffix がdc=example,dc=comのとき、parentDNにou=Usersを指定するとou=Users,dc=example,dc=comにエントリーを登録します。値が空の場合はベースの suffix(dc=example,dc=com)に登録します。parentDNは登録時のみ参照されるカラムです。属性変更で DN を移動することはできません。
ucidmGroups/ucidmMembersは、UCIDM が用意している特別なカラムです。グループのメンバー情報は、システム設定のgroupMemberAttribute(memberUid/member/uniqueMemberなど)に対応する属性へ内部的に変換されて反映されます。DN 形式のメンバー値を使う設定かどうかも、この設定に従って自動的に判定されます。管理者がgroupMemberAttributeの属性名を意識する必要はありません。
重複エラーになるカラムの組み合わせ
同じ意味を持つカラムを同時に指定すると、どちらを優先すべきか決められないためエラーになります。
値の書き方
複数値(マルチバリュー)を指定する
1 つの属性に複数の値をセットするときは、カンマ区切りの文字列で表します。値全体をダブルクォートで囲む必要があります。
上記の場合、user01 は mygroup1 と mygroup2 の 2 つのグループに所属します。
値としてカンマを使用する
カンマ区切りは複数値の区切り文字として解釈されるため、カンマそのものを値として使いたい場合は %{comma} と記述します。%{comma} は CSV の読み込み処理の中で , に置き換えられて登録/更新されます。
上記は description に OSSTech, Inc. という 1 つの値をセットします。
- UCIDM のテンプレートと記法を統一するため、
%を特別な文字として扱っています。 parentDNはカンマを含む DN を指定するカラムであるため、%{comma}に置き換える必要はありません(ou=Sub,ou=Usersのようにそのまま記述します)。
パスワードを自動生成する
password カラムには、値として以下のキーワードを指定できます。キーワードの大文字・小文字は区別しません。
- 生成されたパスワードは、生成パスワード取得ページから取得できます。
- 一時パスワードを発行した場合も、CSV 取込履歴の操作種別は「パスワード変更」と表示されます。
uidNumber / gidNumber の自動割り当て
uidNumber(ユーザー)、gidNumber(グループ)のカラムの値が空の場合、割り当て可能な番号が自動的にセットされます。
- 自動割り当てを行うには、属性定義で対象属性の「複数の値を許可する」がオフである必要があります。
- 多値として設定されている場合、自動割り当ては行われません。
操作種別ごとの仕様(ユーザー)
ユーザーを特定するカラム名は username です。
登録(add)
連携元 LDAP に対してユーザー登録を行います。
- 既に存在するユーザーを指定した場合はエラーになります。
- 初期値の設定がある属性においても、属性の値を CSV で指定した場合、CSV ファイルでの値が使われます。
parentDNカラムに値がある場合はparentDN+ ベースの suffix で DN を生成し、値が空の場合はベースの suffix のみで DN を生成します。passwordカラムの値は、連携元が OpenLDAP か Active Directory かに応じてuserPasswordまたはunicodePwdに置き換えて登録されます。%{random}/%{temp}も使用できます。ucidmGroupsカラムには所属させるグループのgroupnameを指定します。- 指定したグループが存在しない場合はエラーになります。
- 既に所属しているグループがある場合、その所属情報は削除され、CSV で指定した所属情報に上書きされます。
- 値が空のカラムはスキップされます。登録対象の属性が 1 つもない場合はバリデーションエラーになります。
サンプル:
user01はランダムパスワードが生成され、mygroup1とmygroup2に所属します。user02は一時パスワードが発行され、初回ログイン時にパスワード変更が要求されます。user03はuidNumberを明示的に指定し、parentDNが空なのでベースの suffix 直下に登録されます。
属性変更(attributesUpdate)
連携元 LDAP に対してユーザーの属性更新を行います。
- 存在しないユーザーを指定した場合はエラーになります。
- カラム名は
属性名.add/属性名.replace/属性名.delete/属性名.deleteAllのいずれか、または属性名(replace扱い)である必要があります。値が空文字の場合は何も行いません。
ucidmGroupsカラムには所属させるグループのgroupnameを指定します。指定したグループが存在しない場合はエラーになります。ucidmGroups.add:既にメンバーとして登録されている場合はエラーになります。ucidmGroups.replace:既に所属しているグループのメンバー情報を削除し、指定したグループのメンバーとして登録します。ucidmGroups.delete:指定したグループのメンバーとして存在しない場合はエラーになります。ucidmGroups.deleteAll:値がTRUEの場合、対象ユーザーの所属グループのメンバー情報を全て削除します。
passwordカラムには%{random}/%{temp}を指定できます。
サンプル:
user01はmailを上書き、telephoneNumberを追加、mygroup3に追加所属します。user02はtelephoneNumberを追加し、descriptionの値を全て削除します。mailは空文字なので変更されません。
削除(delete)
連携元 LDAP に対してユーザー削除を行います。
- 存在しないユーザーを指定した場合はエラーになります。
username以外のカラムの値は参照しません。- ユーザーの削除にあわせて、所属していたグループのメンバー情報も削除されます。
サンプル:
パスワード変更(passwordUpdate)
連携元 LDAP に対してユーザーのパスワード更新を行います。
- 存在しないユーザーを指定した場合はエラーになります。
usernameとpassword以外のカラムの値は参照しません。passwordの値が空の場合はパスワードを更新しません。%{random}/%{temp}を指定できます。一時パスワードを発行した場合も、CSV 取込履歴の操作種別は「パスワード変更」と表示されます。userPasswordやunicodePwd、passwordに代わるカスタム属性をパスワード属性として使用している場合は、パスワード変更ではなく属性変更(attributesUpdate)で行ってください。
サンプル:
操作種別ごとの仕様(グループ)
グループを特定するカラム名は groupname です。
登録(add)
連携元 LDAP に対してグループ登録を行います。
- 既に存在するグループを指定した場合はエラーになります。
- 初期値の設定がある属性においても、属性の値を CSV で指定した場合、CSV ファイルでの値が使われます。
parentDNカラムに値がある場合はparentDN+ ベースの suffix で DN を生成し、値が空の場合はベースの suffix のみで DN を生成します。ucidmMembersカラムにはメンバーとするユーザーのusernameを指定します。- 指定したユーザーが存在しない場合はエラーになります。
- 値が空のカラムはスキップされます。登録対象の属性が 1 つもない場合はバリデーションエラーになります。
サンプル:
mygroup1はgidNumberが空なので自動割り当てが行われ、user01とuser02がメンバーとして登録されます。
属性変更(attributesUpdate)
連携元 LDAP に対してグループの属性更新を行います。
- 存在しないグループを指定した場合はエラーになります。
- カラム名の書式と動作はユーザーの属性変更と同じです。
ucidmMembersカラムにはメンバーとするユーザーのusernameを指定します。指定したユーザーが存在しない場合はエラーになります。ucidmMembers.add:既にメンバーとして登録されている場合はエラーになります。ucidmMembers.replace:既に登録されているメンバーを削除し、指定したメンバーを登録します。存在しないユーザーが含まれている場合はエラーになります。ucidmMembers.delete:メンバーとして存在しない場合はエラーになります。ucidmMembers.deleteAll:値がTRUEの場合、メンバー情報を全て削除します。
サンプル:
mygroup1は説明を上書きし、user04をメンバーに追加、user02をメンバーから削除します。
削除(delete)
連携元 LDAP に対してグループ削除を行います。
- 存在しないグループを指定した場合はエラーになります。
groupname以外のカラムの値は参照しません。
サンプル: