Identity Management での外部 Red Hat ユーティリティーの使用
IdM でのサービスと Red Hat 製品の統合
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 IdM と Red Hat 製品の統合 リンクのコピーリンクがクリップボードにコピーされました!
IdM と統合する他の Red Hat 製品のドキュメントを紹介します。IdM ユーザーがサービスにアクセスできるように、これらの製品を設定することができます。
第2章 外部アイデンティティープロバイダーを使用した IdM に対する認証 リンクのコピーリンクがクリップボードにコピーされました!
OAuth 2 デバイス認可フローをサポートする外部アイデンティティープロバイダー (IdP) にユーザーを関連付けることができます。
このユーザーが SSSD を使用して認証すると、外部 IdP で認証と認可が実行された後、Kerberos チケットを使用した RHEL Identity Management (IdM) シングルサインオン機能がユーザーに付与されます。
主な機能は次のとおりです。
-
ipa idp-*コマンドによる外部 IdP への参照の追加、変更、および削除 ipa user-mod --user-auth-type=idpコマンドを使用したユーザーの IdP 認証の有効化- サポート対象
-
Pluggable Authentication Module (PAM) ライブラリーの呼び出しを可能にする
keyboard-interactive認証方法を有効にして、SSH 経由でリモートからログインする場合。 -
logindサービスを介してコンソールでローカルにログインする場合。 kinitユーティリティーを使用して Kerberos TGT (Ticket-Granting Ticket) を取得する場合。- 現在サポート対象外
- IdM WebUI に直接ログインする場合。IdM WebUI にログインするには、最初に Kerberos チケットを取得する必要があります。
- Cockpit WebUI に直接ログインする場合。Cockpit WebUI にログインするには、最初に Kerberos チケットを取得する必要があります。
2.1. IdM を外部 IdP に接続する利点 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、クラウドサービスプロバイダーなどの外部 ID ソースに保存されているユーザーが、Identity Management (IdM) 環境に追加された RHEL システムにアクセスできるようにすることができます。そのために、これらのユーザーの Kerberos チケットを発行する認証および認可プロセスをその外部エンティティーに委任できます。
この機能を使用して IdM の機能を拡張し、外部 ID プロバイダー (IdP) に保存されているユーザーが IdM によって管理される Linux システムにアクセスできるようにすることができます。
2.2. IdM が外部 IdP を介してログインを組み込む方法 リンクのコピーリンクがクリップボードにコピーされました!
SSSD 2.7.0 には、idp Kerberos 事前認証方法を実装する sssd-idp パッケージが含まれています。この認証方法は、OAuth 2.0 Device Authorization Grant フローに従って、認可の判断を外部 IdP に委任します。
-
IdM クライアントユーザーは、コマンドラインで
kinitユーティリティーを使用して Kerberos TGT の取得を試行するなどして、OAuth 2.0 デバイス認可付与フローを開始します。 - 特別なコードと Web サイトのリンクが認可サーバーから IdM KDC バックエンドに送信されます。
- IdM クライアントは、リンクとコードをユーザーに表示します。この例では、IdM クライアントはコマンドラインにリンクとコードを出力します。
ユーザーは、別のホストや携帯電話などのブラウザーで Web サイトのリンクを開きます。
- ユーザーは特別なコードを入力します。
- 必要に応じて、ユーザーは OAuth 2.0 ベースの IdP にログインします。
- ユーザーは、クライアントによる情報へのアクセスを許可するよう求められます。
- ユーザーは、元のデバイスのプロンプトでアクセスを確認します。この例では、ユーザーはコマンドラインで Enter キーを押します。
- IdM KDC バックエンドは、ユーザー情報にアクセスするために OAuth 2.0 認可サーバーをポーリングします。
2.3. 外部アイデンティティープロバイダーへの参照の作成 リンクのコピーリンクがクリップボードにコピーされました!
外部アイデンティティープロバイダー (IdP) を Identity Management (IdM) 環境に接続するには、IdM で IdP 参照を作成します。この手順では、Keycloak テンプレートに基づいて IdP への my-keycloak-idp という参照を作成します。その他の参照テンプレートは、IdM のさまざまな外部 IdP 参照の例 を参照してください。
前提条件
- IdM を OAuth アプリケーションとして外部 IdP に登録し、クライアント ID を取得している。
- IdM 管理者アカウントとして認証可能である。
手順
IdM サーバーで IdM 管理者として認証します。
[root@server ~]# kinit adminKeycloak テンプレートに基づいて IdP への
my-keycloak-idpという参照を作成します。--base-urlオプションは、Keycloak サーバーへの URL をserver-name.$DOMAIN:$PORT/prefixという形式で指定します。[root@server ~]# ipa idp-add my-keycloak-idp \ --provider keycloak --organization main \ --base-url keycloak.idm.example.com:8443/auth \ --client-id id13778 ------------------------------------------------ Added Identity Provider reference "my-keycloak-idp" ------------------------------------------------ Identity Provider reference name: my-keycloak-idp Authorization URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/auth Device authorization URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/auth/device Token URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/token User info URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/userinfo Client identifier: ipa_oidc_client Scope: openid email External IdP user identifier attribute: email
検証
ipa idp-showコマンドの出力に、作成した IdP 参照が表示されていることを確認します。[root@server ~]# ipa idp-show my-keycloak-idp
2.4. IdM のさまざまな外部 IdP 参照の例 リンクのコピーリンクがクリップボードにコピーされました!
次の表に、IdM のさまざまな IdP 参照を作成するための ipa idp-add コマンドの例を示します。
| アイデンティティープロバイダー | 重要なオプション | コマンド例 |
|---|---|---|
| Microsoft Identity Platform、Azure AD |
|
|
| |
|
|
| GitHub |
|
|
| Keycloak、Red Hat Single Sign-On |
|
注記
Keycloak 17 以降の Quarkus バージョンでは、URI の |
| Okta |
|
|
2.5. IdM で外部アイデンティティープロバイダーを管理するための ipa idp-* コマンドのオプション リンクのコピーリンクがクリップボードにコピーされました!
次の例は、さまざまな IdP テンプレートに基づいて外部 IdP への参照を設定する方法を示しています。次のオプションを使用して設定を指定します。
--provider- 既知の ID プロバイダーのいずれかの定義済みテンプレート
--client-id- アプリケーション登録時に IdP によって発行された OAuth 2.0 クライアント識別子。アプリケーションの登録手順は IdP ごとに異なるため、詳細は各 IdP のドキュメントを参照してください。外部 IdP が Red Hat Single Sign-On (SSO) の場合は、OpenID Connect クライアントの作成 を参照してください。
--base-url- Keycloak と Okta で必要な IdP テンプレートのベース URL
organization- Microsoft Azure で必要な IdP からのドメインまたは組織 ID
--secret- (オプション) 機密 OAuth 2.0 クライアントからのシークレットを要求するように、外部 IdP を設定した場合は、このオプションを使用します。IdP 参照を作成するときにこのオプションを使用すると、シークレットを対話的に求めるプロンプトが表示されます。クライアントシークレットをパスワードとして保護します。
2.6. 外部 IdP への参照の管理 リンクのコピーリンクがクリップボードにコピーされました!
外部 ID プロバイダー (IdP) への参照を作成したら、その参照を検索、表示、変更、および削除できます。この例では、keycloak-server1 という名前の外部 IdP への参照を管理する方法を示します。
前提条件
- IdM 管理者アカウントとして認証可能である。
- IdM で外部 IdP への参照を作成した。外部 ID プロバイダーへの参照の作成 を参照してください。
手順
IdM サーバーで IdM 管理者として認証します。
[root@server ~]# kinit adminIdP 参照を管理します。
エントリーに文字列
keycloakが含まれる IdP 参照を見つけるには、以下を実行します。[root@server ~]# ipa idp-find keycloakmy-keycloak-idpという名前の IdP 参照を表示するには、以下を実行します。[root@server ~]# ipa idp-show my-keycloak-idpIdP 参照を変更するには、
ipa idp-modコマンドを使用します。たとえば、my-keycloak-idpという名前の IdP 参照のシークレットを変更するには、--secretオプションを指定してシークレットの入力を求めます。[root@server ~]# ipa idp-mod my-keycloak-idp --secretmy-keycloak-idpという名前の IdP 参照を削除するには、以下を実行します。[root@server ~]# ipa idp-del my-keycloak-idp
2.7. 外部 IdP 経由での IdM ユーザーの認証を有効にする方法 リンクのコピーリンクがクリップボードにコピーされました!
外部 ID プロバイダー (IdP) 経由で IdM ユーザーを認証できるようにするには、以前に作成した外部 IdP 参照をユーザーアカウントに関連付けます。この例では、外部 IdP 参照 keycloak-server1 をユーザー idm-user-with-external-idp に関連付けます。
前提条件
- IdM で外部 IdP への参照を作成した。外部 ID プロバイダーへの参照の作成 を参照してください。
手順
IdM ユーザーエントリーを変更して、IdP 参照をユーザーアカウントに関連付けます。
[root@server ~]# ipa user-mod idm-user-with-external-idp \ --idp my-keycloak-idp \ --idp-user-id idm-user-with-external-idp@idm.example.com \ --user-auth-type=idp --------------------------------- Modified user "idm-user-with-external-idp" --------------------------------- User login: idm-user-with-external-idp First name: Test Last name: User1 Home directory: /home/idm-user-with-external-idp Login shell: /bin/sh Principal name: idm-user-with-external-idp@idm.example.com Principal alias: idm-user-with-external-idp@idm.example.com Email address: idm-user-with-external-idp@idm.example.com UID: 35000003 GID: 35000003 User authentication types: idp External IdP configuration: keycloak External IdP user identifier: idm-user-with-external-idp@idm.example.com Account disabled: False Password: False Member of groups: ipausers Kerberos keys available: False
検証
そのユーザーの
ipa user-showコマンド出力に IdP への参照が表示されることを確認します。[root@server ~]# ipa user-show idm-user-with-external-idp User login: idm-user-with-external-idp First name: Test Last name: User1 Home directory: /home/idm-user-with-external-idp Login shell: /bin/sh Principal name: idm-user-with-external-idp@idm.example.com Principal alias: idm-user-with-external-idp@idm.example.com Email address: idm-user-with-external-idp@idm.example.com ID: 35000003 GID: 35000003 User authentication types: idp External IdP configuration: keycloak External IdP user identifier: idm-user-with-external-idp@idm.example.com Account disabled: False Password: False Member of groups: ipausers Kerberos keys available: False
2.8. 外部 IdP ユーザーとして IdM Ticket-Granting Ticket を取得する リンクのコピーリンクがクリップボードにコピーされました!
Identity Management (IdM) ユーザーの認証を外部アイデンティティープロバイダー (IdP) に委譲している場合、IdM ユーザーは外部 IdP に対して認証することで Kerberos Ticket-Granting Ticket (TGT) を要求できます。
この手順では、以下を実行します。
- 匿名の Kerberos チケットを取得してローカルに保存します。
-
-Tオプションを指定したkinitを使用して idm-user-with-external-idp ユーザーの TGT を要求し、Flexible Authentication via Secure Tunneling (FAST) チャネルを有効にして、Kerberos クライアントと Kerberos Distribution Center (KDC) 間のセキュアな接続を提供します。
前提条件
- IdM で外部 IdP への参照を作成した。外部 ID プロバイダーへの参照の作成 を参照してください。
- 外部 IdP 参照をユーザーアカウントに関連付けている。外部 IdP 経由での IdM ユーザーの認証を有効にする方法 を参照してください。
- 最初にログインするユーザーに、ローカルファイルシステム内のディレクトリーに対する書き込み権限がある。
手順
匿名 PKINIT を使用して Kerberos チケットを取得し、それを
./fast.ccacheという名前のファイルに保存します。$ kinit -n -c ./fast.ccacheオプション: 取得したチケットを表示します。
$ klist -c fast.ccache Ticket cache: FILE:fast.ccache Default principal: WELLKNOWN/ANONYMOUS@WELLKNOWN:ANONYMOUS Valid starting Expires Service principal 03/03/2024 13:36:37 03/04/2024 13:14:28 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM-Tオプションを使用して FAST 通信チャネルを有効にし、IdM ユーザーとして認証を開始します。[root@client ~]# kinit -T ./fast.ccache idm-user-with-external-idp Authenticate at https://oauth2.idp.com:8443/auth/realms/master/device?user_code=YHMQ-XKTL and press ENTER.:- ブラウザーで、コマンド出力に提供される Web サイトでユーザーとして認証します。
- コマンドラインで Enter キーを押して、認証プロセスを終了します。
検証
Kerberos チケット情報を表示し、
config: pa_typeの行が外部 IdP による事前認証の152を示していることを確認します。[root@client ~]# klist -C Ticket cache: KCM:0:58420 Default principal: idm-user-with-external-idp@IDM.EXAMPLE.COM Valid starting Expires Service principal 05/09/22 07:48:23 05/10/22 07:03:07 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: fast_avail(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = yes 08/17/2022 20:22:45 08/18/2022 20:22:43 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: pa_type(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = 152pa_type = 152は、外部 IdP 認証を示します。
2.9. 外部 IdP ユーザーとして SSH 経由で IdM クライアントにログインする リンクのコピーリンクがクリップボードにコピーされました!
外部アイデンティティープロバイダー (IdP) ユーザーとして SSH 経由で IdM クライアントにログインするには、コマンドラインでログインプロセスを開始します。プロンプトが表示されたら、IdP に関連付けられた Web サイトで認証プロセスを実行し、Identity Management (IdM) クライアントでプロセスを終了します。
前提条件
- IdM で外部 IdP への参照を作成した。外部 ID プロバイダーへの参照の作成 を参照してください。
- 外部 IdP 参照をユーザーアカウントに関連付けている。外部 IdP 経由での IdM ユーザーの認証を有効にする方法 を参照してください。
手順
SSH 経由で IdM クライアントへのログインを試みます。
[user@client ~]$ ssh idm-user-with-external-idp@client.idm.example.com (idm-user-with-external-idp@client.idm.example.com) Authenticate at https://oauth2.idp.com:8443/auth/realms/main/device?user_code=XYFL-ROYR and press ENTER.- ブラウザーで、コマンド出力に提供される Web サイトでユーザーとして認証します。
- コマンドラインで Enter キーを押して、認証プロセスを終了します。
検証
Kerberos チケット情報を表示し、
config: pa_typeの行が外部 IdP による事前認証の152を示していることを確認します。[idm-user-with-external-idp@client ~]$ klist -C Ticket cache: KCM:0:58420 Default principal: idm-user-with-external-idp@IDM.EXAMPLE.COM Valid starting Expires Service principal 05/09/22 07:48:23 05/10/22 07:03:07 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: fast_avail(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = yes 08/17/2022 20:22:45 08/18/2022 20:22:43 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: pa_type(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = 152
2.10. ipa idp-* コマンドの --provider オプション リンクのコピーリンクがクリップボードにコピーされました!
次のアイデンティティープロバイダー (IdP) は、OAuth 2.0 Device Authorization Grant フローをサポートしています。
- Azure AD を含む Microsoft Identity Platform
- GitHub
- Red Hat Single Sign-On (SSO) を含む Keycloak
- Okta
ipa idp-add コマンドを使用してこれらの外部 IdP のいずれか 1 つへの参照を作成する場合、--provider オプションで IdP タイプを指定できます。これは、以下で説明する追加オプションに拡張されます。
--provider=microsoftMicrosoft Azure IdP では、
--organizationオプションでipa idp-addに指定できる Azure テナント ID に基づくパラメーター化が可能です。live.com IdP のサポートが必要な場合は、--organization commonオプションを指定します。--provider=microsoftを選択すると、次のオプションを使用するように拡張されます。--organizationオプションの値は、表内の文字列${ipaidporg}を置き換えます。Expand オプション 値 --auth-uri=URIhttps://login.microsoftonline.com/${ipaidporg}/oauth2/v2.0/authorize--dev-auth-uri=URIhttps://login.microsoftonline.com/${ipaidporg}/oauth2/v2.0/devicecode--token-uri=URIhttps://login.microsoftonline.com/${ipaidporg}/oauth2/v2.0/token--userinfo-uri=URIhttps://graph.microsoft.com/oidc/userinfo--keys-uri=URIhttps://login.microsoftonline.com/common/discovery/v2.0/keys--scope=STRopenid email--idp-user-id=STRemail--provider=google--provider=googleを選択すると、次のオプションを使用するように拡張されます。Expand オプション 値 --auth-uri=URIhttps://accounts.google.com/o/oauth2/auth--dev-auth-uri=URIhttps://oauth2.googleapis.com/device/code--token-uri=URIhttps://oauth2.googleapis.com/token--userinfo-uri=URIhttps://openidconnect.googleapis.com/v1/userinfo--keys-uri=URIhttps://www.googleapis.com/oauth2/v3/certs--scope=STRopenid email--idp-user-id=STRemail--provider=github--provider=githubを選択すると、次のオプションを使用するように拡張されます。Expand オプション 値 --auth-uri=URIhttps://github.com/login/oauth/authorize--dev-auth-uri=URIhttps://github.com/login/device/code--token-uri=URIhttps://github.com/login/oauth/access_token--userinfo-uri=URIhttps://openidconnect.googleapis.com/v1/userinfo--keys-uri=URIhttps://api.github.com/user--scope=STRuser--idp-user-id=STRlogin--provider=keycloakKeycloak を使用すると、複数のレルムまたは組織を定義できます。多くの場合、これはカスタムデプロイメントの一部であるため、ベース URL とレルム ID の両方が必要です。これらは、
ipa idp-addコマンドの--base-urlおよび--organizationオプションで指定できます。[root@client ~]# ipa idp-add MySSO --provider keycloak \ --org main --base-url keycloak.domain.com:8443/auth \ --client-id <your-client-id>--provider=keycloakを選択すると、次のオプションを使用するように拡張されます。--base-urlオプションで指定した値は、表内の文字列${ipaidpbaseurl}を置き換え、指定した値は--organization `option replaces the string `${ipaidporg}となります。Expand オプション 値 --auth-uri=URIhttps://${ipaidpbaseurl}/realms/${ipaidporg}/protocol/openid-connect/auth--dev-auth-uri=URIhttps://${ipaidpbaseurl}/realms/${ipaidporg}/protocol/openid-connect/auth/device--token-uri=URIhttps://${ipaidpbaseurl}/realms/${ipaidporg}/protocol/openid-connect/token--userinfo-uri=URIhttps://${ipaidpbaseurl}/realms/${ipaidporg}/protocol/openid-connect/userinfo--scope=STRopenid email--idp-user-id=STRemail--provider=oktaOkta に新しい組織を登録すると、新しいベース URL が関連付けられます。このベース URL は、
ipa idp-addコマンドの--base-urlオプションで指定できます。[root@client ~]# ipa idp-add MyOkta --provider okta --base-url dev-12345.okta.com --client-id <your-client-id>--provider=oktaを選択すると、次のオプションを使用するように拡張されます。--base-urlオプションに指定した値は、表内の文字列${ipaidpbaseurl}を置き換えます。Expand オプション 値 --auth-uri=URIhttps://${ipaidpbaseurl}/oauth2/v1/authorize--dev-auth-uri=URIhttps://${ipaidpbaseurl}/oauth2/v1/device/authorize--token-uri=URIhttps://${ipaidpbaseurl}/oauth2/v1/token--userinfo-uri=URIhttps://${ipaidpbaseurl}/oauth2/v1/userinfo--scope=STRopenid email--idp-user-id=STRemail
第3章 IdM ドメインメンバーでの Samba の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Identity Management (IdM) ドメインに参加しているホスト上で Samba をセットアップできます。IdM のユーザー、および可能であれば、信頼された Active Directory (AD) ドメインのユーザーは、Samba が提供する共有およびプリンターサービスにアクセスできます。
IdM ドメインメンバーで Samba を使用する機能は、テクノロジープレビュー機能で、特定の制限が含まれています。たとえば、IdM 信頼コントローラーは Active Directory グローバルカタログサービスをサポートしておらず、分散コンピューティング環境/リモートプロシージャコール (DCE/RPC) プロトコルを使用した IdM グループの解決をサポートしていません。結果として、AD ユーザーは、他の IdM クライアントにログインしている場合、IdM クライアントでホストされている Samba 共有とプリンターにのみアクセスできます。Windows マシンにログインしている AD ユーザーは、IdM ドメインメンバーでホストされている Samba 共有にアクセスできません。
IdM ドメインメンバーに Samba をデプロイしているお客様は、ぜひ Red Hat にフィードバックをお寄せください。
AD ドメインのユーザーが Samba によって提供される共有およびプリンターサービスにアクセスする必要がある場合は、AES 暗号化タイプが AD になっていることを確認してください。詳細は、GPO を使用した Active Directory での AES 暗号化タイプの有効化 を参照してください。
3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- ホストは、クライアントとして IdM ドメインに参加している。
- IdM サーバーとクライアントの両方が RHEL 10 で実行されている必要がある。
3.2. Samba をドメインメンバーにインストールするための IdM ドメインの準備 リンクのコピーリンクがクリップボードにコピーされました!
IdM クライアントに Samba を設定する前に、IdM サーバーで ipa-adtrust-install ユーティリティーを使用して IdM ドメインを準備する必要があります。
ipa-adtrust-install コマンドを自動的に実行するシステムは、AD 信頼コントローラーになります。ただし、ipa-adtrust-install は、IdM サーバーで 1 回のみ実行する必要があります。
前提条件
- IdM サーバーがインストールされている。
- パッケージをインストールし、IdM サービスを再起動するための root 権限がある。
手順
必要なパッケージをインストールします。
[root@ipaserver ~]# dnf install ipa-server-trust-ad samba-clientIdM 管理ユーザーとして認証します。
[root@ipaserver ~]# kinit adminipa-adtrust-installユーティリティーを実行します。[root@ipaserver ~]# ipa-adtrust-install統合 DNS サーバーとともに IdM がインストールされていると、DNS サービスレコードが自動的に作成されます。
IdM が統合 DNS サーバーなしで IdM をインストールすると、
ipa-adtrust-installは、続行する前に DNS に手動で追加する必要があるサービスレコードのリストを出力します。スクリプトにより、
/etc/samba/smb.confがすでに存在し、書き換えられることが求められます。WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing Samba configuration. Do you wish to continue? [no]: yesこのスクリプトは、従来の Linux クライアントが信頼できるユーザーと連携できるようにする互換性プラグインである
slapi-nisプラグインを設定するように求めるプロンプトを表示します。Do you want to enable support for trusted domains in Schema Compatibility plugin? This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users. Enable trusted domains support in slapi-nis? [no]: yesSID 生成タスクを実行して、既存ユーザーに SID を作成するように求められます。
Do you want to run the ipa-sidgen task? [no]: yesこれはリソースを集中的に使用するタスクであるため、ユーザー数が多い場合は別のタイミングで実行できます。
オプション: Windows Server 2008 以降では、動的 RPC ポート範囲が、デフォルトで
49152-65535に定義されています。ご使用の環境に異なる動的 RPC ポート範囲を定義する必要がある場合は、Samba が異なるポートを使用するように設定し、ファイアウォール設定でそのポートを開くように設定します。以下の例では、ポート範囲を55000-65000に設定します。[root@ipaserver ~]# net conf setparm global 'rpc server dynamic port range' 55000-65000 [root@ipaserver ~]# firewall-cmd --add-port=55000-65000/tcp [root@ipaserver ~]# firewall-cmd --runtime-to-permanentipaサービスを再起動します。[root@ipaserver ~]# ipactl restartsmbclientユーティリティーを使用して、Samba が IdM サイドからの Kerberos 認証に応答することを確認します。[root@ipaserver ~]# smbclient -L ipaserver.idm.example.com -U user_name --use-kerberos=required lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba 4.15.2) ...
3.3. IdM クライアントでの Samba サーバーのインストールおよび設定 リンクのコピーリンクがクリップボードにコピーされました!
IdM クライアントに Samba をインストールして設定することで、IdM ドメインアカウントをアクセスに活用し、統合認証を使用してセキュアにファイルを共有できます。ネットワーク全体でシームレスなリソース共有を可能にするために、前提条件が満たされており、設定が正しいことを確認してください。
前提条件
- IdM サーバーとクライアントの両方が RHEL 10 以降で実行されている必要がある。
- IdM ドメインは、ドメインメンバーに Samba をインストールするための IdM ドメインの準備 の説明に従って準備されます。
- IdM に AD で設定された信頼がある場合は、Kerberos の AES 暗号化タイプを有効にします。たとえば、グループポリシーオブジェクト (GPO) を使用して、AES 暗号化の種類を有効にします。詳細は、GPO を使用した Active Directory での AES 暗号化の有効化 を参照してください。
手順
ipa-client-sambaパッケージをインストールします。[root@idm_client]# dnf install ipa-client-sambaipa-client-sambaユーティリティーを使用して、クライアントを準備し、初期 Samba 設定を作成します。[root@idm_client]# ipa-client-samba Searching for IPA server... IPA server: DNS discovery Chosen IPA master: idm_server.idm.example.com SMB principal to be created: cifs/idm_client.idm.example.com@IDM.EXAMPLE.COM NetBIOS name to be used: IDM_CLIENT Discovered domains to use: Domain name: idm.example.com NetBIOS name: IDM SID: S-1-5-21-525930803-952335037-206501584 ID range: 212000000 - 212199999 Domain name: ad.example.com NetBIOS name: AD SID: None ID range: 1918400000 - 1918599999 Continue to configure the system with these values? [no]: yes Samba domain member is configured. Please check configuration at /etc/samba/smb.conf and start smb and winbind servicesデフォルトでは、
ipa-client-sambaは、ユーザーが接続したときにそのユーザーのホームディレクトリーを動的に共有するために、/etc/samba/smb.confファイルに[homes]セクションが自動的に追加されます。ユーザーがこのサーバーにホームディレクトリーがない場合、または共有したくない場合は、/etc/samba/smb.confから次の行を削除します。[homes] read only = noディレクトリーとプリンターを共有します。詳細は、以下を参照してください。
ローカルファイアウォールで Samba クライアントに必要なポートを開きます。
[root@idm_client]# firewall-cmd --permanent --add-service=samba-client [root@idm_client]# firewall-cmd --reloadsmbサービスおよびwinbindサービスを有効にして開始します。[root@idm_client]# systemctl enable --now smb winbind
検証
samba-client パッケージがインストールされている別の IdM ドメインメンバーで次の検証手順を実行します。
Kerberos 認証を使用して、Samba サーバー上の共有をリスト表示します。
$ smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- example Disk IPC$ IPC IPC Service (Samba 4.15.2) ...詳細は、システム上の
ipa-client-samba(1)man ページを参照してください。
3.4. IdM が新しいドメインを信頼する場合は、ID マッピング設定を手動で追加 リンクのコピーリンクがクリップボードにコピーされました!
Samba では、ユーザーがリソースにアクセスする各ドメインの ID マッピング設定が必要です。IdM クライアントで実行している既存の Samba サーバーでは、管理者が Active Directory (AD) ドメインに新しい信頼を追加した後、ID マッピング設定を手動で追加する必要があります。
前提条件
- IdM クライアントで Samba を設定している。その後、IdM に新しい信頼が追加されている。
- Kerberos の暗号化タイプ DES および RC4 は、信頼できる AD ドメインで無効にしている。セキュリティー上の理由から、RHEL 10 はこのような弱い暗号化タイプに対応していません。
手順
ホストのキータブを使用して認証します。
[root@idm_client]# kinit -kipa idrange-findコマンドを使用して、新しいドメインのベース ID と ID 範囲のサイズの両方を表示します。たとえば、次のコマンドはad.example.comドメインの値を表示します。[root@idm_client]# ipa idrange-find --name="AD.EXAMPLE.COM_id_range" --raw --------------- 1 range matched --------------- cn: AD.EXAMPLE.COM_id_range ipabaseid: 1918400000 ipaidrangesize: 200000 ipabaserid: 0 ipanttrusteddomainsid: S-1-5-21-968346183-862388825-1738313271 iparangetype: ipa-ad-trust ---------------------------- Number of entries returned 1 ----------------------------次の手順では、
ipabaseid属性およびipaidrangesize属性の値が必要です。使用可能な最高の ID を計算するには、次の式を使用します。
maximum_range = ipabaseid + ipaidrangesize - 1前の手順の値を使用した場合、
ad.example.comドメインで使用可能な最大 ID は1918599999(1918400000 + 200000 - 1) です。/etc/samba/smb.confファイルを編集し、ドメインの ID マッピング設定を[global]セクションに追加します。idmap config AD : range = 1918400000 - 1918599999 idmap config AD : backend = sssipabaseid属性の値を最小値として指定し、前の手順で計算された値を範囲の最大値として指定します。smbサービスおよびwinbindサービスを再起動します。[root@idm_client]# systemctl restart smb winbind
検証
Kerberos 認証を使用して、Samba サーバー上の共有をリスト表示します。
$ smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- example Disk IPC$ IPC IPC Service (Samba 4.15.2) ...
第4章 NIS から Identity Management への移行 リンクのコピーリンクがクリップボードにコピーされました!
ネットワーク情報サービス (NIS) サーバーには、ユーザー、グループ、ホスト、netgroups、および自動マウントマップに関する情報を追加できます。システム管理者は、全ユーザー管理操作が IdM サーバーで実行されるように、これらのエントリータイプ、認証、および承認を NIS サーバーから Identity Management (IdM) サーバーに移行できます。NIS から IdM に移行すると、Kerberos などのよりセキュアなプロトコルを利用できます。
4.1. IdM での NIS の有効化 リンクのコピーリンクがクリップボードにコピーされました!
NIS と Identity Management (IdM) サーバー間で通信できるようにするには、IdM サーバーで NIS 互換性オプションを有効にする必要があります。
前提条件
- IdM サーバーの root アクセス権限がある。
手順
IdM サーバーで NIS リスナーと互換性プラグインを有効にします。
[root@ipaserver ~]# ipa-nis-manage enable [root@ipaserver ~]# ipa-compat-manage enableオプション: より厳密なファイアウォール設定の場合は、固定ポートを設定します。
たとえば、ポートを未使用のポート
514に設定するには、次のコマンドを実行します。[root@ipaserver ~]# ldapmodify -x -D 'cn=directory manager' -W dn: cn=NIS Server,cn=plugins,cn=config changetype: modify add: nsslapd-pluginarg0 nsslapd-pluginarg0: 514警告他のサービスとの競合を回避するため、1024 を超えるポート番号は使用しないようにしてください。
ポートマッパーサービスを有効にして起動します。
[root@ipaserver ~]# systemctl enable rpcbind.service [root@ipaserver ~]# systemctl start rpcbind.serviceDirectory Server を再起動します。
[root@ipaserver ~]# systemctl restart dirsrv.target
4.2. NIS から IdM へのユーザーエントリーの移行 リンクのコピーリンクがクリップボードにコピーされました!
NIS の passwd マップには、名前、UID、プライマリーグループ、GECOS、シェル、ホームディレクトリーなどのユーザーに関する情報が含まれます。このデータを使用して、NIS ユーザーアカウントを Identity Management (IdM) に移行します。
前提条件
- NIS サーバーの root アクセス権限がある。
- IdM で NIS が有効になっている。
- NIS サーバーが IdM に登録されている。
- インポートするユーザーの UID を格納できる ID 範囲 がある。
手順
yp-toolsパッケージをインストールします。[root@nis-server ~]# dnf install yp-tools -yNIS サーバーで、以下の内容を含む
/root/nis-users.shスクリプトを作成します。#!/bin/sh # $1 is the NIS domain, $2 is the primary NIS server ypcat -d $1 -h $2 passwd > /dev/shm/nis-map.passwd 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.passwd) ; do IFS=' ' username=$(echo $line | cut -f1 -d:) # Not collecting encrypted password because we need cleartext password # to create kerberos key uid=$(echo $line | cut -f3 -d:) gid=$(echo $line | cut -f4 -d:) gecos=$(echo $line | cut -f5 -d:) homedir=$(echo $line | cut -f6 -d:) shell=$(echo $line | cut -f7 -d:) # Now create this entry echo passw0rd1 | ipa user-add $username --first=NIS --last=USER \ --password --gidnumber=$gid --uid=$uid --gecos="$gecos" --homedir=$homedir \ --shell=$shell ipa user-show $username doneIdM
adminユーザーとして認証します。[root@nis-server ~]# kinit adminスクリプトを実行します。以下に例を示します。
[root@nis-server ~]# sh /root/nis-users.sh nisdomain nis-server.example.com重要このスクリプトは、ハードコードされた値を姓名使用し、パスワードを
passw0rd1に設定します。ユーザーは、次回ログイン時に一時パスワードを変更する必要があります。
4.3. ユーザーグループの NIS から IdM への移行 リンクのコピーリンクがクリップボードにコピーされました!
NIS グループ マップには、グループ名、GID、グループメンバーなどのグループ情報が含まれます。このデータを使用して、NIS グループを Identity Management (IdM) に移行します。
前提条件
- NIS サーバーの root アクセス権限がある。
- IdM で NIS が有効になっている。
- NIS サーバーが IdM に登録されている。
手順
yp-toolsパッケージをインストールします。[root@nis-server ~]# dnf install yp-tools -y以下の内容を含めて、NIS サーバーに
/root/nis-groups.shスクリプトを作成します。#!/bin/sh # $1 is the NIS domain, $2 is the primary NIS server ypcat -d $1 -h $2 group > /dev/shm/nis-map.group 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.group); do IFS=' ' groupname=$(echo $line | cut -f1 -d:) # Not collecting encrypted password because we need cleartext password # to create kerberos key gid=$(echo $line | cut -f3 -d:) members=$(echo $line | cut -f4 -d:) # Now create this entry ipa group-add $groupname --desc=NIS_GROUP_$groupname --gid=$gid if [ -n "$members" ]; then useropts=$(eval echo --users={$members}) ipa group-add-member $groupname $useropts fi ipa group-show $groupname done注記ユーザーグループが正常に移行されるように、ユーザー名に特殊文字が含まれていないことを確認してください。
IdM
adminユーザーとして認証します。[root@nis-server ~]# kinit adminスクリプトを実行します。以下に例を示します。
[root@nis-server ~]# sh /root/nis-groups.sh nisdomain nis-server.example.com
4.4. ホストエントリーの NIS から IdM への移行 リンクのコピーリンクがクリップボードにコピーされました!
NIS ホスト マップには、ホスト名や IP アドレスなどのホストに関する情報が含まれます。このデータを使用して、NIS ホストエントリーを Identity Management (IdM) に移行します。
IdM でホストグループを作成すると、対応するシャドウの NIS グループが自動的に作成されます。これらのシャドウ NIS グループには ipa netgroup-* コマンドを使用しないでください。ipa netgroup-* コマンドは、netgroup-add コマンドで作成したネイティブの netgroup を管理する場合にのみ使用してください。
前提条件
- NIS サーバーの root アクセス権限がある。
- IdM で NIS が有効になっている。
- NIS サーバーが IdM に登録されている。
手順
yp-toolsパッケージをインストールします。[root@nis-server ~]# dnf install yp-tools -y以下の内容を含めて、NIS サーバーに
/root/nis-hosts.shスクリプトを作成します。#!/bin/sh # $1 is the NIS domain, $2 is the primary NIS server ypcat -d $1 -h $2 hosts | egrep -v "localhost|127.0.0.1" > /dev/shm/nis-map.hosts 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.hosts); do IFS=' ' ipaddress=$(echo $line | awk '{print $1}') hostname=$(echo $line | awk '{print $2}') primary=$(ipa env xmlrpc_uri | tr -d '[:space:]' | cut -f3 -d: | cut -f3 -d/) domain=$(ipa env domain | tr -d '[:space:]' | cut -f2 -d:) if [ $(echo $hostname | grep "\." |wc -l) -eq 0 ] ; then hostname=$(echo $hostname.$domain) fi zone=$(echo $hostname | cut -f2- -d.) if [ $(ipa dnszone-show $zone 2>/dev/null | wc -l) -eq 0 ] ; then ipa dnszone-add --name-server=$primary --admin-email=root.$primary fi ptrzone=$(echo $ipaddress | awk -F. '{print $3 "." $2 "." $1 ".in-addr.arpa."}') if [ $(ipa dnszone-show $ptrzone 2>/dev/null | wc -l) -eq 0 ] ; then ipa dnszone-add $ptrzone --name-server=$primary --admin-email=root.$primary fi # Now create this entry ipa host-add $hostname --ip-address=$ipaddress ipa host-show $hostname doneIdM
adminユーザーとして認証します。[root@nis-server ~]# kinit adminスクリプトを実行します。以下に例を示します。
[root@nis-server ~]# sh /root/nis-hosts.sh nisdomain nis-server.example.com注記このスクリプトでは、エイリアスなどの特別なホスト設定は移行されません。
4.5. netgroup エントリーの NIS から IdM への移行 リンクのコピーリンクがクリップボードにコピーされました!
NIS netgroup マップには、netgroup に関する情報が含まれます。このデータを使用して、NIS netgroup を Identity Management (IdM) に移行します。
前提条件
- NIS サーバーの root アクセス権限がある。
- IdM で NIS が有効になっている。
- NIS サーバーが IdM に登録されている。
手順
yp-toolsパッケージをインストールします。[root@nis-server ~]# dnf install yp-tools -y以下の内容を含めて NIS サーバーに
/root/nis-netgroups.shスクリプトを作成します。#!/bin/sh # $1 is the NIS domain, $2 is the primary NIS server ypcat -k -d $1 -h $2 netgroup > /dev/shm/nis-map.netgroup 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.netgroup); do IFS=' ' netgroupname=$(echo $line | awk '{print $1}') triples=$(echo $line | sed "s/^$netgroupname //") echo "ipa netgroup-add $netgroupname --desc=NIS_NG_$netgroupname" if [ $(echo $line | grep "(," | wc -l) -gt 0 ]; then echo "ipa netgroup-mod $netgroupname --hostcat=all" fi if [ $(echo $line | grep ",," | wc -l) -gt 0 ]; then echo "ipa netgroup-mod $netgroupname --usercat=all" fi for triple in $triples; do triple=$(echo $triple | sed -e 's/-//g' -e 's/(//' -e 's/)//') if [ $(echo $triple | grep ",.*," | wc -l) -gt 0 ]; then hostname=$(echo $triple | cut -f1 -d,) username=$(echo $triple | cut -f2 -d,) domain=$(echo $triple | cut -f3 -d,) hosts=""; users=""; doms=""; [ -n "$hostname" ] && hosts="--hosts=$hostname" [ -n "$username" ] && users="--users=$username" [ -n "$domain" ] && doms="--nisdomain=$domain" echo "ipa netgroup-add-member $netgroup $hosts $users $doms" else netgroup=$triple echo "ipa netgroup-add $netgroup --desc=<NIS_NG>_$netgroup" fi done doneIdM
adminユーザーとして認証します。[root@nis-server ~]# kinit adminスクリプトを実行します。以下に例を示します。
[root@nis-server ~]# sh /root/nis-netgroups.sh nisdomain nis-server.example.com
4.6. NIS から IdM への自動マウントマップの移行 リンクのコピーリンクがクリップボードにコピーされました!
自動マウントマップは、場所 (親エントリー)、関連のキー、およびマップを定義する入れ子および相互関連のエントリーです。NIS 自動マウントマップを Identity Management (IdM) に移行するには、以下を実行します。
前提条件
- NIS サーバーの root アクセス権限がある。
- IdM で NIS が有効になっている。
- NIS サーバーが IdM に登録されている。
手順
yp-toolsパッケージをインストールします。[root@nis-server ~]# dnf install yp-tools -y以下の内容を含めて、NIS サーバーに
/root/nis-automounts.shスクリプトを作成します。#!/bin/sh # $1 is for the automount entry in ipa ipa automountlocation-add $1 # $2 is the NIS domain, $3 is the primary NIS server, $4 is the map name ypcat -k -d $2 -h $3 $4 > /dev/shm/nis-map.$4 2>&1 ipa automountmap-add $1 $4 basedn=$(ipa env basedn | tr -d '[:space:]' | cut -f2 -d:) cat > /tmp/amap.ldif <<EOF dn: nis-domain=$2+nis-map=$4,cn=NIS Server,cn=plugins,cn=config objectClass: extensibleObject nis-domain: $2 nis-map: $4 nis-base: automountmapname=$4,cn=$1,cn=automount,$basedn nis-filter: (objectclass=\*) nis-key-format: %{automountKey} nis-value-format: %{automountInformation} EOF # $5 is the LDAP server ldapadd -x -h $5 -D "cn=Directory Manager" -W -f /tmp/amap.ldif IFS=$'\n' for line in $(cat /dev/shm/nis-map.$4); do IFS=" " key=$(echo "$line" | awk '{print $1}') info=$(echo "$line" | sed -e "s^$key[ \t]*") ipa automountkey-add nis $4 --key="$key" --info="$info" done注記このスクリプトでは、NIS 自動マウント情報のエクスポート、自動マウントの場所と関連マップの LDAP データ交換形式 (LDIF) の生成、IdM Directory Server への LDIF ファイルのインポートが行われます。
IdM
adminユーザーとして認証します。[root@nis-server ~]# kinit adminスクリプトを実行します。以下に例を示します。
[root@nis-server ~]# sh /root/nis-automounts.sh location nisdomain nis-server.example.com map_name