Sun Java System Directory Server Enterprise Edition 6.3 관리 설명서

속성 값 암호화

속성 암호화는 디렉토리에 저장된 중요한 데이터를 보호합니다. 속성 암호화를 사용하여 항목의 특정 속성을 암호화 형식으로 저장하도록 지정하면 데이터베이스 파일, 백업 파일 및 내보낸 LDIF 파일에 저장된 데이터를 읽을 수 없습니다.

이 기능을 사용할 경우 속성 값은 디렉토리 서버 데이터베이스에 저장되기 전에 암호화되고 원래 값으로 암호가 해독된 후 클라이언트로 반환됩니다. 액세스 제어를 사용하여 클라이언트가 권한 없이 이러한 속성에 액세스하지 못하도록 제한하고 SSL을 사용하여 클라이언트와 디렉토리 서버 간에 전송되는 속성 값을 암호화해야 합니다. 일반적인 데이터 보안의 구조적 개요와 특별한 속성 암호화에 대해서는 Sun Java System Directory Server Enterprise Edition 6.3 Reference를 참조하십시오.

서버에 SSL이 구성 및 활성화되어 있는 경우에만 속성 암호화를 사용할 수 있으며기본적으로 속성은 암호화되지 않습니다. 속성 암호화는 접미어 수준에서 구성되므로 속성은 해당 속성이 포함된 각 접미어 항목에서 암호화됩니다. 전체 디렉토리에서 특정 속성을 암호화하려면 모든 접미어에서 해당 속성을 암호화해야 합니다.


주의 – 주의 –

속성 암호화는 접미어와 관련된 모든 데이터 및 색인 파일에 영향을 줍니다. 기존 접미어의 암호화 구성을 수정하는 경우 반드시 구성 내용을 먼저 내보내서 원하는 대로 수정한 후에 다시 가져와야 합니다. DSCC를 사용하면 이러한 단계를 쉽게 수행할 수 있습니다. DSCC 사용에 대한 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스를 참조하십시오.

보안상 속성에 대한 암호화를 설정할 경우 암호화되지 않은 값이 들어 있을 수 있는 데이터베이스 캐시 파일과 데이터베이스 로그 파일을 수동으로 삭제해야 합니다. 이러한 파일을 삭제하는 절차는 속성 암호화를 구성하는 방법을 참조하십시오.

새로운 접미어에 데이터를 로드하거나 작성하기 전에 암호화된 모든 속성을 사용 가능하게 해야 합니다.


일부 항목에서 이름 지정 속성으로 사용하는 속성을 암호화하도록 선택한 경우 DN에 표시되는 값은 암호화되지 않고 항목에 저장된 값은 암호화됩니다.

userPassword 속성은 암호화하도록 선택하더라도 비밀번호를 일반 텍스트로 저장해야 하기 때문에 보안상의 이점이 없습니다. DIGEST-MD5 SASL 인증의 경우도 마찬가지입니다. 비밀번호 정책에 정의된 암호화 메커니즘이 이미 비밀번호에 적용되어 있으면 추가 암호화를 적용해도 보안은 강화되지 않고 모든 바인드 작업의 성능만 저하됩니다.

저장 시 암호화 속성 앞에 사용된 암호화 알고리즘을 나타내는 암호화 태그가 표시됩니다. DES 암호화 알고리즘으로 암호화된 속성은 다음과 같이 나타납니다.


{CKM_DES_CBC}3hakc&jla+=snda%

온라인 상태에서 데이터를 가져와서 암호화할 때 키 데이터베이스 인증 비밀번호를 서버에 이미 제공했으므로 메시지는 다시 표시되지 않습니다. 데이터를 오프라인으로 가져오는 경우에는 디렉토리 서버에 비밀번호를 묻는 메시지가 표시됩니다. 가져올 데이터를 암호화하려면 비밀번호를 입력해야 합니다. 데이터 암호를 해독하면(보안상 중요한 작업) 내보내기 작업이 온라인 상태로 수행되는지, 아니면 오프라인 상태로 수행되는지에 관계없이 디렉토리 서버에서 키 데이터베이스 비밀번호를 묻는 메시지가 자동으로 표시됩니다. 따라서 추가 보안 계층이 제공됩니다.


주 –

인증서나 개인 키가 변경되지 않는 한 서버는 동일한 키를 계속 생성합니다. 따라서 동일한 인증서를 사용하는 두 서버 인스턴스 간에 데이터를 전송(내보낸 다음 가져오기)할 수 있습니다.


속성 암호화 및 성능

속성을 암호화하면 데이터 보안이 향상되지만 시스템 성능에 영향을 줄 수 있습니다. 따라서 암호화가 필요한 속성을 주의해서 결정하여 특히 중요하다고 생각되는 속성만 암호화하십시오.

색인 파일을 통해 중요한 데이터를 액세스할 수 있으므로 속성을 완전히 보호하려면 암호화된 속성에 해당하는 색인 키를 암호화해야 합니다. 색인 키 암호화를 수행하지 않은 상태에서 색인화만으로 디렉토리 서버 성능이 이미 저하된 경우 데이터를 데이터베이스로 가져오거나 추가하기 전에 먼저 속성 암호화를 구성합니다. 이 절차를 수행하면 암호화된 속성이 처음부터 색인화됩니다.

속성 암호화 사용 고려 사항

속성 암호화 기능을 구현할 때에는 다음을 고려하십시오.

Procedure속성 암호화를 구성하는 방법

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. 속성 암호화를 구성할 접미어에 항목이 있으면 먼저 이 접미어의 내용을 LDIF 파일로 내보내야 합니다.

    접미어에 암호화된 속성이 있는 경우 내보낸 LDIF 파일을 사용하여 접미어를 다시 초기화하려면 내보낸 LDIF에서 속성을 암호화된 상태로 유지할 수 있습니다.

  2. 속성에 대한 암호화를 사용 가능하게 하려면 다음 명령을 사용합니다.


    $ dsconf create-encrypted-attr -h host -p port suffix-DN attr-name cipher-name
    

    여기서 cipher-name은 다음 중 하나입니다.

    • des - DES 블록 암호

    • des3 - Triple-DES 블록 암호

    • rc2 - RC2 블록 암호

    • rc4 - RC4 스트림 암호

    예를 들면 다음과 같습니다.


    $ dsconf create-encrypted-attr -h host1 -p 1389 dc=example,dc=com uid rc4
  3. 암호화된 속성을 원본 상태로 되돌리려면 다음 명령을 사용합니다.


    $ dsconf delete-encrypted-attr -h host -p port suffix-DN attr-name
    
  4. 하나 이상의 속성을 암호화하도록 구성이 변경되었고 가져오기 작업을 수행하기 전에 해당 속성에 값이 있는 경우 데이터베이스 캐시를 지우고 로그를 제거합니다.

    암호화되지 않은 값은 데이터베이스 캐시 및 데이터베이스 로그에 표시되지 않습니다.


    주 –

    이러한 파일을 삭제하면 일부 추적 정보가 손실됩니다. 또한 이러한 파일을 삭제한 후에 서버가 복구 모드로 전환되므로 다시 시작하는 데 많은 시간이 소요될 수 있습니다.


    데이터베이스 캐시를 지우고 로그를 제거하려면 다음을 수행합니다.

    1. 디렉토리 서버 인스턴스 시작, 중지 및 다시 시작 에 설명된 것처럼 디렉토리 서버를 중지합니다.

    2. 루트 또는 관리자 권한이 있는 사용자로 파일 시스템에서 데이터베이스 캐시 파일을 삭제합니다.


      # rm instance-path/db/__db.*
    3. 파일 시스템에서 데이터베이스 로그 파일을 삭제합니다.


      # rm instance-path/db/log.0000000001
    4. 디렉토리 서버를 다시 시작합니다.

      서버에서 자동으로 새 데이터베이스 캐시 파일을 작성합니다. 캐시가 다시 채워질 때까지 해당 접미어의 작업 성능이 다소 느려질 수도 있습니다.

  5. 접미어 초기화에 설명된 것처럼 LDIF 파일이 있는 접미어를 초기화합니다.

    파일을 로드하고 해당 색인이 작성되는 동안 지정된 속성 값이 모두 암호화됩니다.