Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
11.6. ユーザーおよびグループへの外部プロビジョニングシステムの使用
Identity Management は、環境の設定をサポートしているため、ID 管理用の外部ソリューションを使用して IdM でユーザーおよびグループ ID をプロビジョニングできます。本セクションでは、このような設定の例を説明します。この例には以下が含まれます。
11.6.1. 外部プロビジョニングシステムが使用するユーザーアカウントの設定
この手順では、外部プロビジョニングシステムが使用する 2 つの IdM ユーザーアカウントを設定する方法を説明します。適切なパスワードポリシーが指定されたグループにアカウントを追加すると、外部プロビジョニングシステムが IdM でユーザーのプロビジョニングを管理できるようになります。
- stage ユーザーを追加する権限を持つ
provisionator
という名前のユーザーを作成します。ユーザーアカウントは、新規ステージユーザーを追加するために外部プロビジョニングシステムによって使用されます。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
の権限をロールに追加します。この特権により、ステージユーザーを追加できます。$ ipa role-add-privilege "System Provisioning" --privileges="Stage User Provisioning"
provisionator
ユーザーをロールに追加します。$ ipa role-add-member --users=provisionator "System Provisioning"
- ユーザーアカウントを管理する権限を持つ
activator
ユーザーを作成します。ユーザーアカウントは、外部プロビジョニングシステムによって追加されるステージユーザーを自動的にアクティベートするために使用されます。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 パスワードポリシーの管理の詳細は、28章パスワードポリシーの定義 を参照してください。
11.6.2. ステージユーザーアカウントを自動的にアクティベートするための IdM の設定
この手順では、ステージユーザーをアクティベートするスクリプトを作成する方法を説明します。システムは、指定した間隔でスクリプトを自動的に実行します。これにより、新規ユーザーアカウントが自動的にアクティベートされ、作成直後に使用できます。
重要
この手順では、スクリプトが 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. IdM アイデンティティーを管理するための外部プロビジョニングシステムの LDAP プロバイダーの設定
本セクションでは、さまざまなユーザーおよびグループ管理操作のテンプレートを説明します。テンプレートを使用して、プロビジョニングシステムの LDAP プロバイダーを設定して、IdM ユーザーアカウントを管理できます。たとえば、従業員が退職した後にユーザーアカウントを非アクティブにするようにシステムを設定できます。
LDAP を使用したユーザーアカウントの管理
基盤の Directory Server データベースを編集して、新しいユーザーエントリーの追加、既存のエントリーの変更、ライフサイクルの異なる状態間でのユーザーの移動、またはユーザーの削除を行うことができます。データベースを編集するには、
ldapmodify
ユーティリティーを使用します。
以下の LDIF 形式のテンプレートは、
ldapmodify
を使用して変更する属性に関する情報を提供します。詳細な手順例は、例11.2「ldapmodify
を使用したステージユーザーの追加」 および 例11.3「ldapmodify
でのユーザーの保存」 を参照してください。
- 新規ステージユーザーの追加
- 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
ステージユーザーの追加時に 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
属性の更新は、ステージユーザーおよび保存済みユーザーには影響を与えません。更新操作が正常に完了しても、属性値は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
ステージまたは保存済みユーザーをグループに追加しないでください。更新操作が正常に完了しても、ユーザーはグループのメンバーとしては更新されません。アクティブなユーザーのみがグループに所属できます。
例11.2 ldapmodify
を使用したステージユーザーの追加
標準の
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"
- stage エントリーの内容を検証して、プロビジョニングシステムが必要なすべての POSIX 属性を追加し、stage エントリーをアクティブ化する準備ができていることを確認することを検討してください。新規 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
操作を使用して ユーザー
を保存するには、以下を実行します。
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"
- 必要に応じて、保存済みユーザーをリスト表示して、ユーザーが保持されていることを確認します。
$ ipa user-find --preserved=true --------------- 1 user matched --------------- User login: user1 First name: first_name Last name: last_name ... ---------------------------- Number of entries returned 1 ----------------------------