Identity Management와 함께 외부 Red Hat 유틸리티 사용

Red Hat Enterprise Linux 9

IdM에 서비스 및 Red Hat 제품 통합

Red Hat Customer Content Services

초록

관리자는 Red Hat IdM(Identity Management) 도메인에 서비스 및 Red Hat 제품을 통합할 수 있습니다. 여기에는 Samba, Ansible, mount와 같은 서비스와 OpenShift Container Platform, OpenStack 및 Satellite와 같은 제품도 포함됩니다. 그러면 IdM 사용자가 이러한 서비스 및 제품에 액세스할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서 및 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Identity Management에서 용어 교체는 다음과 같습니다.

  • 블랙리스트블록 목록으로 대체
  • 화이트리스트허용 목록으로 대체
  • 슬레이브보조로 대체
  • 컨텍스트에 따라 마스터라는 단어가 보다 정확한 용어로 교체되고 있습니다.

    • IdM 마스터 IdM 서버로 대체
    • CA 갱신 마스터CA 갱신 서버로 대체
    • CRL 마스터CRL 게시자 서버로 대체
    • multi-mastermulti-supplier로 교체

Red Hat 문서에 관한 피드백 제공

문서에 대한 피드백에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.

Jira를 통해 피드백 제출 (등록 필요)

  1. Jira 웹 사이트에 로그인합니다.
  2. 상단 탐색 모음에서 생성 을 클릭합니다.
  3. Summary (요약) 필드에 설명 제목을 입력합니다.
  4. Description (설명) 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
  5. 대화 상자 하단에서 생성 을 클릭합니다.

1장. IdM과 다른 Red Hat 제품과의 통합

다음 링크는 IdM과 통합된 다른 Red Hat 제품에 대한 설명서입니다. IdM 사용자가 서비스에 액세스할 수 있도록 이러한 제품을 구성할 수 있습니다.

2장. 외부 ID 공급자를 사용하여 IdM 인증

OAuth 2 장치 권한 부여 흐름을 지원하는 외부 ID 공급자(IdP)와 사용자를 연결할 수 있습니다. 이러한 사용자가 RHEL 9.1 이상에서 사용할 수 있는 SSSD 버전으로 인증하면 외부 IdP에서 인증 및 권한 부여를 수행한 후 Kerberos 티켓을 사용하여 RHEL IdM(Identity Management) SSO 기능을 수신합니다.

주요 기능은 다음과 같습니다.

  • ipa idp-* 명령을 사용하여 외부 IdP에 대한 참조 추가, 수정 및 삭제.
  • ipa user-mod --user-auth-type=idp 명령을 사용하여 사용자에 대해 IdP 인증을 활성화합니다.

2.1. IdM을 외부 IdP에 연결할 때의 이점

관리자는 클라우드 서비스 공급자와 같은 외부 ID 소스에 저장된 사용자가 IdM(Identity Management) 환경에 연결된 RHEL 시스템에 액세스할 수 있도록 허용할 수 있습니다. 이를 위해 이러한 사용자를 위해 Kerberos 티켓을 발행하는 인증 및 권한 부여 프로세스를 외부 엔티티에 위임할 수 있습니다.

이 기능을 사용하여 IdM의 기능을 확장하고 외부 ID 공급자(IdP)에 저장된 사용자가 IdM에서 관리하는 Linux 시스템에 액세스할 수 있도록 허용할 수 있습니다.

2.2. IdM이 외부 IdP를 통해 로그인을 통합하는 방법

SSSD 2.7.0에는 idp Kerberos 사전 인증 방법을 구현하는 sssd-idp 패키지가 포함되어 있습니다. 이 인증 방법은 OAuth 2.0 장치 권한 부여 흐름을 따라 권한 부여 결정을 외부 IdP에 위임합니다.

  1. IdM 클라이언트 사용자는 예를 들어 명령줄에서 kinit 유틸리티를 사용하여 Kerberos TGT를 검색하여 OAuth 2.0 장치 권한 부여 흐름을 시작합니다.
  2. 특수 코드 및 웹 사이트 링크는 권한 부여 서버에서 IdM KDC 백엔드로 전송됩니다.
  3. IdM 클라이언트는 링크와 코드를 사용자에게 표시합니다. 이 예에서 IdM 클라이언트는 명령줄에 링크 및 코드를 출력합니다.
  4. 사용자는 다른 호스트, 휴대폰 등에 있을 수 있는 브라우저에서 웹 사이트 링크를 엽니다.

    1. 사용자가 특수 코드를 입력합니다.
    2. 필요한 경우 사용자는 OAuth 2.0 기반 IdP에 로그인합니다.
    3. 사용자에게 정보에 액세스할 수 있도록 클라이언트에 권한을 부여하라는 메시지가 표시됩니다.
  5. 사용자는 원래 장치 프롬프트에서 액세스를 확인합니다. 이 예제에서 사용자는 명령줄에서 Enter 키를 누릅니다.
  6. IdM KDC 백엔드는 OAuth 2.0 인증 서버를 폴링하여 사용자 정보에 액세스합니다.

지원되는 기능:

  • 키보드-대화형 인증 방법이 활성화된 SSH를 통해 원격으로 로그인하면 PAM(Pluggable Authentication Module) 라이브러리를 호출할 수 있습니다.
  • 로그인 서비스를 통해 콘솔로 로컬 로그인.
  • kinit 유틸리티를 사용하여 Kerberos 티켓(TGT)을 검색합니다.

현재 지원되지 않는 기능:

  • IdM WebUI에 직접 로그인 IdM WebUI에 로그인하려면 먼저 Kerberos 티켓을 받아야 합니다.
  • Cockpit WebUI에 직접 로그인. Cockpit WebUI에 로그인하려면 먼저 Kerberos 티켓을 받아야 합니다.

2.3. 외부 ID 공급자에 대한 참조 생성

외부 ID 공급자(IdP)를 IdM(Identity Management) 환경에 연결하려면 IdM에서 IdP 참조를 생성합니다. Keycloak 템플릿을 기반으로 IdP에 my-keycloak-idp 라는 참조를 생성하려면 이 절차를 완료합니다. 자세한 참조 템플릿은 IdM의 다른 외부 IdP에 대한 참조 예제 를 참조하십시오.

사전 요구 사항

  • 외부 IdP에 OAuth 애플리케이션으로 IdM을 등록하고 클라이언트 ID를 가져왔습니다.
  • IdM 관리자 계정으로 인증할 수 있습니다.
  • IdM 서버는 RHEL 9.1 이상을 사용하고 있습니다.
  • IdM 서버는 SSSD 2.7.0 이상을 사용하고 있습니다.

절차

  1. IdM 서버에서 IdM 관리자로 인증합니다.

    [root@server ~]# kinit admin
  2. Keycloak 템플릿을 기반으로 IdP에 my-keycloak-idp 라는 참조를 생성합니다. 여기서 --base-url 옵션은 server-name.$DOMAIN:$PORT/prefix 형식으로 Keycloak 서버에 대한 URL을 지정합니다.

    [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 명령의 예제가 나열되어 있습니다.

ID 공급자중요한 옵션명령 예

Microsoft Identity Platform,
Azure AD

--provider Cryostat
--organization

# ipa idp-add my-azure-idp \
  --provider microsoft \
  --organization main \
  --client-id <azure_client_id>

Google

--provider Google

# ipa idp-add my-google-idp \
  --provider google \
  --client-id <google_client_id>

GitHub

--provider github

# ipa idp-add my-github-idp \
  --provider github \
  --client-id <github_client_id>

Keycloak,
Red Hat Single Sign-On

--provider keycloak
--organization
--base-url

# ipa idp-add my-keycloak-idp \
  --provider keycloak \
  --organization main \
  --base-url keycloak.idm.example.com:8443/auth \
  --client-id <keycloak_client_id>
참고

Keycloak 17 이상의 Quarkus 버전은 URI의 /auth/ 부분을 제거했습니다. 배포에서 Keycloak이 아닌Quarkus 배포를 사용하는 경우 --base-url 옵션에 /auth/ 를 포함합니다.

Okta

--provider okta

# ipa idp-add my-okta-idp \
  --provider okta
  --base-url dev-12345.okta.com \
  --client-id <okta_client_id>

2.5. IdM의 외부 ID 공급자를 관리하기 위한 ipa idp-* 명령의 옵션

다음 예제에서는 다른 IdP 템플릿을 기반으로 외부 IdP에 대한 참조를 구성하는 방법을 보여줍니다. 다음 옵션을 사용하여 설정을 지정합니다.

--provider
알려진 ID 공급자 중 하나에 대한 사전 정의된 템플릿
--client-id
애플리케이션 등록 중에 IdP에서 발행한 OAuth 2.0 클라이언트 식별자입니다. 애플리케이션 등록 절차는 각 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 참조를 생성할 때 이 옵션을 사용하는 경우 대화식으로 시크릿을 입력하라는 메시지가 표시됩니다. 클라이언트 시크릿을 암호로 보호합니다.

참고

RHEL 9.1의 SSSD는 클라이언트 시크릿을 사용하지 않는 기밀인 OAuth 2.0 클라이언트만 지원합니다. 기밀 클라이언트의 클라이언트 시크릿이 필요한 외부 IdP를 사용하려면 RHEL 9.2 이상에서 SSSD를 사용해야 합니다.

2.6. 외부 IdP에 대한 참조 관리

외부 ID 공급자(IdP)에 대한 참조를 생성한 후 해당 참조를 찾고, 표시, 수정, 삭제할 수 있습니다. 이 예제에서는 keycloak-server1 이라는 외부 IdP에 대한 참조를 관리하는 방법을 보여줍니다.

사전 요구 사항

  • IdM 관리자 계정으로 인증할 수 있습니다.
  • IdM 서버는 RHEL 9.1 이상을 사용하고 있습니다.
  • IdM 서버는 SSSD 2.7.0 이상을 사용하고 있습니다.
  • IdM에 외부 IdP에 대한 참조가 생성되어 있습니다. 외부 ID 공급자에 대한 참조 생성을 참조하십시오.

절차

  1. IdM 서버에서 IdM 관리자로 인증합니다.

    [root@server ~]# kinit admin
  2. IdP 참조를 관리합니다.

    • 항목에 string keycloak 이 포함된 IdP 참조를 찾으려면 다음을 수행합니다.

      [root@server ~]# ipa idp-find keycloak
    • my-keycloak-idp 라는 IdP 참조를 표시하려면 다음을 수행합니다.

      [root@server ~]# ipa idp-show my-keycloak-idp
    • IdP 참조를 수정하려면 ipa idp-mod 명령을 사용합니다. 예를 들어 my-keycloak-idp 라는 IdP 참조의 시크릿을 변경하려면 시크릿을 입력하라는 메시지를 표시하도록 --secret 옵션을 지정합니다.

      [root@server ~]# ipa idp-mod my-keycloak-idp --secret
    • my-keycloak-idp 라는 IdP 참조를 삭제하려면 다음을 수행합니다.

      [root@server ~]# ipa idp-del my-keycloak-idp

2.7. IdM 사용자가 외부 IdP를 통해 인증할 수 있도록 활성화

IdM 사용자가 외부 ID 공급자(IdP)를 통해 인증할 수 있도록 하려면 이전에 생성한 외부 IdP 참조를 사용자 계정과 연결합니다. 이 예제에서는 외부 IdP 참조 keycloak-server1 을 사용자 idm-user-with-external-idp 와 연결합니다.

사전 요구 사항

  • IdM 클라이언트 및 IdM 서버는 RHEL 9.1 이상을 사용하고 있습니다.
  • IdM 클라이언트 및 IdM 서버는 SSSD 2.7.0 이상을 사용하고 있습니다.
  • 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. IdM 티켓 수신 티켓을 외부 IdP 사용자로 검색

IdM(Identity Management) 사용자에 대한 인증을 외부 ID 공급자(IdP)에 위임한 경우 IdM 사용자는 외부 IdP에 인증하여 Kerberos 티켓(TGT)을 요청할 수 있습니다.

다음 작업을 수행하려면 이 절차를 완료합니다.

  1. 익명 Kerberos 티켓을 로컬로 검색하고 저장합니다.
  2. kinit-T 옵션과 함께 사용하여 idm-user-with-external-idp 사용자에게 FAST(Secure tunneling) 채널을 통해 유연한 인증을 활성화하여 Kerberos 클라이언트와 KDC(Kerberos Distribution Center) 간에 보안 연결을 제공하도록 TGT를 요청합니다.

사전 요구 사항

  • IdM 클라이언트 및 IdM 서버는 RHEL 9.1 이상을 사용하고 있습니다.
  • IdM 클라이언트 및 IdM 서버는 SSSD 2.7.0 이상을 사용하고 있습니다.
  • IdM에 외부 IdP에 대한 참조가 생성되어 있습니다. 외부 ID 공급자에 대한 참조 생성을 참조하십시오.
  • 사용자 계정과 외부 IdP 참조가 연결되어 있습니다. 외부 IdP를 통해 인증하기 위해 IdM 사용자 활성화를 참조하십시오.
  • 처음에 로그인한 사용자는 로컬 파일 시스템의 디렉터리에 대한 쓰기 권한이 있습니다.

절차

  1. 익명 PKINIT를 사용하여 Kerberos 티켓을 얻고 ./fast.ccache 라는 파일에 저장합니다.

    $ kinit -n -c ./fast.ccache
  2. [선택 사항] 검색된 티켓을 확인합니다.

    $ 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
  3. -T 옵션을 사용하여 IdM 사용자로 인증을 시작하여 gRPCST 통신 채널을 활성화합니다.

    [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.:
  4. 브라우저에서 명령 출력에 제공된 웹 사이트에서 사용자로 인증합니다.
  5. 명령줄에서 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) = 152

2.9. SSH를 통해 외부 IdP 사용자로 IdM 클라이언트에 로그인

SSH를 통해 외부 ID 공급자(IdP) 사용자로 IdM 클라이언트에 로그인하려면 명령행에서 로그인 프로세스를 시작합니다. 메시지가 표시되면 IdP와 연결된 웹 사이트에서 인증 프로세스를 수행하고 IdM(Identity Management) 클라이언트에서 프로세스를 완료합니다.

사전 요구 사항

절차

  1. 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.
  2. 브라우저에서 명령 출력에 제공된 웹 사이트에서 사용자로 인증합니다.
  3. 명령줄에서 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 옵션

다음 ID 공급자(IdP)는 OAuth 2.0 장치 권한 부여 흐름을 지원합니다.

  • Azure AD를 포함한 Microsoft Identity Platform
  • Google
  • GitHub
  • Keycloak (Red Hat Single Sign-On (SSO))
  • Okta

ipa idp-add 명령을 사용하여 이러한 외부 IdP 중 하나에 대한 참조를 생성하는 경우 아래에 설명된 대로 추가 옵션으로 확장되는 --provider 옵션을 사용하여 IdP 유형을 지정할 수 있습니다.

--provider=microsoft

Microsoft Azure IdP는 Azure 테넌트 ID를 기반으로 parametrization을 사용할 수 있으며 ipa idp-add 명령에 --organization 옵션으로 지정할 수 있습니다. live.com IdP에 대한 지원이 필요한 경우 --organization common 을 지정합니다.

--provider=microsoft 를 선택하면 다음 옵션을 사용하도록 확장됩니다. --organization 옵션의 값은 표의 ${ipaidporg} 문자열을 대체합니다.

옵션현재의

--auth-uri=URI

https://login.microsoftonline.com/${ipaidporg}/oauth2/v2.0/authorize

--dev-auth-uri=URI

https://login.microsoftonline.com/${ipaidporg}/oauth2/v2.0/devicecode

--token-uri=URI

https://login.microsoftonline.com/${ipaidporg}/oauth2/v2.0/token

--userinfo-uri=URI

https://graph.microsoft.com/oidc/userinfo

--keys-uri=URI

https://login.microsoftonline.com/common/discovery/v2.0/keys

--scope=STR

OpenID 이메일

--idp-user-id=STR

email

--provider=google

--provider=google 를 선택하면 다음과 같은 옵션을 사용합니다.

옵션현재의

--auth-uri=URI

https://accounts.google.com/o/oauth2/auth

--dev-auth-uri=URI

https://oauth2.googleapis.com/device/code

--token-uri=URI

https://oauth2.googleapis.com/token

--userinfo-uri=URI

https://openidconnect.googleapis.com/v1/userinfo

--keys-uri=URI

https://www.googleapis.com/oauth2/v3/certs

--scope=STR

OpenID 이메일

--idp-user-id=STR

email

--provider=github

--provider=github 를 선택하면 다음과 같은 옵션을 사용합니다.

옵션현재의

--auth-uri=URI

https://github.com/login/oauth/authorize

--dev-auth-uri=URI

https://github.com/login/device/code

--token-uri=URI

https://github.com/login/oauth/access_token

--userinfo-uri=URI

https://openidconnect.googleapis.com/v1/userinfo

--keys-uri=URI

https://api.github.com/user

--scope=STR

user

--idp-user-id=STR

login

--provider=keycloak

Keycloak을 사용하면 여러 영역 또는 조직을 정의할 수 있습니다. 일반적으로 사용자 정의 배포의 일부이므로 기본 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에 지정된 값은 '${ipaidporg} 문자열을 대체합니다.

옵션현재의

--auth-uri=URI

https://${ipaidpbaseurl}/realms/${ipaidporg}/protocol/openid-connect/auth

--dev-auth-uri=URI

https://${ipaidpbaseurl}/realms/${ipaidporg}/protocol/openid-connect/auth/device

--token-uri=URI

https://${ipaidpbaseurl}/realms/${ipaidporg}/protocol/openid-connect/token

--userinfo-uri=URI

https://${ipaidpbaseurl}/realms/${ipaidporg}/protocol/openid-connect/userinfo

--scope=STR

OpenID 이메일

--idp-user-id=STR

email

--provider=okta

Okta에서 새 조직을 등록하면 새 기본 URL이 연결됩니다. ipa idp-add 명령에 --base-url 옵션을 사용하여 이 기본 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} 문자열을 대체합니다.

옵션현재의

--auth-uri=URI

https://${ipaidpbaseurl}/oauth2/v1/authorize

--dev-auth-uri=URI

https://${ipaidpbaseurl}/oauth2/v1/device/authorize

--token-uri=URI

https://${ipaidpbaseurl}/oauth2/v1/token

--userinfo-uri=URI

https://${ipaidpbaseurl}/oauth2/v1/userinfo

--scope=STR

OpenID 이메일

--idp-user-id=STR

email

3장. IdM 도메인 멤버에서 Samba 설정

Red Hat IdM(Identity Management) 도메인에 연결된 호스트에서 Samba를 설정할 수 있습니다. IdM의 사용자 및 또한 신뢰할 수 있는 AD(Active Directory) 도메인에서 사용 가능한 경우 Samba에서 제공하는 공유 및 프린터 서비스에 액세스할 수 있습니다.

중요

IdM 도메인 멤버에서 Samba를 사용하는 것은 지원되지 않는 기술 프리뷰 기능이며 특정 제한 사항이 포함되어 있습니다. 예를 들어, IdM 신뢰 컨트롤러는 Active Directory 글로벌 카탈로그 서비스를 지원하지 않으며 DMCE/원격 프로시저 호출(DCE/RPC) 프로토콜을 사용하여 IdM 그룹 해결을 지원하지 않습니다. 결과적으로 AD 사용자는 다른 IdM 클라이언트에 로그인할 때 IdM 클라이언트에서 호스팅되는 Samba 공유 및 프린터에만 액세스할 수 있습니다. Windows 시스템에 로그인한 AD 사용자는 IdM 도메인 멤버에서 호스팅되는 Samba 공유에 액세스할 수 없습니다.

IdM 도메인 구성원에 Samba를 배포하는 고객은 Red Hat에 피드백을 제공하는 것이 좋습니다.

AD 도메인의 사용자가 Samba에서 제공하는 공유 및 프린터 서비스에 액세스해야 하는 경우 AES 암호화 유형이 AD인지 확인합니다. 자세한 내용은 GPO를 사용하여 Active Directory에서 AES 암호화 유형 활성화를 참조하십시오.

사전 요구 사항

  • 호스트는 IdM 도메인에 클라이언트로 결합됩니다.
  • IdM 서버와 클라이언트 모두 RHEL 9.0 이상에서 실행해야 합니다.

3.1. 도메인 멤버에 Samba를 설치하기 위해 IdM 도메인 준비

IdM 클라이언트에 Samba를 설정하려면 IdM 서버에서 ipa-adtrust-install 유틸리티를 사용하여 IdM 도메인을 준비해야 합니다.

참고

ipa-adtrust-install 명령을 실행하는 시스템은 자동으로 AD 신뢰 컨트롤러가 됩니다. 그러나 IdM 서버에서 ipa-adtrust-install 을 한 번만 실행해야 합니다.

사전 요구 사항

  • IdM 서버가 설치되어 있어야 합니다.
  • 패키지를 설치하고 IdM 서비스를 다시 시작하려면 루트 권한이 필요합니다.

절차

  1. 필수 패키지를 설치합니다.

    [root@ipaserver ~]# dnf install ipa-server-trust-ad samba-client
  2. IdM 관리자로 인증합니다.

    [root@ipaserver ~]# kinit admin
  3. ipa-adtrust-install 유틸리티를 실행합니다.

    [root@ipaserver ~]# ipa-adtrust-install

    IdM이 통합된 DNS 서버와 함께 설치된 경우 DNS 서비스 레코드가 자동으로 생성됩니다.

    통합된 DNS 서버 없이 IdM을 설치한 경우, ipa-adtrust-install 은 DNS에 수동으로 추가해야 하는 서비스 레코드 목록을 인쇄합니다.

  4. 스크립트에서 /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
  5. 스크립트에서 이전 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]: yes
  6. 메시지가 표시되면 IdM 도메인의 NetBIOS 이름을 입력하거나 Enter 를 눌러 제안된 이름을 수락합니다.

    Trust is configured but no NetBIOS domain name found, setting it now.
    Enter the NetBIOS name for the IPA domain.
    Only up to 15 uppercase ASCII letters, digits and dashes are allowed.
    Example: EXAMPLE.
    
    NetBIOS domain name [IDM]:
  7. SID 생성 작업을 실행하여 기존 사용자의 SID를 생성하라는 메시지가 표시됩니다.

    Do you want to run the ipa-sidgen task? [no]: yes

    이는 리소스 집약적인 작업이므로 사용자가 많은 경우 한 번에 이 작업을 실행할 수 있습니다.

  8. (선택 사항) 기본적으로 Dynamic RPC 포트 범위는 Windows Server 2008 이상에서는 49152-65535 로 정의됩니다. 환경에 대해 다른 Dynamic 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-permanent
  9. ipa 서비스를 다시 시작하십시오.

    [root@ipaserver ~]# ipactl restart
  10. smbclient 유틸리티를 사용하여 Samba가 IdM 측에서 Kerberos 인증에 응답하는지 확인합니다.

    [root@ipaserver ~]# smbclient -L server.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.2. IdM 클라이언트에 Samba 서버 설치 및 구성

IdM 도메인에 등록된 클라이언트에 Samba를 설치하고 구성할 수 있습니다.

사전 요구 사항

절차

  1. ipa-client-samba 패키지를 설치합니다.

    [root@idm_client]# dnf install ipa-client-samba
  2. ipa-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
  3. 기본적으로 ipa-client- 915는 사용자가 연결할 때 사용자의 홈 디렉터리를 동적으로 공유하는 /etc/ controlPlane/dpdk.conf 파일에 [homes] 섹션을 자동으로 추가합니다. 이 서버에 홈 디렉터리가 없거나 공유하려는 경우 /etc/samba/smb.conf에서 다음 행을 제거하십시오.

    [homes]
        read only = no
  4. 디렉토리와 프린터를 공유합니다. 자세한 내용은 다음 섹션을 참조하십시오.

  5. 로컬 방화벽에서 Samba 클라이언트에 필요한 포트를 엽니다.

    [root@idm_client]# firewall-cmd --permanent --add-service=samba-client
    [root@idm_client]# firewall-cmd --reload
  6. smbwinbind 서비스를 활성화하고 시작합니다.

    [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-ECDHE(1) 매뉴얼 페이지

3.3. IdM이 새 도메인을 신뢰하는 경우 ID 매핑 구성 수동 추가

Samba에는 사용자가 리소스에 액세스하는 각 도메인에 대한 ID 매핑 구성이 필요합니다. IdM 클라이언트에서 실행 중인 기존 Samba 서버에서 관리자가 Active Directory(AD) 도메인에 새 신뢰를 추가한 후 ID 매핑 구성을 수동으로 추가해야 합니다.

사전 요구 사항

  • IdM 클라이언트에 Samba가 구성되어 있습니다. 그 후 IdM에 새로운 신뢰가 추가되었습니다.
  • Kerberos에 대한 DES 및 RC4 암호화 유형은 신뢰할 수 있는 AD 도메인에서 비활성화해야 합니다. 보안상의 이유로 RHEL 9는 이러한 약한 암호화 유형을 지원하지 않습니다.

절차

  1. 호스트의 keytab을 사용하여 인증합니다.

    [root@idm_client]# kinit -k
  2. ipa 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
    ----------------------------

    다음 단계에서 ipabaseidipaidrangesize 속성의 값이 필요합니다.

  3. 사용 가능한 최고 ID를 계산하려면 다음 공식을 사용합니다.

    maximum_range = ipabaseid + ipaidrangesize - 1

    이전 단계의 값을 사용하면 ad.example.com 도메인에서 사용 가능한 가장 높은 ID는 1918599999 (1918400000 + 200000 - 1)입니다.

  4. /etc/samba/smb.conf 파일을 편집하고 도메인의 ID 매핑 구성을 [global] 섹션에 추가합니다.

    idmap config AD : range = 1918400000 - 1918599999
    idmap config AD : backend = sss

    ipabaseid 속성의 값을 가장 낮은 값으로 지정하고 이전 단계에서 계산된 값을 범위의 가장 높은 값으로 지정합니다.

  5. smbwinbind 서비스를 다시 시작합니다.

    [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)
    ...

3.4. 추가 리소스

4장. NIS에서 Identity Management로 마이그레이션

NIS(Network Information Service) 서버에는 사용자, 그룹, 호스트, 넷 그룹 및 자동 마운트 맵에 대한 정보가 포함될 수 있습니다. 시스템 관리자는 이러한 항목 유형, 인증 및 권한 부여를 NIS 서버에서 IdM(Identity Management) 서버로 마이그레이션하여 모든 사용자 관리 작업을 IdM 서버에서 수행할 수 있습니다. NIS에서 IdM로 마이그레이션하면 Kerberos와 같은 더 안전한 프로토콜에 액세스할 수 있습니다.

4.1. IdM에서 NIS 활성화

NIS(Identity Management) 서버 간 통신을 허용하려면 IdM 서버에서 NIS 호환성 옵션을 활성화해야 합니다.

사전 요구 사항

  • IdM 서버에서 루트 액세스 권한이 있습니다.

절차

  1. IdM 서버에서 NIS 리스너 및 호환성 플러그인을 활성화합니다.

    [root@ipaserver ~]# ipa-nis-manage enable
    [root@ipaserver ~]# ipa-compat-manage enable
  2. 선택 사항: 더 엄격한 방화벽 구성을 위해 고정 포트를 설정합니다.

    예를 들어 포트를 사용하지 않는 포트 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 이상의 포트 번호를 사용하지 않습니다.

  3. 포트 매퍼 서비스를 활성화하고 시작합니다.

    [root@ipaserver ~]# systemctl enable rpcbind.service
    [root@ipaserver ~]# systemctl start rpcbind.service
  4. 디렉터리 서버 재시작:

    [root@ipaserver ~]# systemctl restart dirsrv.target

4.2. NIS에서 IdM로 사용자 항목 마이그레이션

NIS passwd 맵에는 이름, UID, 기본 그룹, GECOS, 쉘 및 홈 디렉터리와 같은 사용자 정보가 포함되어 있습니다. 이 데이터를 사용하여 NIS 사용자 계정을 IdM(Identity Management)으로 마이그레이션합니다.

사전 요구 사항

절차

  1. yp-tools 패키지를 설치합니다.

    [root@nis-server ~]# dnf install yp-tools -y
  2. NIS 서버에서 다음 콘텐츠를 사용하여 /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
    done
  3. IdM 관리자로 인증합니다.

    [root@nis-server ~]# kinit admin
  4. 스크립트를 실행합니다. 예를 들어 다음과 같습니다.

    [root@nis-server ~]# sh /root/nis-users.sh nisdomain nis-server.example.com
    중요

    이 스크립트는 첫 번째 이름, 성에 하드 코딩된 값을 사용하고 암호를 passw0rd1 로 설정합니다. 사용자는 다음 로그인 시 임시 암호를 변경해야 합니다.

4.3. NIS에서 IdM로 사용자 그룹 마이그레이션

NIS 그룹 맵에 는 그룹 이름, GID 또는 그룹 멤버와 같은 그룹에 대한 정보가 포함되어 있습니다. 이 데이터를 사용하여 NIS 그룹을 IdM(Identity Management)으로 마이그레이션합니다.

사전 요구 사항

절차

  1. yp-tools 패키지를 설치합니다.

    [root@nis-server ~]# dnf install yp-tools -y
  2. 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
    		ipa group-add-member $groupname --users={$members}
    	fi
    	ipa group-show $groupname
    done
  3. IdM 관리자로 인증합니다.

    [root@nis-server ~]# kinit admin
  4. 스크립트를 실행합니다. 예를 들어 다음과 같습니다.

    [root@nis-server ~]# sh /root/nis-groups.sh nisdomain nis-server.example.com

4.4. NIS에서 IdM로 호스트 항목 마이그레이션

NIS 호스트 맵에 는 호스트 이름 및 IP 주소와 같은 호스트에 대한 정보가 포함되어 있습니다. 이 데이터를 사용하여 NIS 호스트 항목을 IdM(Identity Management)으로 마이그레이션합니다.

참고

IdM에서 호스트 그룹을 생성하면 해당 shadow NIS 그룹이 자동으로 생성됩니다. 이러한 shadow NIS 그룹에서 ipa netgroup-* 명령을 사용하지 마십시오. ipa netgroup-* 명령만 사용하여 netgroup-add 명령을 통해 생성된 기본 netgroups를 관리합니다.

사전 요구 사항

절차

  1. yp-tools 패키지를 설치합니다.

    [root@nis-server ~]# dnf install yp-tools -y
  2. 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
    done
  3. IdM 관리자로 인증합니다.

    [root@nis-server ~]# kinit admin
  4. 스크립트를 실행합니다. 예를 들어 다음과 같습니다.

    [root@nis-server ~]# sh /root/nis-hosts.sh nisdomain nis-server.example.com
    참고

    이 스크립트는 별칭과 같은 특수 호스트 구성을 마이그레이션하지 않습니다.

4.5. NIS에서 IdM로 netgroup 항목 마이그레이션

NIS netgroup map에는 netgroups에 대한 정보가 포함되어 있습니다. 이 데이터를 사용하여 NIS netgroups를 IdM(Identity Management)으로 마이그레이션합니다.

사전 요구 사항

절차

  1. yp-tools 패키지를 설치합니다.

    [root@nis-server ~]# dnf install yp-tools -y
  2. 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
    done
  3. IdM 관리자로 인증합니다.

    [root@nis-server ~]# kinit admin
  4. 스크립트를 실행합니다. 예를 들어 다음과 같습니다.

    [root@nis-server ~]# sh /root/nis-netgroups.sh nisdomain nis-server.example.com

4.6. NIS에서 IdM로 자동 마운트 맵 마이그레이션

자동 마운트 맵은 위치(상위 항목), 관련 키 및 맵을 정의하는 일련의 중첩 및 상호 관련 항목입니다. NIS 자동 마운트를 마이그레이션하려면 IdM(Identity Management)에 매핑합니다.

사전 요구 사항

절차

  1. yp-tools 패키지를 설치합니다.

    [root@nis-server ~]# dnf install yp-tools -y
  2. 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
    ldapadd -x -h $3 -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)을 생성하고, LDIF 파일을 IdM 디렉터리 서버로 가져옵니다.

  3. IdM 관리자로 인증합니다.

    [root@nis-server ~]# kinit admin
  4. 스크립트를 실행합니다. 예를 들어 다음과 같습니다.

    [root@nis-server ~]# sh /root/nis-automounts.sh location nisdomain
         nis-server.example.com map_name

5장. IdM의 자동 마운트 사용

자동 마운트는 여러 시스템에서 디렉토리를 관리, 구성 및 액세스하는 방법입니다. 자동 마운트는 요청이 있을 때마다 디렉토리를 자동으로 마운트합니다. IdM(Identity Management) 도메인 내에서는 도메인 내 클라이언트의 디렉터리를 쉽게 공유할 수 있으므로 이 도메인은 잘 작동합니다.

예에서는 다음 시나리오를 사용합니다.

  • NFS-server.idm.example.com 은 NFS(네트워크 파일 시스템) 서버의 정규화된 도메인 이름(FQDN)입니다.
  • 간단히 하기 위해 nfs-server.idm.example.comraleigh 자동 마운트 위치에 대한 맵을 제공하는 IdM 클라이언트입니다.

    참고

    자동 마운트 위치는 고유한 NFS 맵 세트입니다. 이상적으로 이러한 맵은 모두 동일한 지역에 있으므로 예를 들어 클라이언트가 빠른 연결로 이점을 얻을 수 있지만 필수는 아닙니다.

  • NFS 서버는 /exports/project 디렉터리를 읽기-쓰기로 내보냅니다.
  • developers 그룹에 속하는 IdM 사용자는 raleigh mount 위치를 사용하는 IdM 클라이언트의 /devel/project/ 로 내보낸 디렉터리의 콘텐츠에 액세스할 수 있습니다.
  • IdM -client.idm.example.comraleigh 자동 마운트 위치를 사용하는 IdM 클라이언트입니다.
중요

NFS 서버 대신 Samba 서버를 사용하여 IdM 클라이언트의 공유를 제공하려면 IPA 환경의 Autofs로 kerberized CIFS 마운트를 구성하려면 How do the How do I configure kerberized CIFS mount with Autofs in an IPA environment? KCS 솔루션.

5.1. IdM의 NetNamespace 및 자동 마운트

Net Namespace 서비스는 자동 마운트 데몬을 통해 액세스 시 디렉토리를 마운트하도록 하여 필요에 따라 디렉터리 마운트를 자동화합니다. 또한, disabled에서는 period of inactivity을 통해 자동 마운트 된 디렉토리를 마운트 해제하도록 mount에 지시합니다. 정적 마운트와 달리 온디맨드 마운트는 시스템 리소스를 절약합니다.

자동 마운트 맵

NetNamespace 를 사용하는 시스템에서는 자동 마운트 설정이 여러 다른 파일에 저장됩니다. 기본 자동 마운트 설정 파일은 자동 마운트 마운트 지점의 마스터 매핑과 시스템의 관련 리소스가 포함된 /etc/auto.master 입니다. 이 매핑을 자동 마운트 맵 이라고 합니다.

/etc/auto.master 구성 파일에는 마스터 맵이 포함되어 있습니다. 다른 맵에 대한 참조를 포함할 수 있습니다. 이러한 맵은 직접 또는 간접일 수 있습니다. 직접 맵은 마운트 지점에 절대 경로 이름을 사용하지만 간접 맵은 상대 경로 이름을 사용합니다.

IdM의 자동 마운트 설정

자동 마운트 는 일반적으로 로컬 /etc/auto.master 및 관련 파일에서 맵 데이터를 검색하지만 다른 소스에서 맵 데이터를 검색할 수도 있습니다. 일반적인 소스 중 하나는 LDAP 서버입니다. IdM(Identity Management)의 컨텍스트에서는 389 Directory Server입니다.

NetNamespace를 사용하는 시스템이 IdM 도메인의 클라이언트이면 자동 마운트 구성이 로컬 구성 파일에 저장되지 않습니다. 대신 맵, 위치 및 키와 같은 NetNamespace 구성이 IdM 디렉터리에 LDAP 항목으로 저장됩니다. 예를 들어 idm.example.com IdM 도메인의 경우 기본 마스터 맵 은 다음과 같이 저장됩니다.

dn:
automountmapname=auto.master,cn=default,cn=automount,dc=idm,dc=example,dc=com
objectClass: automountMap
objectClass: top
automountMapName: auto.master

5.2. Red Hat Identity Management 도메인에서 Kerberos를 사용하여 NFS 서버 설정

Red Hat IdM(Identity Management)을 사용하는 경우 NFS 서버를 IdM 도메인에 연결할 수 있습니다. 이를 통해 사용자와 그룹을 중앙에서 관리하고 인증, 무결성 보호 및 트래픽 암호화에 Kerberos를 사용할 수 있습니다.

사전 요구 사항

  • NFS 서버는 Red Hat IdM(Identity Management) 도메인에 등록되어 있습니다.
  • NFS 서버가 실행 중이고 구성되어 있습니다.

절차

  1. IdM 관리자로 kerberos 티켓을 받습니다.

    # kinit admin
  2. nfs/<FQDN> 서비스 주체를 생성합니다.

    # ipa service-add nfs/nfs_server.idm.example.com
  3. IdM에서 nfs 서비스 주체를 검색하여 /etc/krb5.keytab 파일에 저장합니다.

    # ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytab
  4. 선택 사항: /etc/krb5.keytab 파일에서 주체를 표시합니다.

    # klist -k /etc/krb5.keytab
    Keytab name: FILE:/etc/krb5.keytab
    KVNO Principal
    ---- --------------------------------------------------------------------------
       1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM

    기본적으로 IdM 클라이언트는 호스트를 IdM 도메인에 결합할 때 /etc/krb5.keytab 파일에 호스트 주체를 추가합니다. 호스트 주체가 없는 경우 ipa-getkeytab -s idm_server.idm.example.com -p host/nfs_server.idm.example.com -k /etc/krb5.keytab 명령을 사용하여 추가합니다.

  5. ipa-client-automount 유틸리티를 사용하여 IdM ID의 매핑을 구성합니다.

    #  ipa-client-automount
    Searching for IPA server...
    IPA server: DNS discovery
    Location: default
    Continue to configure the system with these values? [no]: yes
    Configured /etc/idmapd.conf
    Restarting sssd, waiting for it to become available.
    Started autofs
  6. /etc/exports 파일을 업데이트하고 Kerberos 보안 방법을 클라이언트 옵션에 추가합니다. 예를 들어 다음과 같습니다.

    /nfs/projects/      	192.0.2.0/24(rw,sec=krb5i)

    클라이언트가 여러 보안 방법 중에서 선택할 수 있도록 하려면 해당 방법을 콜론으로 구분하여 지정합니다.

    /nfs/projects/      	192.0.2.0/24(rw,sec=krb5:krb5i:krb5p)
  7. 내보낸 파일 시스템을 다시 로드합니다.

    # exportfs -r

5.3. IdM CLI를 사용하여 IdM에서 자동 마운트 위치 및 맵 구성

위치는 맵 세트이며, 모두 auto.master 에 저장됩니다. 하나의 위치는 여러 맵을 저장할 수 있습니다. 위치 항목은 맵 항목용 컨테이너로만 작동합니다. 이 항목은 및 의 자동 마운트 설정이 아닙니다.

IdM(Identity Management)의 시스템 관리자는 IdM에서 자동 마운트 위치와 맵을 구성하여 지정된 위치의 IdM 사용자가 호스트의 특정 마운트 지점으로 이동하여 NFS 서버에서 내보낸 공유에 액세스할 수 있습니다. 내보낸 NFS 서버 디렉터리와 마운트 지점은 모두 맵에 지정됩니다. 이 예제에서는 raleigh 위치와 IdM 클라이언트의 /devel/ 마운트 지점에 nfs-server.idm.example.com:/exports/project 공유를 읽기-쓰기 디렉터리로 마운트하는 맵을 구성하는 방법을 설명합니다.

사전 요구 사항

  • IdM 지원 호스트에 IdM 관리자로 로그인되어 있습니다.

절차

  1. raleigh Autoscaler 위치를 만듭니다.

    $ ipa automountlocation-add raleigh
    ----------------------------------
    Added automount location "raleigh"
    ----------------------------------
      Location: raleigh
  2. raleigh 위치에 auto.devel 자동 자동 마운트 맵을 만듭니다.

    $ ipa automountmap-add raleigh auto.devel
    --------------------------------
    Added automount map "auto.devel"
    --------------------------------
      Map: auto.devel
  3. exports/ share에 대한 키 및 마운트 정보를 추가합니다.

    1. auto.devel 맵의 키 및 마운트 정보를 추가합니다.

      $ ipa automountkey-add raleigh auto.devel --key='*' --info='-sec=krb5p,vers=4 nfs-server.idm.example.com:/exports/&'
      -----------------------
      Added automount key "*"
      -----------------------
        Key: *
        Mount information: -sec=krb5p,vers=4 nfs-server.idm.example.com:/exports/&
    2. auto.master 맵에 대한 키 및 마운트 정보를 추가합니다.

      $ ipa automountkey-add raleigh auto.master --key=/devel --info=auto.devel
      ----------------------------
      Added automount key "/devel"
      ----------------------------
        Key: /devel
        Mount information: auto.devel

5.4. IdM 클라이언트에서 자동 마운트 구성

IdM(Identity Management) 시스템 관리자는 사용자가 클라이언트에 로그인할 때 클라이언트가 추가된 위치에 NFS 공유에 액세스할 수 있도록 IdM 클라이언트의 자동 자동 마운트 서비스를 구성할 수 있습니다. 이 예제에서는 raleigh 위치에서 사용할 수 있는 자동 마운트 서비스를 사용하도록 IdM 클라이언트를 구성하는 방법을 설명합니다.

사전 요구 사항

  • IdM 클라이언트에 대한 루트 액세스 권한이 있습니다.
  • IdM 관리자로 로그인되어 있습니다.
  • 자동 마운트 위치가 있습니다. 예를 들어 location은 raleigh 입니다.

절차

  1. IdM 클라이언트에서 ipa-client-automount 명령을 입력하고 위치를 지정합니다. -U 옵션을 사용하여 축소 스크립트를 실행합니다.

    # ipa-client-automount --location raleigh -U
  2. NetNamespace 서비스를 중지하고 SSSD 캐시를 지우고 NetNamespace 서비스를 시작하여 새 구성 설정을 로드합니다.

    # systemctl stop autofs ; sss_cache -E ; systemctl start autofs

5.5. IdM 사용자가 IdM 클라이언트의 NFS 공유에 액세스할 수 있는지 확인

IdM(Identity Management) 시스템 관리자는 특정 그룹의 멤버인 IdM 사용자가 특정 IdM 클라이언트에 로그인할 때 NFS 공유에 액세스할 수 있는지 테스트할 수 있습니다.

이 예제에서는 다음 시나리오를 테스트합니다.

  • developers 그룹에 속하는 idm_user 라는 IdM 사용자는 /devel/project 디렉터리에 있는 idm-client.idm.example.com 에 자동 마운트된 파일의 내용을 읽고 쓸 수 있습니다.

절차

  1. IdM 사용자가 읽기-쓰기 디렉터리에 액세스할 수 있는지 확인합니다.

    1. IdM 사용자로 IdM 클라이언트에 연결합니다.

      $ ssh idm_user@idm-client.idm.example.com
      Password:
    2. IdM 사용자의 티켓 통합 티켓 (TGT)을 받으십시오.

      $ kinit idm_user
    3. [선택 사항] IdM 사용자의 그룹 멤버십을 확인합니다.

      $ ipa user-show idm_user
        User login: idm_user
        [...]
        Member of groups: developers, ipausers
    4. /devel/project 디렉터리로 이동합니다.

      $ cd /devel/project
    5. 디렉터리 콘텐츠를 나열합니다.

      $ ls
      rw_file
    6. 디렉터리의 파일에 행을 추가하여 쓰기 권한을 테스트합니다.

      $ echo "idm_user can write into the file" > rw_file
    7. [선택 사항] 파일의 업데이트된 콘텐츠를 봅니다.

      $ cat rw_file
      this is a read-write file
      idm_user can write into the file

    출력에서 idm_user 가 파일에 쓸 수 있는지 확인합니다.

6장. Ansible을 사용하여 IdM 사용자의 NFS 공유 자동 마운트

자동 마운트는 여러 시스템에서 디렉토리를 관리, 구성 및 액세스하는 방법입니다. 자동 마운트는 요청이 있을 때마다 디렉토리를 자동으로 마운트합니다. IdM(Identity Management) 도메인 내에서는 도메인 내 클라이언트의 디렉터리를 쉽게 공유할 수 있으므로 이 도메인은 잘 작동합니다.

IdM 사용자가 IdM 위치에 IdM 클라이언트에 로그인하기 위해 Ansible을 사용하여 자동으로 마운트되도록 NFS 공유를 구성할 수 있습니다.

이 장의 예제에서는 다음 시나리오를 사용합니다.

  • NFS-server.idm.example.com 은 NFS(네트워크 파일 시스템) 서버의 정규화된 도메인 이름(FQDN)입니다.
  • nfs-server.idm.example.comraleigh 자동 마운트 위치에 있는 IdM 클라이언트입니다.
  • NFS 서버는 /exports/project 디렉터리를 읽기-쓰기로 내보냅니다.
  • developers 그룹에 속하는 IdM 사용자는 NFS 서버와 동일한 raleigh 자동 마운트 위치에 있는 IdM 클라이언트의 /devel/project/ 로 내보낸 디렉터리의 콘텐츠에 액세스할 수 있습니다.
  • IdM -client.idm.example.comraleigh 자동 마운트 위치에 있는 IdM 클라이언트입니다.
중요

NFS 서버 대신 Samba 서버를 사용하여 IdM 클라이언트의 공유를 제공하려면 IPA 환경의 Autofs로 kerberized CIFS 마운트를 구성하려면 How do the How do I configure kerberized CIFS mount with Autofs in an IPA environment? KCS 솔루션.

 

이 장에는 다음 섹션이 포함되어 있습니다.

6.1. IdM의 NetNamespace 및 자동 마운트

Net Namespace 서비스는 자동 마운트 데몬을 통해 액세스 시 디렉토리를 마운트하도록 하여 필요에 따라 디렉터리 마운트를 자동화합니다. 또한, disabled에서는 period of inactivity을 통해 자동 마운트 된 디렉토리를 마운트 해제하도록 mount에 지시합니다. 정적 마운트와 달리 온디맨드 마운트는 시스템 리소스를 절약합니다.

자동 마운트 맵

NetNamespace 를 사용하는 시스템에서는 자동 마운트 설정이 여러 다른 파일에 저장됩니다. 기본 자동 마운트 설정 파일은 자동 마운트 마운트 지점의 마스터 매핑과 시스템의 관련 리소스가 포함된 /etc/auto.master 입니다. 이 매핑을 자동 마운트 맵 이라고 합니다.

/etc/auto.master 구성 파일에는 마스터 맵이 포함되어 있습니다. 다른 맵에 대한 참조를 포함할 수 있습니다. 이러한 맵은 직접 또는 간접일 수 있습니다. 직접 맵은 마운트 지점에 절대 경로 이름을 사용하지만 간접 맵은 상대 경로 이름을 사용합니다.

IdM의 자동 마운트 설정

자동 마운트 는 일반적으로 로컬 /etc/auto.master 및 관련 파일에서 맵 데이터를 검색하지만 다른 소스에서 맵 데이터를 검색할 수도 있습니다. 일반적인 소스 중 하나는 LDAP 서버입니다. IdM(Identity Management)의 컨텍스트에서는 389 Directory Server입니다.

NetNamespace를 사용하는 시스템이 IdM 도메인의 클라이언트이면 자동 마운트 구성이 로컬 구성 파일에 저장되지 않습니다. 대신 맵, 위치 및 키와 같은 NetNamespace 구성이 IdM 디렉터리에 LDAP 항목으로 저장됩니다. 예를 들어 idm.example.com IdM 도메인의 경우 기본 마스터 맵 은 다음과 같이 저장됩니다.

dn:
automountmapname=auto.master,cn=default,cn=automount,dc=idm,dc=example,dc=com
objectClass: automountMap
objectClass: top
automountMapName: auto.master

6.2. Red Hat Identity Management 도메인에서 Kerberos를 사용하여 NFS 서버 설정

Red Hat IdM(Identity Management)을 사용하는 경우 NFS 서버를 IdM 도메인에 연결할 수 있습니다. 이를 통해 사용자와 그룹을 중앙에서 관리하고 인증, 무결성 보호 및 트래픽 암호화에 Kerberos를 사용할 수 있습니다.

사전 요구 사항

  • NFS 서버는 Red Hat IdM(Identity Management) 도메인에 등록되어 있습니다.
  • NFS 서버가 실행 중이고 구성되어 있습니다.

절차

  1. IdM 관리자로 kerberos 티켓을 받습니다.

    # kinit admin
  2. nfs/<FQDN> 서비스 주체를 생성합니다.

    # ipa service-add nfs/nfs_server.idm.example.com
  3. IdM에서 nfs 서비스 주체를 검색하여 /etc/krb5.keytab 파일에 저장합니다.

    # ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytab
  4. 선택 사항: /etc/krb5.keytab 파일에서 주체를 표시합니다.

    # klist -k /etc/krb5.keytab
    Keytab name: FILE:/etc/krb5.keytab
    KVNO Principal
    ---- --------------------------------------------------------------------------
       1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM
       7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM

    기본적으로 IdM 클라이언트는 호스트를 IdM 도메인에 결합할 때 /etc/krb5.keytab 파일에 호스트 주체를 추가합니다. 호스트 주체가 없는 경우 ipa-getkeytab -s idm_server.idm.example.com -p host/nfs_server.idm.example.com -k /etc/krb5.keytab 명령을 사용하여 추가합니다.

  5. ipa-client-automount 유틸리티를 사용하여 IdM ID의 매핑을 구성합니다.

    #  ipa-client-automount
    Searching for IPA server...
    IPA server: DNS discovery
    Location: default
    Continue to configure the system with these values? [no]: yes
    Configured /etc/idmapd.conf
    Restarting sssd, waiting for it to become available.
    Started autofs
  6. /etc/exports 파일을 업데이트하고 Kerberos 보안 방법을 클라이언트 옵션에 추가합니다. 예를 들어 다음과 같습니다.

    /nfs/projects/      	192.0.2.0/24(rw,sec=krb5i)

    클라이언트가 여러 보안 방법 중에서 선택할 수 있도록 하려면 해당 방법을 콜론으로 구분하여 지정합니다.

    /nfs/projects/      	192.0.2.0/24(rw,sec=krb5:krb5i:krb5p)
  7. 내보낸 파일 시스템을 다시 로드합니다.

    # exportfs -r

6.3. Ansible을 사용하여 IdM에서 자동 마운트 위치, 맵 및 키 구성

IdM(Identity Management) 시스템 관리자는 IdM에서 자동 마운트 위치 및 맵을 구성하여 지정된 위치의 IdM 사용자가 호스트의 특정 마운트 지점으로 이동하여 NFS 서버에서 내보낸 공유에 액세스할 수 있습니다. 내보낸 NFS 서버 디렉터리와 마운트 지점은 모두 맵에 지정됩니다. LDAP 용어에서 위치는 이러한 맵 항목의 컨테이너입니다.

이 예제에서는 Ansible을 사용하여 raleigh 위치를 구성하는 방법과 IdM 클라이언트의 /devel/project 마운트 지점에 nfs-server.idm.example.com:/exports/project 공유를 읽기-쓰기 디렉터리로 마운트하는 맵을 구성하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. Ansible 제어 노드에서 ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
  2. /usr/share/doc/ansible -freeipa/playbooks/automount/ 디렉터리에 있는mount-location-present.yml Ansible 플레이북 파일을 복사합니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/automount/automount-location-present.yml automount-location-map-and-key-present.yml
  3. 편집을 위해 autoscale-location-map-and-key-present.yml 파일을 엽니다.
  4. ipaautomountlocation 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자 의 암호로 설정합니다.
    • name 변수를 raleigh 로 설정합니다.
    • state 변수가 present 로 설정되어 있는지 확인합니다.

      이는 현재 예제에서 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Automount location present example
      hosts: ipaserver
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure automount location is present
        ipaautomountlocation:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: raleigh
          state: present
  5. autoscaling -location-map-and-key-present.yml 파일을 계속 편집합니다.

    1. tasks 섹션에서 자동 마운트 맵이 있는지 확인하는 작업을 추가합니다.

      [...]
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
      [...]
        - name: ensure map named auto.devel in location raleigh is created
          ipaautomountmap:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: auto.devel
            location: raleigh
            state: present
    2. 마운트 지점 및 NFS 서버 정보를 맵에 추가하는 또 다른 작업을 추가합니다.

      [...]
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
      [...]
        - name: ensure automount key /devel/project is present
          ipaautomountkey:
            ipaadmin_password: "{{ ipaadmin_password }}"
            location: raleigh
            mapname: auto.devel
            key: /devel/project
            info: nfs-server.idm.example.com:/exports/project
            state: present
    3. auto.develauto.master 에 연결되어 있는지 확인하는 다른 작업을 추가합니다.

      [...]
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
      [...]
      - name: Ensure auto.devel is connected in auto.master:
        ipaautomountkey:
          ipaadmin_password: "{{ ipaadmin_password }}"
          location: raleigh
          mapname: auto.map
          key: /devel
          info: auto.devel
          state: present
  6. 파일을 저장합니다.
  7. Ansible 플레이북을 실행하고 플레이북 및 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory automount-location-map-and-key-present.yml

6.4. Ansible을 사용하여 NFS 공유를 소유하는 그룹에 IdM 사용자 추가

IdM(Identity Management) 시스템 관리자는 Ansible을 사용하여 NFS 공유에 액세스할 수 있는 사용자 그룹을 생성하고 이 그룹에 IdM 사용자를 추가할 수 있습니다.

이 예제에서는 Ansible 플레이북을 사용하여 idm_user 계정이 developers 그룹에 속하도록 하는 방법을 설명하므로 idm_user/exports/project NFS 공유에 액세스할 수 있습니다.

사전 요구 사항

  • nfs-server.idm.example.com NFS 서버에 대한 루트 액세스 권한이 있습니다. 이 서버는 raleigh 자동 마운트 위치에 있는 IdM 클라이언트입니다.
  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. Ansible 제어 노드에서 ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
  2. 편집을 위해 autoscale-location-map-and-key-present.yml 파일을 엽니다.
  3. tasks 섹션에서 IdM 개발자 그룹이 존재하고 idm_user 가 이 그룹에 추가되었는지 확인하는 작업을 추가합니다.

    [...]
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
    [...]
      - ipagroup:
         ipaadmin_password: "{{ ipaadmin_password }}"
          name: developers
          user:
          - idm_user
          state: present
  4. 파일을 저장합니다.
  5. Ansible 플레이북을 실행하고 플레이북 및 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory automount-location-map-and-key-present.yml
  6. NFS 서버에서 /exports/project 디렉터리의 그룹 소유권을 developers 로 변경하여 그룹의 모든 IdM 사용자가 디렉터리에 액세스할 수 있도록 합니다.

    # chgrp developers /exports/project

6.5. IdM 클라이언트에서 자동 마운트 구성

IdM(Identity Management) 시스템 관리자는 사용자가 클라이언트에 로그인할 때 클라이언트가 추가된 위치에 NFS 공유에 액세스할 수 있도록 IdM 클라이언트의 자동 자동 마운트 서비스를 구성할 수 있습니다. 이 예제에서는 raleigh 위치에서 사용할 수 있는 자동 마운트 서비스를 사용하도록 IdM 클라이언트를 구성하는 방법을 설명합니다.

사전 요구 사항

  • IdM 클라이언트에 대한 루트 액세스 권한이 있습니다.
  • IdM 관리자로 로그인되어 있습니다.
  • 자동 마운트 위치가 있습니다. 예를 들어 location은 raleigh 입니다.

절차

  1. IdM 클라이언트에서 ipa-client-automount 명령을 입력하고 위치를 지정합니다. -U 옵션을 사용하여 축소 스크립트를 실행합니다.

    # ipa-client-automount --location raleigh -U
  2. NetNamespace 서비스를 중지하고 SSSD 캐시를 지우고 NetNamespace 서비스를 시작하여 새 구성 설정을 로드합니다.

    # systemctl stop autofs ; sss_cache -E ; systemctl start autofs

6.6. IdM 사용자가 IdM 클라이언트의 NFS 공유에 액세스할 수 있는지 확인

IdM(Identity Management) 시스템 관리자는 특정 그룹의 멤버인 IdM 사용자가 특정 IdM 클라이언트에 로그인할 때 NFS 공유에 액세스할 수 있는지 테스트할 수 있습니다.

이 예제에서는 다음 시나리오를 테스트합니다.

  • developers 그룹에 속하는 idm_user 라는 IdM 사용자는 /devel/project 디렉터리에 있는 idm-client.idm.example.com 에 자동 마운트된 파일의 내용을 읽고 쓸 수 있습니다.

절차

  1. IdM 사용자가 읽기-쓰기 디렉터리에 액세스할 수 있는지 확인합니다.

    1. IdM 사용자로 IdM 클라이언트에 연결합니다.

      $ ssh idm_user@idm-client.idm.example.com
      Password:
    2. IdM 사용자의 티켓 통합 티켓 (TGT)을 받으십시오.

      $ kinit idm_user
    3. [선택 사항] IdM 사용자의 그룹 멤버십을 확인합니다.

      $ ipa user-show idm_user
        User login: idm_user
        [...]
        Member of groups: developers, ipausers
    4. /devel/project 디렉터리로 이동합니다.

      $ cd /devel/project
    5. 디렉터리 콘텐츠를 나열합니다.

      $ ls
      rw_file
    6. 디렉터리의 파일에 행을 추가하여 쓰기 권한을 테스트합니다.

      $ echo "idm_user can write into the file" > rw_file
    7. [선택 사항] 파일의 업데이트된 콘텐츠를 봅니다.

      $ cat rw_file
      this is a read-write file
      idm_user can write into the file

    출력에서 idm_user 가 파일에 쓸 수 있는지 확인합니다.

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.