55.3. RBCD를 사용하여 서비스에 대한 액세스 위임

RBCD를 사용하여 서비스에 대한 액세스를 위임하려면 서비스가 실행 중인 호스트에 규칙을 추가해야 합니다. 이 예제 절차에서는 Kerberos 서비스 HTTP/client.example.test 를 사용하여 웹 애플리케이션의 파일 서버 nfs/client.example.test 에 사용자 자격 증명을 위임하는 방법을 설명합니다. 호스트가 항상 자체적으로 실행되는 서비스를 관리하므로 client.example.test 호스트에서 이 작업을 수행할 수 있습니다.

사전 요구 사항

  • client.example.test 호스트의 /etc/krb5.keytab 파일에 액세스할 수 있습니다.
  • nfs/client.example.test 서비스 키탭이 있습니다.
  • HTTP/client.example.test 의 키탭 /path/to/web-service.keytab 이 있습니다.

절차

  1. client.example.test 호스트에서 Kerberos 티켓을 받습니다.

    # kinit -k
  2. RBCD ACL을 정의합니다.

    # ipa service-add-delegation nfs/client.example.test HTTP/client.example.test
    
    -------------------------------------------------------
    Added new resource delegation to the service principal "nfs/client.example.test@EXAMPLE.TEST"
    -------------------------------------------------------
      Principal name: nfs/client.example.test@EXAMPLE.TEST
      Delegation principal: HTTP/client.example.test@EXAMPLE.TEST

검증

위임이 올바르게 설정되었는지 확인하려면 HTTP 서비스를 통해 testuser 사용자 로그인을 시뮬레이션하고 NFS 서비스로 프로토콜 전환을 수행할 수 있습니다.

  1. NFS 서비스를 보고 위임 규칙이 있는지 확인합니다.

    # ipa service-show nfs/client.example.test
    
      Principal name: nfs/client.example.test@EXAMPLE.TEST
      Principal alias: nfs/client.example.test@EXAMPLE.TEST
      Delegation principal: HTTP/client.example.test@EXAMPLE.TEST
      Keytab: True
      Managed by: client.example.test
  2. HTTP 서비스 주체의 Kerberos 티켓을 받습니다.

    # kinit -kt http.keytab HTTP/client.example.test
  3. 티켓 부여 티켓이 있는지 확인합니다.

    # klist -f
    Ticket cache: KCM:0:99799
    Default principal: HTTP/client.example.test@EXAMPLE.TEST
    
    Valid starting       Expires              Service principal
    10/13/2023 14:39:23  10/14/2023 14:05:07  krbtgt/EXAMPLE.TEST@EXAMPLE.TEST
    	Flags: FIA
  4. testuser 를 대신하여 프로토콜 전환을 수행합니다.

    # kvno -U testuser -P nfs/client.example.test
    nfs/client.example.test@EXAMPLE.TEST: kvno = 1
  5. testuser 를 대신하여 프로토콜 전환 중에 얻은 티켓이 있는지 확인합니다.

    # klist -f
    Ticket cache: KCM:0:99799
    Default principal: HTTP/client.example.test@EXAMPLE.TEST
    
    Valid starting       Expires              Service principal
    10/13/2023 14:39:38  10/14/2023 14:05:07  HTTP/client.example.test@EXAMPLE.TEST
    	for client testuser@EXAMPLE.TEST, Flags: FAT
    10/13/2023 14:39:23  10/14/2023 14:05:07  krbtgt/EXAMPLE.TEST@EXAMPLE.TEST
    	Flags: FIA
    10/13/2023 14:39:38  10/14/2023 14:05:07  nfs/client.example.test@EXAMPLE.TEST
    	for client testuser@EXAMPLE.TEST, Flags: FAT