Show Table of Contents
11.6. ユーザーおよびグループへの外部プロビジョニングシステムの使用
Identity Management (IdM) は、ID 管理用の外部ソリューションを使用して IdM でユーザーおよびグループ ID がプロビジョニングされるように、お使いの環境を設定するサポートをします。以下のセクションは、このような設定の例について説明します。例には以下が含まれます。
11.6.1. 外部プロビジョニングシステムで使用されるようにユーザーアカウントを設定する手順
以下の手順では、外部プロビジョニングシステムが IdM ユーザーアカウントを使用するように設定する方法を説明します。適切なパスワードポリシーが指定されたグループにアカウントを追加すると、外部プロビジョニングシステムが IdM でユーザーのプロビジョニングを管理できるようになります。
- stage ユーザーの追加権限のあるユーザー
provisionatorを作成します。外部プロビジョニングシステムがこのユーザーアカウントを使用して新しい stage ユーザーを追加します。provisionatorユーザーアカウントを追加します。$ ipa user-add provisionator --first=provisioning --last=account --password
provisionatorユーザーに必要な権限を割り当てます。stage ユーザーの追加を管理するSystem Provisioningというカスタムロールを作成します。$ ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning"
Stage User Provisioningの権限をロールに割り当てます。この権限により、stage ユーザーが追加できるようになります。$ ipa role-add-privilege "System Provisioning" --privileges="Stage User Provisioning"
provisionatorユーザーをロールに追加します。$ ipa role-add-member --users=provisionator "System Provisioning"
- ユーザーアカウントの管理権限を持つ
activatorユーザーを作成します。このユーザーアカウントを使用すると、外部プロビジョニングシステムにより追加された stage ユーザーが自動的にアクティベートされます。activatorユーザーアカウントを追加します。$ ipa user-add activator --first=activation --last=account --password
activatorユーザーに必要な権限を割り当てます。デフォルトのUser Administratorロールにこのユーザーを追加します。$ ipa role-add-member --users=activator "User Administrator"
- サービスおよびアプリケーションアカウントのユーザーグループを作成します。
$ ipa group-add service-accounts
- グループのパスワードポリシーを更新します。以下のポリシーは、アカウントのパスワードの期限切れやロックアウトがされないようにしますが、複雑なパスワードを求めることでリスクの可能性を低減します。
$ ipa pwpolicy-add service-accounts --maxlife=10000 --minlife=0 --history=0 --minclasses=4 --minlength=20 --priority=1 --maxfail=0 --failinterval=1 --lockouttime=0
- サービスおよびアプリケーションアカウントのグループにプロビジョニングアカウントとアクティベーションアカウントを追加します。
$ ipa group-add-member service-accounts --users={provisionator,activator} - ユーザーアカウントのパスワードを変更します。
$ kpasswd provisionator $ kpasswd activator
新規の IdM ユーザーのパスワードはすぐに失効するため、パスワードを変更する必要があります。
追加リソース:
- 新規ユーザーの追加に関する情報は、「stage または Active ユーザーの追加」を参照してください。
- 他のユーザーアカウントの管理に必要な権限をユーザーに割り当てる方法については 「管理者以外のユーザーによるユーザーエントリーの管理許可」を参照してください。
- IdM パスワードポリシーの管理に関する詳しい情報は27章パスワードポリシーの定義を参照してください。
11.6.2. IdM が自動的に stage ユーザーアカウントをアクティベートするように設定する手順
以下の手順では、stage ユーザーをアクティベートするスクリプトを作成する方法を説明します。システムは指定した間隔で自動的にスクリプトを実行します。これにより、新規ユーザーアカウントを自動的にアクティベートし、作成後すぐに利用できるようにします。
重要
以下の手順では、スクリプトを IdM に追加する前に、新規ユーザーアカウントの検証が必要ないとの想定です。たとえば、外部プロビジョニングシステムの所有者によりユーザーがすでに検証済みの場合には、検証は必要ありません。
IdM サーバーの 1 つで、アクティベーションプロセスを有効化するだけで十分です。
- アカウントのアクティベート用に keytab ファイルを生成します。
# ipa-getkeytab -s example.com -p "activator" -k /etc/krb5.ipa-activation.keytab
複数の IdM サーバーでアクティベーションプロセスを有効にするには、1 つのサーバーでのみ keytab ファイルを作成し、他のサーバーにその keytab ファイルをコピーします。 - 以下の内容を含む
/usr/local/sbin/ipa-activate-allスクリプトを作成して全ユーザーをアクティベートします。#!/bin/bash kinit -k -i activator ipa stageuser-find --all --raw | grep " uid:" | cut -d ":" -f 2 | while read uid; do ipa stageuser-activate ${uid}; done ipa-activate-allスクリプトのパーミッションと所有者を編集して、実行可能なファイルに変更します。# chmod 755 /usr/local/sbin/ipa-activate-all # chown root:root /usr/local/sbin/ipa-activate-all
systemdのユニットファイルである/etc/systemd/system/ipa-activate-all.serviceを作成して以下の内容を追加します。[Unit] Description=Scan IdM every minute for any stage users that must be activated [Service] Environment=KRB5_CLIENT_KTNAME=/etc/krb5.ipa-activation.keytab Environment=KRB5CCNAME=FILE:/tmp/krb5cc_ipa-activate-all ExecStart=/usr/local/sbin/ipa-activate-all
systemdタイマーである/etc/systemd/system/ipa-activate-all.timerを作成して以下の内容を追加します。[Unit] Description=Scan IdM every minute for any stage users that must be activated [Timer] OnBootSec=15min OnUnitActiveSec=1min [Install] WantedBy=multi-user.target
ipa-activate-all.timerを有効化します。# systemctl enable ipa-activate-all.timer
追加リソース:
11.6.3. 外部プロビジョニングシステムの LDAP プロバイダーが IdM のアイデンティティーを管理するように設定する手順
以下の章では、さまざまなユーザーおよびグループの管理オプションのテンプレートを紹介します。これらのテンプレートを使用すると、プロビジョニングシステムの LDAP プロバイダーが IdM ユーザーアカウントを管理できるように設定できます。たとえば、従業員が退職した後にユーザーアカウントを無効にするようにシステムを設定することができます。
LDAP を使用したユーザーアカウントの管理
下層の Directory Server データベースを編集して、新規ユーザーエントリーの追加、既存のエントリーの変更、異なるライフサイクルの状態間でのユーザーの移動、ユーザーの削除ができます。データベースを編集するには
ldapmodify ユーティリティーを使用します。
以下の LDIF 形式のテンプレートには、
ldapmodify を使用して変更する属性に関する情報が含まれます。例に関する詳しい手順は 例11.2「ldapmodify での stage ユーザーへの追加」 および 例11.3「ldapmodify でのユーザーの保存」を参照してください。
- 新規 stage ユーザーの追加
- UID および GID が自動的に割り当てられたユーザーの追加
dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=example,dc=com changetype: add objectClass: top objectClass: inetorgperson uid: user_login sn: surname givenName: first_name cn: full_name
UID および GID が静的に割り当てられたユーザーの追加dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=example,dc=com changetype: add objectClass: top objectClass: person objectClass: inetorgperson objectClass: organizationalperson objectClass: posixaccount uid: user_login uidNumber: UID_number gidNumber: GID_number sn: surname givenName: first_name cn: full_name homeDirectory: /home/user_login
stage ユーザーの追加時に IdM オブジェクトクラスを指定する必要はありません。IdM は、ユーザーのアクティベート後に、これらのクラスを自動的に追加します。作成したエントリーの識別名 (DN) はuid=user_loginで開始する必要がある点に注意してください。 - 既存ユーザーの変更
- ユーザーを変更する前に、ユーザーの識別名 (DN) をユーザーのログインで検索して取得します。以下の例では、user_allowed_to_read ユーザーは、ユーザーおよびグループの情報を読み込む権限があり、password はユーザーのパスワードとなっています。
# ldapsearch -LLL -x -D "uid=user_allowed_to_read,cn=users,cn=accounts,dc=example, dc=com" -w "password" -H ldap://server.example.com -b "cn=users, cn=accounts, dc=example, dc=com" uid=user_login
ユーザーの属性を変更する方法:dn: distinguished_name changetype: modify replace: attribute_to_modify attribute_to_modify: new_value
ユーザーを無効化する方法:dn: distinguished_name changetype: modify replace: nsAccountLock nsAccountLock: TRUE
ユーザーを有効化する方法:dn: distinguished_name changetype: modify replace: nsAccountLock nsAccountLock: FALSE
ユーザーを保存する方法:dn: distinguished_name changetype: modrdn newrdn: uid=user_login deleteoldrdn: 0 newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=example
nssAccountLock属性を更新しても、stage および preserved ユーザーには影響はありません。更新操作が正常に完了しても、属性の値はnssAccountLock: TRUEのままです。 - 新規グループの作成
- 新規グループの作成方法:
dn: cn=group_distinguished_name,cn=groups,cn=accounts,dc=example,dc=com changetype: add objectClass: top objectClass: ipaobject objectClass: ipausergroup objectClass: groupofnames objectClass: nestedgroup objectClass: posixgroup cn: group_name gidNumber: GID_number
- グループの変更
- グループを変更する前に、グループ名で検索してグループの識別名 (DN) を取得します。
# ldapsearch -YGSSAPI -H ldap://server.example.com -b "cn=groups,cn=accounts,dc=example,dc=com" "cn=group_name"
既存のグループの削除方法:dn: group_distinguished_name changetype: delete
グループにメンバーを追加する方法:dn: group_distinguished_name changetype: modify add: member member: uid=user_login,cn=users,cn=accounts,dc=example,dc=com
グループからメンバーを削除する方法:dn: distinguished_name changetype: modify delete: member member: uid=user_login,cn=users,cn=accounts,dc=example,dc=com
stage または preserved ユーザーをグループには追加しないでください。更新が正常に完了した場合でも、ユーザーはグループのメンバーとして更新されません。active ユーザーだけがグループに所属します。
例11.2 ldapmodify での stage ユーザーへの追加
標準の
interorgperson オブジェクトクラスを使用して stageuser ユーザーを追加する方法:
ldapmodifyを使用してユーザーを追加します。# ldapmodify -Y GSSAPI SASL/GSSAPI authentication started SASL username: admin@EXAMPLE SASL SSF: 56 SASL data security layer installed. dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=example changetype: add objectClass: top objectClass: inetorgperson cn: Stage sn: User adding new entry "uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=example"
- ステージエントリーの内容を検証し、必要とされる POSIX 属性がプロビジョニングシステムに追加され、ステージエントリーのアクティベートの準備ができていることを確認します。新規 stage ユーザーの LDAP 属性を表示するには、
ipa stageuser-show --all --rawコマンドを使用します。ユーザーはnsaccountlock属性で明示的に無効化されていることに注意してください。$ ipa stageuser-show stageuser --all --raw dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=example uid: stageuser sn: User cn: Stage has_password: FALSE has_keytab: FALSE nsaccountlock: TRUE objectClass: top objectClass: inetorgperson objectClass: organizationalPerson objectClass: person
例11.3 ldapmodify でのユーザーの保存
LDAP
modrdn 操作を使用して user を保存する方法:
ldapmodifyユーティリティーを使用してユーザーエントリーを変更します。$ ldapmodify -Y GSSAPI SASL/GSSAPI authentication started SASL username: admin@EXAMPLE SASL SSF: 56 SASL data security layer installed. dn: uid=user1,cn=users,cn=accounts,dc=example changetype: modrdn newrdn: uid=user1 deleteoldrdn: 0 newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=example modifying rdn of entry "uid=user1,cn=users,cn=accounts,dc=example"
- オプションで、すべての preserved ユーザーを表示して、このユーザーが保存されたことを確認します。
$ ipa user-find --preserved=true --------------- 1 user matched --------------- User login: user1 First name: first_name Last name: last_name ... ---------------------------- Number of entries returned 1 ----------------------------

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.