20.3. CLI를 사용하여 IdM 클라이언트의 AD 사용자에게 sudo 액세스 권한 부여

IdM(Identity Management) 시스템 관리자는 IdM 사용자 그룹을 사용하여 IdM 사용자에 대한 액세스 권한, 호스트 기반 액세스 제어, sudo 규칙 및 기타 제어를 설정할 수 있습니다. IdM 사용자 그룹은 IdM 도메인 리소스에 대한 액세스 권한을 부여하고 제한합니다.

AD(Active Directory) 사용자와 AD 그룹을 모두 IdM 사용자 그룹에 추가할 수 있습니다. 다음을 수행하려면 다음을 수행합니다.

  1. POSIX가 아닌 외부 IdM 그룹에 AD 사용자 또는 그룹을 추가합니다.
  2. POSIX 이외의 외부 IdM 그룹을 IdM POSIX 그룹에 추가합니다.

그런 다음 POSIX 그룹의 권한을 관리하여 AD 사용자의 권한을 관리할 수 있습니다. 예를 들어 특정 IdM 호스트의 IdM POSIX 사용자 그룹에 특정 명령에 대한 sudo 액세스 권한을 부여할 수 있습니다.

참고

AD 사용자 그룹을 IdM 외부 그룹의 멤버로 추가할 수도 있습니다. 이렇게 하면 단일 AD 영역 내에서 사용자와 그룹 관리를 유지하여 Windows 사용자에 대한 정책을 보다 쉽게 정의할 수 있습니다.

중요

IdM의 SUDO 규칙에 AD 사용자의 ID 덮어쓰기를 사용하지 마십시오. AD 사용자의 ID 덮어쓰기는 AD 사용자가 아닌 AD 사용자의 POSIX 속성만 나타냅니다.

그룹 멤버로 ID 덮어쓰기를 추가할 수 있습니다. 그러나 이 기능은 IdM API에서 IdM 리소스를 관리하는 데만 사용할 수 있습니다. 그룹 멤버가 POSIX 환경으로 확장되지 않으므로 ID 덮어쓰기를 POSIX 환경으로 확장할 수 없으므로 sudo 또는 HBAC(Host-based Access Control) 규칙의 멤버십에는 사용할 수 없습니다.

다음 절차에 따라 일반적으로 root 사용자에게 예약되는 idmclient IdM 호스트에서 /usr/sbin/reboot 명령을 실행할 수 있는 권한을 administrator@ad-domain.com AD 사용자에게 부여할 수 있는 ad_users_reboot sudo 규칙을 생성합니다. administrator@ad-domain.comad_users_external 비POSIX 그룹의 멤버이며, 이는 ad_users POSIX 그룹의 멤버입니다.

사전 요구 사항

  • IdM admin Kerberos 티켓(TGT)이 있습니다.
  • IdM 도메인과 ad-domain.com AD 도메인 사이에 교차 신뢰가 있습니다.
  • idmclient 호스트에 로컬 관리자 계정이 없습니다. administrator 사용자는 로컬 /etc/passwd 파일에 나열되지 않습니다.

절차

  1. administrator@ad-domain 멤버가 있는 ad_users _external 그룹이 포함된 ad_users 그룹을 생성합니다.

    1. 선택 사항: IdM 영역의 AD 사용자를 관리하는 데 사용할 AD 도메인에서 해당 그룹을 생성하거나 선택합니다. 여러 AD 그룹을 사용하여 IdM 측면의 다른 그룹에 추가할 수 있습니다.
    2. ad_users_external 그룹을 생성하고 --external 옵션을 추가하여 IdM 도메인 외부에서 멤버가 포함되어 있음을 나타냅니다.

      [root@ipaserver ~]# ipa group-add --desc='AD users external map' ad_users_external --external
      -------------------------------
      Added group "ad_users_external"
      -------------------------------
        Group name: ad_users_external
        Description: AD users external map
      참고

      여기에서 지정하는 외부 그룹이 Active Directory 보안 그룹 문서에 정의된 대로 글로벌 또는 Universal 그룹 범위가 있는 AD 보안 그룹 인지 확인합니다. 예를 들어, 해당 그룹 범위가 도메인 로컬 이므로 도메인 사용자 또는 도메인 관리자 AD 보안 그룹을 사용할 수 없습니다.

    3. ad_users 그룹을 생성합니다.

      [root@ipaserver ~]# ipa group-add --desc='AD users' ad_users
      ----------------------
      Added group "ad_users"
      ----------------------
        Group name: ad_users
        Description: AD users
        GID: 129600004
    4. administrator@ad-domain.com AD 사용자를 ad_users_external 에 외부 멤버로 추가합니다.

      [root@ipaserver ~]# ipa group-add-member ad_users_external --external "administrator@ad-domain.com"
       [member user]:
       [member group]:
        Group name: ad_users_external
        Description: AD users external map
        External member: S-1-5-21-3655990580-1375374850-1633065477-513
      -------------------------
      Number of members added 1
      -------------------------

      AD 사용자는 DOMAIN\user_name 또는 user_name@DOMAIN 과 같은 정규화된 이름으로 식별되어야 합니다. 그러면 AD ID가 사용자의 AD SID에 매핑됩니다. AD 그룹 추가에도 동일하게 적용됩니다.

    5. ad_users_externalad_users 에 멤버로 추가합니다.

      [root@ipaserver ~]# ipa group-add-member ad_users --groups ad_users_external
        Group name: ad_users
        Description: AD users
        GID: 129600004
        Member groups: ad_users_external
      -------------------------
      Number of members added 1
      -------------------------
  2. ad_users 의 멤버에게 idmclient 호스트에서 /usr/sbin/reboot 를 실행할 수 있는 권한을 부여합니다.

    1. sudo 명령의 IdM 데이터베이스에 /usr/sbin/reboot 명령을 추가합니다.

      [root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot
      -------------------------------------
      Added Sudo Command "/usr/sbin/reboot"
      -------------------------------------
        Sudo Command: /usr/sbin/reboot
    2. ad_users_reboot:라는 sudo 규칙을 만듭니다.

      [root@idmclient ~]# ipa sudorule-add ad_users_reboot
      ---------------------------------
      Added Sudo Rule "ad_users_reboot"
      ---------------------------------
        Rule name: ad_users_reboot
        Enabled: True
    3. ad_users_reboot 규칙에 /usr/sbin/reboot 명령을 추가합니다.

      [root@idmclient ~]# ipa sudorule-add-allow-command ad_users_reboot --sudocmds '/usr/sbin/reboot'
        Rule name: ad_users_reboot
        Enabled: True
        Sudo Allow Commands: /usr/sbin/reboot
      -------------------------
      Number of members added 1
      -------------------------
    4. IdM idmclient 호스트에 ad_users_reboot 규칙을 적용합니다.

      [root@idmclient ~]# ipa sudorule-add-host ad_users_reboot --hosts idmclient.idm.example.com
      Rule name: ad_users_reboot
      Enabled: True
      Hosts: idmclient.idm.example.com
      Sudo Allow Commands: /usr/sbin/reboot
      -------------------------
      Number of members added 1
      -------------------------
    5. ad_users _ reboot 규칙에 ad_users 그룹을 추가합니다.

      [root@idmclient ~]# ipa sudorule-add-user ad_users_reboot --groups ad_users
      Rule name: ad_users_reboot
      Enabled: TRUE
      User Groups: ad_users
      Hosts: idmclient.idm.example.com
      Sudo Allow Commands: /usr/sbin/reboot
      -------------------------
      Number of members added 1
      -------------------------
참고

서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.

검증 단계

  1. idmclient 호스트에 administrator@ad-domain.com, ad_users 그룹의 간접 멤버로 로그인합니다.

    $ ssh administrator@ad-domain.com@ipaclient
    Password:
  2. 필요한 경우 administrator@ad-domain.com 을 실행할 수 있는 sudo 명령을 표시합니다.

    [administrator@ad-domain.com@idmclient ~]$ sudo -l
    Matching Defaults entries for administrator@ad-domain.com on idmclient:
        !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
        env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
        env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
        env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
        env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
        env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME",
        secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
    
    User administrator@ad-domain.com may run the following commands on idmclient:
        (root) /usr/sbin/reboot
  3. sudo 를 사용하여 시스템을 재부팅합니다. 메시지가 표시되면 administrator@ad-domain.com 의 암호를 입력합니다.

    [administrator@ad-domain.com@idmclient ~]$ sudo /usr/sbin/reboot
    [sudo] password for administrator@ad-domain.com: