탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 11.1 관리: ZFS 파일 시스템 Oracle Solaris 11.1 Information Library (한국어) |
1. Oracle Solaris ZFS 파일 시스템(소개)
3. Oracle Solaris ZFS 저장소 풀 관리
5. Oracle Solaris ZFS 파일 시스템 관리
파일 시스템을 ZFS 파일 시스템으로 마이그레이션하는 방법
6. Oracle Solaris ZFS 스냅샷 및 복제 작업
7. ACL 및 속성을 사용하여 Oracle Solaris ZFS 파일 보호
암호화는 개인 정보 보호를 위해 데이터가 인코딩되는 프로세스이며 데이터 소유자가 인코딩된 데이터에 액세스하려면 키가 필요합니다. ZFS 암호화 사용의 이점은 다음과 같습니다.
ZFS 암호화는 ZFS 명령 세트와 통합됩니다. 다른 ZFS 작업과 마찬가지로 키 변경 및 rekey와 같은 암호화 작업은 온라인으로 수행됩니다.
기존 저장소 풀은 업그레이드하여 사용할 수 있습니다. 특정 파일 시스템을 암호화할 수도 있습니다.
ZFS 암호화는 종속 파일 시스템에 상속될 수 있으며, ZFS 위임 관리를 통해 키 관리를 위임할 수 있습니다.
CCM 및 GCM 작업 모드에서 키 길이 128, 192 및 256으로 AES(Advanced Encryption Standard)를 사용하여 데이터가 암호화됩니다.
ZFS 암호화는 암호화 알고리즘의 사용 가능한 하드웨어 가속 또는 최적화된 소프트웨어 구현에 자동으로 액세스할 수 있게 하는 Oracle Solaris Cryptographic Framework를 사용합니다.
현재까지는 개별 파일 시스템이더라도 /var 디렉토리와 같은 다른 OS 구성 요소 또는 ZFS 루트 파일 시스템을 암호화할 수 없습니다.
ZFS 파일 시스템을 만들 때 암호화 정책을 설정할 수 있지만 정책을 변경할 수는 없습니다. 예를 들어, tank/home/darren 파일 시스템은 암호화 등록 정보를 사용으로 설정하여 생성됩니다. 기본 암호화 정책은 길이가 최소 8자 이상이어야 하는 문장암호를 프롬프트하는 것입니다.
# zfs create -o encryption=on tank/home/darren Enter passphrase for 'tank/home/darren': xxxxxxx Enter again: xxxxxxxx
파일 시스템에 암호화가 사용으로 설정되었는지 확인합니다. 예를 들면 다음과 같습니다.
# zfs get encryption tank/home/darren NAME PROPERTY VALUE SOURCE tank/home/darren encryption on local
파일 시스템의 암호화 값이 on일 경우 기본 암호화 알고리즘은 aes-128-ccm입니다.
래핑 키는 실제 데이터 암호 키를 암호화하는 데 사용됩니다. 래핑 키는 위 예와 같이 암호화된 파일 시스템을 만들 때 zfs 명령에서 커널로 전달됩니다. 래핑 키는 파일에 raw 또는 hex 형식으로 포함되어 있거나 문장암호에서 파생됩니다.
래핑 키의 형식과 위치는 다음과 같이 keysource 등록 정보에 지정됩니다.
keysource=format,location
형식은 다음 중 하나입니다.
raw – 원시 키 바이트입니다.
hex – 16진수 키 문자열입니다.
passphrase – 키를 생성하는 문자열입니다.
위치는 다음 중 하나입니다.
prompt – 파일 시스템을 만들거나 마운트할 때 키 또는 문장암호를 묻는 메시지가 표시됩니다.
file:///filename – 파일 시스템의 키 또는 문장암호 파일 위치입니다.
pkcs11 – PKCS#11 토큰에서 키 또는 문장암호의 위치를 설명하는 URI입니다.
https://location – 보안 서버의 키 또는 문장암호 파일 위치입니다. 이 방법을 사용하여 키 정보를 일반 텍스트 상태로 전송하는 것은 권장되지 않습니다. URL에서 GET은 keysource 등록 정보의 형식으로 요청된 사항에 따라 키 값 또는 문장암호를 반환합니다.
keysource에 대해 https:// 로케이터를 사용할 때 서버가 제공하는 인증서는 libcurl 및 OpenSSL로 신뢰되는 인증서여야 합니다. 고유한 신뢰 앵커 또는 자체 서명된 인증서를 /etc/openssl/certs의 인증서 저장소에 추가합니다. PEM 형식 인증서를 /etc/certs/CA 디렉토리에 두고 다음 명령을 실행합니다.
# svcadm refresh ca-certificates
keysource 형식이 passphrase인 경우 래핑 키가 문장암호에서 파생됩니다. 그렇지 않으면 keysource 등록 정보 값이 원시 바이트나 16진수 형식으로 실제 래핑 키를 가리킵니다. 문장암호를 파일에 저장하거나 확인 메시지가 표시되는 원시 바이트 스트림에 저장하도록 지정할 수 있습니다. 후자의 경우 대체로 스크립팅에만 적합합니다.
파일 시스템의 keysource 등록 정보 값이 passphrase를 식별하는 경우 래핑 키는 PKCS#5 PBKD2 및 파일 시스템별 모든 생성된 salt를 사용하여 문장암호에서 파생됩니다. 즉, 종속 파일 시스템에서 사용할 경우 동일한 문장암호가 다른 래핑 키를 생성합니다.
파일 시스템의 암호화 정책은 종속 파일 시스템에 상속되며 제거할 수 없습니다. 예를 들면 다음과 같습니다.
# zfs snapshot tank/home/darren@now # zfs clone tank/home/darren@now tank/home/darren-new Enter passphrase for 'tank/home/darren-new': xxxxxxx Enter again: xxxxxxxx # zfs set encryption=off tank/home/darren-new cannot set property for 'tank/home/darren-new': 'encryption' is readonly
암호화 또는 암호화 해제된 ZFS 파일 시스템을 복사하거나 마이그레이션해야 하는 경우 다음 사항을 고려해 보십시오.
현재 수신 풀의 데이터 세트에 암호화가 사용으로 설정된 경우에도 암호화 해제된 데이터 세트 스트림을 보내고 암호화된 스트림으로 받을 수 없습니다.
다음 명령을 사용하여 암호화 해제된 데이터를 암호화가 사용으로 설정된 풀/파일 시스템에 마이그레이션할 수 있습니다.
cp -r
find | cpio
tar
rsync
복제된 암호화된 파일 시스템 스트림을 암호화된 파일 시스템으로 수신할 수 있으며 데이터가 암호화된 상태로 유지됩니다. 자세한 내용은 예 5-4를 참조하십시오.
zfs key -c 명령을 사용하여 암호화된 파일 시스템의 래핑 키를 변경할 수 있습니다. 부트 시 또는 파일 시스템 키를 명시적으로 로드(zfs key -l)하거나 파일 시스템을 마운트(zfs mount filesystem)하여 기존 래핑 키가 먼저 로드되어 있어야 합니다. 예:
# zfs key -c tank/home/darren Enter new passphrase for 'tank/home/darren': xxxxxxxx Enter again: xxxxxxxx
다음 예에서는 래핑 키를 변경하고 keysource 등록 정보 값을 변경하여 래핑 키가 파일에서 제공되도록 지정합니다.
# zfs key -c -o keysource=raw,file:///media/stick/key tank/home/darren
암호화된 파일 시스템의 데이터 암호 키는 zfs key -K 명령을 사용하여 변경할 수 있지만 새 암호 키는 새로 작성된 데이터에만 사용됩니다. 이 기능을 사용하여 데이터 암호 키의 시간 제한에 대한 NIST 800-57 지침을 준수할 수 있습니다. 예를 들면 다음과 같습니다.
# zfs key -K tank/home/darren
위 예에서는 데이터 암호 키가 표시되지 않으며 직접 관리되지도 않습니다. 또한 키 변경 작업을 수행하려면 keychange 위임이 필요합니다.
다음 암호화 알고리즘을 사용할 수 있습니다.
aes-128-ccm, aes-192-ccm, aes-256-ccm
aes-128-gcm, aes-192-gcm, aes-256-gcm
ZFS keysource 등록 정보는 파일 시스템의 데이터 암호 키를 래핑하는 키의 형식과 위치를 식별합니다. 예를 들면 다음과 같습니다.
# zfs get keysource tank/home/darren NAME PROPERTY VALUE SOURCE tank/home/darren keysource passphrase,prompt local
ZFS rekeydate 등록 정보는 마지막 zfs key -K 작업의 날짜를 식별합니다. 예를 들면 다음과 같습니다.
# zfs get rekeydate tank/home/darren NAME PROPERTY VALUE SOURCE tank/home/darren rekeydate Wed Jul 25 16:54 2012 local
암호화된 파일 시스템의 creation 및 rekeydate 등록 정보 값이 같은 경우 파일 시스템이 zfs key -K 작업에 의해 rekey된 적이 없습니다.
ZFS 암호화 키는 중앙 위치가 필요할 경우 로컬 시스템 또는 원격으로 필요에 따라 다른 방식으로 관리할 수 있습니다.
로컬 – 위 예에서는 래핑 키가 로컬 시스템의 파일에 저장된 문장암호 프롬프트 또는 원시 키일 수 있음을 보여줍니다.
원격 – Oracle Key Manager와 같은 중앙화된 키 관리 시스템을 사용하거나 http 또는 https URI에서 단순 GET 요청을 지원하는 웹 서비스를 사용하여 키 정보를 원격으로 저장할 수 있습니다. Oracle Key Manager 키 정보는 PKCS#11 토큰을 사용하여 Oracle Solaris 시스템에 액세스할 수 있습니다.
ZFS 암호화 키 관리에 대한 자세한 내용은 다음 항목을 참조하십시오.
http://www.oracle.com/technetwork/articles/servers-storage-admin/manage-zfs-encryption-1715034.html
Oracle Key Manager를 사용하여 키 정보를 관리하는 방법은 다음 항목을 참조하십시오.
http://docs.oracle.com/cd/E24472_02/
키 작업 위임에 대한 다음 권한 설명을 검토합니다.
zfs key -l 및 zfs key -u 명령을 사용하여 파일 시스템 키를 로드하거나 언로드하려면 key 권한이 필요합니다. 대부분의 경우 mount 권한도 필요합니다.
zfs key -c 및 zfs key -K 명령을 사용하여 파일 시스템 키를 변경하려면 keychange 권한이 필요합니다.
키 사용(로드 또는 언로드) 및 키 변경에 대해 별도의 권한을 위임하는 것이 좋습니다. 이렇게 하면 두 사용자 키 작업 모델을 사용할 수 있습니다. 예를 들어, 키를 사용할 수 있는 사용자와 키를 변경할 수 있는 사용자를 결정합니다. 또는 키를 변경하려면 두 사용자가 모두 있어야 합니다. 이 모델에서는 키 위탁 시스템도 구축할 수 있습니다.
암호화된 ZFS 파일 시스템을 마운트하려는 경우 다음 고려 사항을 검토합니다.
부트 시 암호화된 파일 시스템 키를 사용할 수 없는 경우 파일 시스템이 자동으로 마운트되지 않습니다. 예를 들어, 암호화 정책이 passphrase,prompt로 설정된 파일 시스템은 문장암호를 묻는 메시지를 표시하기 위해 부트 프로세스가 중단되지 않으므로 부트 시 마운트되지 않습니다.
부트 시 암호화 정책이 passphrase,prompt로 설정된 파일 시스템을 마운트하려는 경우 zfs mount 명령을 사용하여 명시적으로 마운트하고 문장암호를 지정하거나 zfs key -l 명령을 사용하여 시스템 부트 후 키를 묻는 메시지를 표시해야 합니다.
예를 들면 다음과 같습니다.
# zfs mount -a Enter passphrase for 'tank/home/darren': xxxxxxxx Enter passphrase for 'tank/home/ws': xxxxxxxx Enter passphrase for 'tank/home/mark': xxxxxxxx
암호화된 파일 시스템의 keysource 등록 정보가 다른 파일 시스템의 파일을 가리키는 경우 특히 파일이 이동식 매체에 있으면 파일 시스템의 마운트 순서가 부트 시 암호화된 파일 시스템의 마운트 여부에 영향을 줄 수 있습니다.
Solaris 11 시스템을 Solaris 11.1로 업그레이드하려면 먼저 암호화된 파일 시스템이 마운트되어 있는지 확인하십시오. 암호화된 파일 시스템을 마운트하고 메시지가 표시되면 문장암호를 제공하십시오.
# zfs mount -a Enter passphrase for 'pond/amy': xxxxxxxx Enter passphrase for 'pond/rory': xxxxxxxx # zfs mount | grep pond pond /pond pond/amy /pond/amy pond/rory /pond/rory
그런 다음 암호화된 파일 시스템을 업그레이드하십시오.
# zfs upgrade -a
마운트 해제된 암호화된 ZFS 파일 시스템을 업그레이드하려고 시도하면 다음과 유사한 메시지가 표시됩니다.
# zfs upgrade -a cannot set property for 'pond/amy': key not present
또한 zpool status 출력이 손상된 데이터를 표시할 수 있습니다.
# zpool status -v pond . . . pond/amy:<0x1> pond/rory:<0x1>
위 오류가 발생하는 경우 위에서 설명한 대로 암호화된 파일 시스템을 다시 마운트하십시오. 그런 다음 풀 오류를 스크럽하고 지우십시오.
# zpool scrub pond # zpool clear pond
파일 시스템 업그레이드에 대한 자세한 내용은 ZFS 파일 시스템 업그레이드를 참조하십시오.
ZFS 압축, 중복 제거 및 암호화 등록 정보를 사용하는 경우 다음 고려 사항을 검토합니다.
파일을 작성할 때 데이터가 압축 및 암호화되고 체크섬이 확인됩니다. 가능한 경우 데이터의 중복이 제거됩니다.
파일을 읽을 때 체크섬이 확인되고 데이터의 암호가 해독됩니다. 필요한 경우 데이터의 압축이 해제됩니다.
복제된 암호화된 파일 시스템에서 dedup 등록 정보를 사용으로 설정하고 zfs key -K 또는 zfs clone -K 명령을 복제본에 사용하지 않으면 가능한 경우 모든 복제본의 데이터에서 중복이 제거됩니다.
예 5-1 원시 키를 사용하여 ZFS 파일 시스템 암호화
다음 예에서 aes-256-ccm 암호화 키는 pktool 명령을 사용해서 생성되며 /cindykey.file 파일에 기록됩니다.
# pktool genkey keystore=file outkey=/cindykey.file keytype=aes keylen=256
그런 다음 tank/home/cindy 파일 시스템을 만들 때 /cindykey.file을 지정합니다.
# zfs create -o encryption=aes-256-ccm -o keysource=raw,file:///cindykey.file tank/home/cindy
예 5-2 다른 암호화 알고리즘을 사용하여 ZFS 파일 시스템 암호화
ZFS 저장소 풀을 만들고 저장소 풀의 모든 파일 시스템이 암호화 알고리즘을 상속하도록 할 수 있습니다. 이 예에서는 users 풀을 만들며 users/home 파일 시스템을 만들고 문장암호를 사용하여 암호화합니다. 기본 암호화 알고리즘은 aes-128-ccm입니다.
그런 다음 aes-256-ccm 암호화 알고리즘을 사용하여 users/home/mark 파일 시스템을 만들고 암호화합니다.
# zpool create -O encryption=on users mirror c0t1d0 c1t1d0 mirror c2t1d0 c3t1d0 Enter passphrase for 'users': xxxxxxxx Enter again: xxxxxxxx # zfs create users/home # zfs get encryption users/home NAME PROPERTY VALUE SOURCE users/home encryption on inherited from users # zfs create -o encryption=aes-256-ccm users/home/mark # zfs get encryption users/home/mark NAME PROPERTY VALUE SOURCE users/home/mark encryption aes-256-ccm local
예 5-3 암호화된 ZFS 파일 시스템 복제
복제 파일 시스템이 원래 스냅샷과 동일한 파일 시스템에서 keysource 등록 정보를 상속하는 경우 새 keysource가 필요하지 않으며 keysource=passphrase,prompt이면 새 문장암호를 묻는 메시지가 표시되지 않습니다. 동일한 keysource가 복제본에 사용됩니다. 예를 들면 다음과 같습니다.
기본적으로 암호화된 파일 시스템의 종속 항목을 복제할 때는 키를 묻는 메시지가 표시되지 않습니다.
# zfs create -o encryption=on tank/ws Enter passphrase for 'tank/ws': xxxxxxxx Enter again: xxxxxxxx # zfs create tank/ws/fs1 # zfs snapshot tank/ws/fs1@snap1 # zfs clone tank/ws/fs1@snap1 tank/ws/fs1clone
복제 파일 시스템에 대한 새 키를 만들려는 경우 zfs clone -K 명령을 사용합니다.
암호화된 종속 파일 시스템 대신 암호화된 파일 시스템을 복제하는 경우 새 키를 제공하라는 메시지가 표시됩니다. 예를 들면 다음과 같습니다.
# zfs create -o encryption=on tank/ws Enter passphrase for 'tank/ws': xxxxxxxx Enter again: xxxxxxxx # zfs snapshot tank/ws@1 # zfs clone tank/ws@1 tank/ws1clone Enter passphrase for 'tank/ws1clone': xxxxxxxx Enter again: xxxxxxxx
예 5-4 암호화된 ZFS 파일 시스템 보내기 및 받기
다음 예에서 tank/home/darren@snap1 스냅샷은 암호화된 /tank/home/darren 파일 시스템에서 생성됩니다. 결과로 수신된 데이터가 암호화되도록 encryption 등록 정보를 사용으로 설정하면 스냅샷이 bpool/snaps로 전송됩니다. 하지만 보내는 동안 tank/home/darren@snap1 스트림은 암호화되지 않습니다.
# zfs get encryption tank/home/darren NAME PROPERTY VALUE SOURCE tank/home/darren encryption on local # zfs snapshot tank/home/darren@snap1 # zfs get encryption bpool/snaps NAME PROPERTY VALUE SOURCE bpool/snaps encryption on inherited from bpool # zfs send tank/home/darren@snap1 | zfs receive bpool/snaps/darren1012 # zfs get encryption bpool/snaps/darren1012 NAME PROPERTY VALUE SOURCE bpool/snaps/darren1012 encryption on inherited from bpool
이 경우 수신된 암호화된 파일 시스템에 대한 새 키가 자동으로 생성됩니다.