Sun 엔터프라이즈 인증 메커니즘 안내서

Kerberos 데이터베이스 관리

Kerberos 데이터베이스는 Kerberos의 백본이므로 잘 관리해야 합니다. 이 절에서는 데이터베이스 백업 및 복구, 병렬 전파 설정, stash 파일 관리 등의 Kerberos 데이터베이스 관리 절차에 대해 설명합니다. 데이터베이스를 처음 설정하는 단계는 "마스터 KDC 구성 방법"을 참고하십시오.

Kerberos 데이터베이스 백업과 전파

Kerberos 데이터베이스를 마스터 KDC에서 슬레이브 KDC로 전파하는 것은 가장 중요한 구성 작업 중 하나입니다. 전파가 자주 실행되지 않으면 마스터 KDC와 슬레이브 KDC가 동기화되지 않기 때문에 마스터 KDC가 다운될 경우 슬레이브 KDC가 최신 데이터베이스 정보를 갖지 못하게 됩니다. 또한, 작업 로드를 분산하기 위해 슬레이브 KDC를 마스터로 구성했다면 슬레이브를 마스터 KDC로 사용하는 클라이언트는 최신 정보를 얻지 못합니다. 따라서 Kerberos 데이터베이스를 변경하는 빈도에 따라 전파가 자주 발생하는지 확인해야 합니다.

마스터 KDC를 구성할 때 Kerberos 데이터베이스를 /var/krb5/slave_datatrans 덤프 파일로 자동 백업한 다음 슬레이브 KDC로 전파하도록 cron 작업의 kprop_script를 설정하십시오. 일반 파일과 마찬가지로 Kerberos 데이터베이스도 손상될 수 있습니다. 슬레이브 KDC의 Kerberos 데이터베이스가 손상되어도 다음 전파를 통해 자동으로 새로운 복사본이 설치되므로 사용자는 손상 사실을 알 수 없습니다. 그러나, 마스터 KDC의 데이터베이스가 손상되면 다음 전파를 통해 손상된 데이터베이스가 모든 슬레이브로 전파되고, 손상된 백업 파일은 마스터 KDC의 손상되지 않은 백업 파일을 겹쳐 씁니다.

이 시나리오에서 "안전한" 백업은 존재하지 않기 때문에 slave_datatrans 덤프 파일을 주기적으로 다른 위치로 복사하거나 kdb5_utildump 명령을 사용해 별도의 백업 복사본을 작성하도록 cron 작업을 설정해야 합니다. 그러면, 데이터베이스가 손상되어도 kdb5_utilload 명령을 사용해 마스터 KDC에 최신 백업을 복구할 수 있습니다.

또한 데이터베이스 덤프 파일에는 주체 키가 포함되므로 인증되지 않은 사용자가 파일에 액세스하지 못하도록 해야 합니다(기본적으로 데이터베이스 덤프 파일은 root에게만 읽기/쓰기 권한이 있음). 전송되는 데이터를 암호화하는 kprop 명령만을 사용하여 데이터베이스 덤프 파일을 전파하는 것도 중요합니다. kprop은 데이터를 슬레이브 KDC에게만 전파하기 때문에 실수로 데이터베이스 덤프를 인증되지 않은 호스트로 전송할 확률이 적습니다.


주의 - 주의 -

전파 후 Kerberos 데이터베이스가 업데이트되고 다음 전파가 실행되기 전에 데이터베이스가 손상되었다면 업데이트된 데이터는 슬레이브에 포함되지 않고 손실됩니다. 이런 경우를 대비해서, 정기적으로 계획된 전파 실행 전에 중요한 업데이트가 데이터베이스에 추가되었다면 데이터 손실을 막기 위해 데이터베이스를 수동으로 전파해야 합니다.


kpropd.acl 파일

kpropd.acl 파일에는 호스트 주체 이름이 한 줄에 하나씩 나열되어 있으며, 호스트 주체 이름은 KDC가 전파 메커니즘을 통해 업데이트된 데이터베이스를 수신할 수 있는 시스템을 나타냅니다. 마스터 KDC를 모든 슬레이브 KDC로 전파하는데 사용한다면 각 슬레이브의 kpropd.acl 파일에는 마스터의 호스트 주체 이름만 포함되어야 합니다.

그러나, 이 설명서의 SEAM 설치 및 이후 구성 단계에서는 동일한 kpropd.acl 파일을 마스터와 슬레이브 KDC에 모두 추가하도록 지시합니다. kpropd.acl 파일에는 모든 KDC 호스트 주체 이름이 포함되며, KDC 전파를 일시적으로 사용할 수 없을 경우 이 구성을 사용해서 모든 KDC로부터 전파할 수 있습니다. 따라서 모든 KDC에 동일한 복사본을 유지하는 것이 관리하기 좋습니다.

kprop_script 명령

kprop_script 명령은 kprop 명령을 사용하여 Kerberos 데이터베이스를 다른 KDC로 전파합니다. (kprop_script가 슬레이브 KDC에서 실행되면 슬레이브의 Kerberos 데이터베이스 복사본을 다른 KDC로 전파합니다.) kprop_script는 공백으로 구분된 호스트 이름을 인수로 받으며, 이것은 전파할 KDC를 나타냅니다.

kprop_script를 실행하면 Kerberos 데이터베이스의 백업을 /var/krb5/slave_datatrans 파일에 작성한 다음 지정된 KDC로 파일을 복사합니다. 전파가 끝날 때까지 Kerberos 데이터베이스는 잠겨 있습니다.

Kerberos 데이터베이스 백업 방법

  1. 마스터 KDC의 수퍼유저가 됩니다.

  2. kdb5_utildump 명령을 사용해 Kerberos 데이터베이스를 백업합니다.


    # /usr/krb5/sbin/kdb5_util dump [-verbose] [-d dbname] [filename [principals...]]

    -verbose

    백업 중인 모든 주체 및 정책 이름을 인쇄합니다. 

    dbname

    백업할 데이터베이스 이름입니다. 지정한 데이터베이스 이름에 ".db"가 추가되며 파일의 절대 경로를 지정할 수 있습니다. -d 옵션을 지정하지 않으면 기본 데이터베이스 이름은 /var/krb5/principal이며, 이것은 실제로 /var/krb5/principal.db가 됩니다.

    filename

    데이터베이스를 백업할 파일로서, 파일의 절대 경로를 지정할 수 있습니다. 파일을 지정하지 않으면 데이터베이스는 표준 출력으로 덤프됩니다. 

    principal

    백업할 주체의 목록으로 공백에 의해 구분됩니다. 주체 이름에는 전체 경로를 사용해야 합니다. 주체를 지정하지 않으면 전체 데이터베이스가 백업됩니다. 

예-Kerberos 데이터베이스 백업

다음 예는 Kerberos 데이터베이스를 dumpfile이라는 파일로 백업합니다. -verbose 옵션이 지정되었기 때문에 백업 중인 주체가 화면에 표시됩니다.


# kbd5_util dump -verbose dumpfile
kadmin/kdc1.eng.acme.com@ENG.ACME.COM
krbtgt/eng.acme.com@ENG.ACME.COM
kadmin/history@ENG.ACME.COM
pak/admin@ENG.ACME.COM
pak@ENG.ACME.COM
changepw/kdc1.eng.acme.com@ENG.ACME.COM
#

다음 예는 Kerberos 데이터베이스로부터 pakpak/admin 주체를 백업합니다.


# kdb5_util dump -verbose dumpfile pak/admin@ENG.ACME.COM pak@ENG.ACME.COM
pak/admin@ENG.ACME.COM
pak@ENG.ACME.COM
#

Kerberos 데이터베이스 복구 방법

  1. 마스터 KDC의 수퍼유저가 됩니다.

  2. kdb_utilload 명령을 사용해서 Kerberos 데이터베이스를 복구합니다.


    # /usr/krb5/sbin/kdb5_util load [-verbose] [-d dbname] [-update] [filename] 

    -verbose

    복구 중인 모든 주체 및 정책 이름을 인쇄합니다. 

    dbname

    복구할 데이터베이스 이름입니다. 지정한 데이터베이스 이름에 ".db"가 추가되며 파일의 절대 경로를 지정할 수 있습니다. -d 옵션을 지정하지 않으면 기본 데이터베이스 이름은 /var/krb5/principal이며, 이것은 실제로 /var/krb5/principal.db가 됩니다.

    -update

    기존 데이터베이스를 업데이트합니다. 그렇지 않을 경우 새로운 데이터베이스를 작성하거나 기존 데이터베이스를 겹쳐 씁니다. 

    filename

    이 파일로부터 데이터베이스를 복구합니다. 파일의 절대 경로를 지정할 수 있습니다.  

예-Kerberos 데이터베이스 복구

다음 예는 dumpfile 파일로부터 현재 디렉토리로 database1.db 데이터베이스를 복구합니다. -update 옵션이 지정되지 않았기 때문에 복구를 통해 새로운 데이터베이스가 작성되었습니다.


# kdb5_util load -d database1 dumpfile

Kerberos 데이터베이스를 슬레이브 KDC로 수동 전파하는 방법

다음 절차는 kprop 명령을 사용해서 Kerberos 데이터베이스를 전파하는 방법을 보여주며, 이 명령을 사용하면 정기적 cron 작업 이외에 슬레이브 KDC를 마스터 KDC와 동기화할 수 있습니다. kprop_script와는 달리, kprop 명령을 사용하면 새로운 데이터베이스 백업을 먼저 만들지 않고 현재 데이터베이스 백업만 전파할 수 있습니다.

  1. 마스터 KDC의 수퍼유저가 됩니다.

  2. kdb5_util 명령을 사용해 데이터베이스를 백업합니다(선택 사항).


    # /usr/krb5/sbin/kdb5_util dump /var/krb5/slave_datatrans
    
  3. kprop 명령을 사용해 데이터베이스를 슬레이브 KDC로 전파합니다.


    # /usr/krb5/lib/kprop -f /var/krb5/slave_datatrans slave_KDC
    

데이터베이스를 백업한 다음 정기적 cron 작업 외에 슬레이브 KDC로 전파하려면 다음과 같이 kprop_script 명령을 사용합니다.


# /usr/krb5/lib/kprop_script slave_KDC

병렬 전파 설정

대부분의 경우 마스터 KDC를 배타적으로 사용해서 데이터베이스를 슬레이브 KDC로 전파할 수 있지만, 슬레이브 KDC가 많은 경우 병렬 전파로 알려진 로드 분산 방법을 사용할 수 있습니다.

병렬 전파를 사용하면 특정 슬레이브 KDC가 전파 의무를 마스터 KDC와 공유하도록 지정할 수 있습니다. 따라서, 전파 속도가 빨라지고 마스터 KDC의 작업이 줄어듭니다.

예를 들어, 하나의 마스터와 6개의 슬레이브로 사이트가 구성되었고(그림 3-2 참고), slave-1부터 slave-3까지가 하나의 논리적 그룹으로, slave-4부터 slave-6까지가 또 하나의 논리적 그룹으로 설정되었다고 가정합니다. 병렬 전파를 설정하려면 마스터 KDC가 데이터베이스를 slave-1slave-4로 전파하고 이 슬레이브가 다시 데이터베이스를 각각의 그룹으로 전파하도록 설정할 수 있습니다.

그림 3-2 병렬 전파 구성의 예

Graphic

병렬 전파 설정 방법

다음은 병렬 전파를 사용하기 위한 세부 단계별 절차는 아니며, 상위 수준의 구성 단계에 대해 설명합니다.

  1. 마스터 KDC에서 cron 작업의 kprop_script 항목에 다음 전파를 수행할 슬레이브(전파 슬레이브)의 인수만 포함되도록 변경합니다.

  2. 각 전파 슬레이브에서 전파할 슬레이브의 인수를 포함해야 하는 cron 작업에 kprop_script 항목을 추가합니다. 병렬 전파를 성공적으로 수행하려면 전파 슬레이브가 새로운 데이터베이스로부터 전파된 다음에 병렬 전파가 실행되도록 cron 작업을 설정해야 합니다.


    주 -

    전파 슬레이브를 전파하는데 걸리는 시간은 네트워크 대역폭 및 데이터베이스 크기 등에 따라 다릅니다.


  3. 각 슬레이브 KDC에서 전파될 적절한 권한을 설정합니다. 전파할 KDC의 호스트 주체 이름을 kpropd.acl 파일에 추가하면 됩니다.

예 - 병렬 전파 설정

그림 3-2의 예를 사용하면 마스터 KDC의 kprop_script 항목은 다음과 같습니다.

10 3 * * * /usr/krb5/lib/kprop_script slave-1.acme.com slave-4.acme.com

slave-1kprop_script 항목은 다음과 같습니다. (슬레이브의 전파는 마스터로부터 전파된 한 시간 후부터 시작됨에 주의하십시오.)

10 4 * * * /usr/krb5/lib/kprop_script slave-2.acme.com slave-3.acme.com

전파 슬레이브의 kpropd.acl 파일에는 다음 항목이 포함되어야 합니다.

host/master.acme.com@ACME.COM

slave-1이 전파 중인 슬레이브의 kpropd.acl 파일에는 다음 항목이 포함되어야 합니다.

host/slave-1.acme.com@ACME.COM

Stash 파일 관리

stash 파일에는 Kerberos 데이터베이스를 작성할 때 자동으로 작성되는 마스터 키가 포함됩니다. stash 파일이 손상되면 kdb5_util(1M)stash 명령을 사용해서 손상된 파일을 교체할 수 있습니다. stash 파일을 삭제해야 할 경우는 kdb5_utildestroy 명령을 사용해 Kerberos 데이터베이스를 삭제했을 경우입니다. stash 파일은 데이터베이스와 함께 삭제할 수 없으므로 직접 삭제해야 합니다.

Stash 파일 삭제 방법

  1. stash 파일이 있는 KDC의 수퍼유저가 됩니다.

  2. stash 파일을 삭제합니다.


    # rm stash_file
    

    stash_file

    stash 파일의 경로입니다. stash 파일은 기본적으로 /var/krb5/.k5.realm에 있습니다.

stash 파일을 다시 작성하려면 -f 옵션과 함께 kdb5_util 명령을 사용합니다.