Go to main content

マニュアルページ セクション 8: システム管理コマンド

印刷ビューの終了

更新: 2022年7月27日
 
 

zfs_encrypt(8)

名前

zfs_encrypt - ZFS ファイルシステムを暗号化する

形式

zfs [-?]
zfs help subcommand | help | property property-name | permission
zfs help -l properties
zfs create -o encryption=on [-o keysource=raw | hex |
     passphrase,prompt | file://|pkcs11:|https://] ... dataset
zfs create -o encryption=on [-o keysource=hex,cluster:keyname] ...
     dataset
zfs clone [-p] [-K] [-o property=value] ... snapshot filesystem|volume
zfs get [-r|-d depth][-Hp][-o all | field[,...]] [-s source[,...]]
     all | property[,...] filesystem|volume|snapshot ...
zfs key -l [-t type] [-M] [-S] {-a | [-r] filesystem|volume}
zfs key -u [-t type] [-f] {-a | [-r] filesystem|volume}
zfs key -c [-t type] [-o keysource=value] {-a | [-r] filesystem|volume}
zfs key -K [-t type] {-a | [-r] filesystem|volume}
zfs mount 
zfs mount [-vO] [-o options] -a | filesystem
zfs unmount [-f] -a | filesystem|mountpoint

説明

zpool(8) で説明されているように、zfs create -o encryption コマンドは、ZFS ストレージプール内の新しく作成された ZFS データセットを暗号化します。

Encryption

暗号化とは機密保護のためにデータをエンコードするプロセスで、エンコードされたデータにデータ所有者がアクセスするには鍵が必要になります。ZFS データセットが作成されるときに暗号化ポリシーを設定できますが、このポリシーは変更できません。詳細については、「ネイティブプロパティー」のセクションの encryption および keysource プロパティーの説明を参照してください。

データセットの暗号化は恒久的に継承され、データセットのクローン作成中に削除することはできません。複製されたデータセットストリームを受信したときに、暗号化が必要な場合は、宛先データセットで暗号化が有効になっている必要があります。そうでない場合、データは平文で格納されます。暗号化データセットの完全に複製されたストリームにより、新しく生成された鍵の下での暗号化データセットが生じます。ストリーム自体は暗号化されません。

ZFS Send/Recv Considerations

A send stream created from an encrypted dataset in a source zpool that is at version 46 or above (Compact File Metadata for Encryption) can only be received into a destination zpool that is also at version 46 or above.

A send stream created from an unencrypted dataset can have encryption enabled as part of the receive (either by overriding properties or by inheritance from the destination) only when received into a zpool at zpool version 46 or above: Compact File Metadata for Encryption.

ネイティブな ZFS 暗号化プロパティー

ZFS 暗号化に関連した次のネイティブプロパティーは、データセットに関する読み取り専用の統計情報で構成されています。これらのプロパティーは、設定も継承もできません。ネイティブプロパティーは、特に注記がないかぎり、すべてのデータセットタイプに適用されます。ZFS ネイティブプロパティーの完全な説明とリストについては、zfs(8) を参照してください。

keychangedate

指定したデータセットに対する zfs key –c 操作によりラップ鍵を最後に変更した日付。鍵の変更操作が実行されていない場合、keychangedate には値がありません。一部のリリースでは、これが誤って作成日と同じになっていました。

keystatus

データセットの暗号化鍵のステータスを識別します。データセットの鍵の可用性は、available または unavailable のステータスを表示することによって示されます。暗号化が有効になっていないデータセットの場合、none が表示されます。

mounted

ファイルシステムの場合は、ファイルシステムが現在マウントされているかどうかを示します。このプロパティーは、yes または no になります。

rekeydate

このデータセットに対する zfs key –K または zfs clone –K 操作によりデータ暗号化鍵を最後に変更した日付。rekey の操作が実行されていない場合、rekeydate には値がありません。一部のリリースでは、これが誤って作成日と同じになっていました。

次のプロパティーは、ファイルシステムの作成後には変更できないため、ファイルシステムの作成時に設定するようにしてください。zfs create または zpool create コマンドで設定されていない場合、これらのプロパティーは親データセットから継承されます。これらの機能がサポートされる前に親データセットが作成されたため、親データセットにこれらのプロパティーが存在しない場合、新しいファイルシステムではこれらのプロパティーにデフォルト値が設定されます。

encryption=off | on | aes-128-ccm | aes-192-ccm | aes-256-ccm | aes-128-gcm | aes-192-gcm | aes-256-gcm

暗号化されたデータセットに使用する暗号化アルゴリズムと鍵長を定義します。on の値は aes-128-ccm と同じです。デフォルト値は off です。encryption が off 以外の値に設定されている場合、checksum プロパティーは sha256+mac に設定され、readonly になります。

A regular user can create an encrypted file and manage key operations if the user is delegated the appropriate permissions, such as create, mount, keysource, checksum, and encryption.


注 -  Deduplication is available only with aes-128-ccm, aes-192-ccm, and aes-256-ccm modes.The dedup property can be set on a dataset when encryption uses either aes-128-gcm, aes-192-gcm, or aes-256-gcm modes, though it will not produce dedupable blocks.The reason the dedup property can be set on datasets with a gcm mode is that the dedup property can be inherited if a filesystem lower in the hierarchy has a ccm mode.

All settings for compression are valid when encryption is enabled.


次のプロパティーは、作成時に指定する必要があり、特殊コマンドを使用すると変更できます。

keysource=raw | hex | passphrase,prompt | file://|pkcs11:|https://

データセットの鍵をラップする鍵の形式と場所を定義します。zfs key –l コマンドを使用してデータセットを作成、マウント、または読み込むときに、この鍵が必要になります。

keysource プロパティーには、鍵の表示方法を指定する format と、鍵の取得先を特定する locator の 2 つの値を指定できます。

format には次の 3 つの値を指定できます。

  • raw: 生の鍵バイト

  • hex: 16 進数の鍵文字列

  • passphrase: 鍵を生成する文字列

locator には次の 2 つの値を指定できます。

  • prompt: データセットの作成またはマウント時に鍵またはパスフレーズの入力を要求

  • file:///filename: ファイルシステム内の鍵またはパスフレーズファイルの場所

  • pkcs11: PKCS#11 トークンでの鍵またはパスフレーズの場所を記述した URI

  • https://location: セキュアなサーバー上の鍵またはパスフレーズファイルの場所この方法を使用して鍵情報を平文で転送することは推奨されていません。URL に GET を付けると、keysource の形式部分で要求された内容に従って、鍵の値またはパスフレーズのみが返されます。

    keysourcehttps:// ロケータを使用する場合は、サーバーが発行する証明書が libcurl および OpenSSL で信頼されているものである必要があります。独自のトラストアンカーまたは自己署名付き証明書を、/etc/openssl/certs にある証明書ストアに追加します。PEM 形式の証明書を /etc/certs/CA ディレクトリに配置し、svcadm refresh ca-certificates コマンドを実行します。

https:// のロケータを使用して鍵を作成する例については、「使用例」を参照してください。

ラップ鍵の値または鍵を変更するには、zfs key –c コマンドを実行する必要があります。鍵の場所だけを変更する必要がある場合 (ファイル名の変更など) は、zfs set コマンドを keysource プロパティーとともに使用します。zfs set コマンドで鍵の場所だけが変更された場合は、ZFS によって (新しい場所に有効なラップ鍵があるかどうかなどの) チェックが実行されないことに注意してください。

keysource が指定も継承もされていない場合、デフォルトの keysource は、暗号化が有効なデータセットでは passphrase,prompt に、暗号化が無効なデータセットでは none に設定されます。

https:// を使用した keysource の場所では、クライアント資格を取得できる場合に、クライアントが GSSAPI または Kerberos を使用してサーバーに対して認証を実行できるようにするために negotiate ヘッダーが使用されます。これを使用するには、ホスト keytab が必要か、または zfs(8) を実行しているユーザーが kinit を実行して適切な TGT を取得している必要があります。ネゴシエーションと取得は自動的に実行され、構成オプションはありません。

keysource=hex,cluster:keyname

Can only be used with Solaris Cluster when using ZFS based Encrypted Cluster file systems.The key and associated keyname is stored in Solaris Cluster and the keyname uniquely identifies the key.

サブコマンド

状態を変更するサブコマンドはすべて、元の形式でプールに永続的に記録されます。

zfs ?

ヘルプメッセージを表示します。

zfs help command | help | property property-name | permission

zfs コマンドの使用法情報を表示します。特定のコマンド、プロパティー、または委任アクセス権のヘルプを表示できます。特定のコマンドまたはプロパティーのヘルプを表示した場合、コマンド構文またはプロパティー値が表示されます。引数を何も付けずに zfs help を使用すると、zfs コマンドの完全なリストが表示されます。

zfs help –l properties

zfs プロパティーに関する情報 (プロパティー値が編集可能および継承可能かどうか、指定可能な値など) が表示されます。

zfs create [-p] [–o encryption=on] [-o keysource=raw | hex | passphrase, prompt | file://|pkcs11:|https://] ... filesystem

aes-128-ccm を使用する、暗号化が有効になった新しい ZFS ファイルシステムを作成します。サポートされている暗号化アルゴリズムのリストについては、暗号化プロパティーの説明を参照してください。

–p

存在しない親データセットをすべて作成します。この方法で作成されたデータセットは、それぞれの親から継承した mountpoint プロパティーに従って自動的にマウントされます。コマンド行で –o オプションを使用して指定したプロパティーはすべて無視されます。ターゲットのファイルシステムがすでに存在する場合、処理は正常に完了します。

–o encryption=value

暗号化プロパティーを value に設定します。複数の –o オプションを指定できます。複数の –o オプション内で同じプロパティーを指定した場合は、エラーが発生します。

zfs clone [–p] [–K] [–o property=value] ... snapshot filesystem|volume

指定したスナップショットのクローンを作成します。詳細は、「クローン」のセクションを参照してください。ターゲットのデータセットは、ZFS 階層内の任意の場所に配置できます。作成されたデータセットは元のデータセットと同タイプになります。

–p

存在しない親データセットをすべて作成します。この方法で作成されたデータセットは、それぞれの親から継承した mountpoint プロパティーに従って自動的にマウントされます。ターゲットのファイルシステムまたはボリュームがすでに存在する場合、処理は正常に完了します。

–o property=value

指定されたプロパティーを設定します。詳細は、zfs create を参照してください。

–K

このデータセットの鍵チェーンに新しいデータ暗号化鍵を作成します。クローンに書き込まれたデータは、新しいデータ暗号化鍵を使用します。これは元のスナップショットとは異なる鍵です。

zfs set keysource=value filesystem|volume| ...

keysource プロパティーを、各データセット用に指定した値に設定します。keysource の場所のみを変更できます。ラップ鍵の値を変更する場合は、zfs key –c コマンドを使用します。

–r

子データセットのサブツリー全体に対して、設定の有効な値を再帰的に適用します。有効な値は、プロパティーに応じて設定または継承できます。

zfs get encryption | keysource | keystatus | rekeydate filesystem|volume| ...

指定したデータセットのプロパティーを表示します。

–r

指定されたデータセットのプロパティーを再帰的に表示します。

–d depth

再帰を depth に制限して、すべての子孫データセットを再帰的に表示します。深さ 1 の場合は、データセットとその直接の子だけが表示されます。

–H

スクリプトによる解析がより容易な形式で、出力を表示します。ヘッダーがすべて省略され、フィールドが任意の数のスペースではなく、タブ 1 つで明示的に区切られます。

zfs key –l [–t type] [–M] [–S] {–a | [–r] filesystem|volume}

1 つのデータセットと、その鍵を継承するすべてのデータセットのための暗号化鍵を読み込みます。このコマンドで指定される鍵は、データセットの暗号化に使用される実際の鍵ではありません。データセットのデータ暗号化鍵のセットのためのラップ鍵です。

–l

暗号化されたデータセットとその鍵を継承するデータセットをロック解除するラップ鍵を読み込みます。このコマンドは、データセットの keysource プロパティーの鍵によって定義された内容に基づいて鍵をロードします。

プールのインポート中、鍵の読み込み操作は、データセットのマウント時に実行されます。ブート中、ラップ鍵が使用可能で、keysourceprompt に設定されていない場合に、鍵読み込み操作は実行されます。

–a

システム上のすべてのプール内のすべてのデータセットに適用します。

–r

この操作を、指定されたファイルシステムまたはボリュームの下にあるすべてのデータセットに再帰的に適用します。

–t type

このタイプに一致するデータセットにのみ適用します。

–M

その鍵をロードしたあと、ファイルシステムをマウントしません。

–S

その鍵をロードしたあと、ファイルシステムを共有しません。

zfs key –u [–t type] [–f] | {–a | [–r] filesystem|volume}

データセットの暗号化鍵と、その鍵を継承するすべてのデータセットをアンロードします。

–u

データセットをアンマウントしてから、1 つの暗号化されたデータセットとその鍵を継承するデータセットのためのラップ鍵の読み込み解除を試みます。成功した場合、データセットは、アクセスができなくなり、マウントが解除されます。

–f

鍵の読み込み解除を試みる前に、データセットを強制的にアンマウントしようとします。指定しない場合、通常のアンマウントが試みられます。

–a

システム上のすべてのプール内のすべてのデータセットに適用します。

–r

この操作を、指定されたファイルシステムまたはボリュームの下にあるすべてのデータセットに再帰的に適用します。

–t type

このタイプに一致するデータセットにのみ適用します。

zfs key –c [–t type] [–o keysource=value] | {–a | [–r] filesystem|volume}

ラップ鍵を変更します。新しい鍵の形式またはロケータが異なる場合、keysource プロパティーをコマンドの一部に含める必要があります。zfs key –c コマンドの一部として変更できるのは keysource プロパティーだけです。

–c

1 つの暗号化されたデータセットの鍵とそれを継承するデータセットのためのラップ鍵を変更します。鍵の変更操作を行う前に、既存の鍵がすでに読み込まれている必要があります。ZFS は、既存のパスフレーズの入力を要求しません。

–o property=value

鍵変更操作の一部として変更するプロパティー。keysource プロパティーは、鍵変更操作の一部として変更できる唯一のオプションです。

keysource プロパティーを変更する権限が必要になります。

–a

システム上のすべてのプール内のすべてのデータセットに適用します。

–r

このオプションはサポートされていません。Datasets that inherit the keysource property automatically have their wrapping key changed when zfs key -c is applied to the dataset keysource is inherited from.

–t type

このタイプに一致するデータセットにのみ適用します。

zfs key –K [–t type] {–a | [–r] filesystem|volume}

新しいデータ暗号化鍵を作成します。新しいデータ暗号化鍵は、このデータセットのすべての既存データ暗号化鍵と同じラップ鍵でラップされます。

–K

このデータセットの新しいデータ暗号化鍵を作成します。この操作後に書き込まれたデータは、新しいデータ暗号化鍵を使用します。

–a

システム上のすべてのプール内のすべてのデータセットに適用します。

–r

この操作を、指定されたファイルシステムまたはボリュームの下にあるすべてのデータセットに再帰的に適用します。

–t type

このタイプに一致するデータセットにのみ適用します。

zfs mount
zfs mount [–vO] [–o options] –a | filesystem

ZFS ファイルシステムをマウントします。これは、ブートプロセスの一部として自動的に呼び出されます。zfs mount の構文についての完全な説明は、zfs(8) を参照してください。

filesystem

指定されたファイルシステムをマウントします。

暗号化されたデータセットの zfs mount 操作では、keysource プロパティー値によっては鍵の入力が求められる場合があります。これは、たとえば keysource ロケータが prompt に設定されている場合に起こることがあります。

zfs unmount [–f] –a | filesystem|mountpoint

現在マウントされている ZFS ファイルシステムをアンマウントします。これは、シャットダウンプロセスの一部として自動的に呼び出されます。zfs unmount の構文についての完全な説明は、zfs(8) を参照してください。

filesystem|mountpoint

指定されたファイルシステムをアンマウントします。このコマンドには、システム上の ZFS ファイルシステムのマウントポイントのパスを指定することもできます。

暗号化されたデータセットの場合、ファイルシステムがアンマウントされているときには、鍵の読み込みは解除されません。鍵を読み込み解除するには、zfs key を参照してください。

使用例 1 暗号化されたデータセットを作成する

次の例は、keysource プロパティーのデフォルト値である passphrase プロンプトを使用して、暗号化されたデータセットを作成する方法を示しています。この例では、tank/home データセットは暗号化されていないものとします。

# zfs create -o encryption=on tank/home/bob
Enter passphrase for 'tank/home/bob/': **********
Enter again: **********

次の例では、pktool(1) コマンドを使用して生の鍵をファイルに生成しています。次に、aes-256-ccm アルゴリズムと、pktool で生成された生の鍵のファイルを使用して、暗号化されたデータセット (tank/home/anne) を作成しています。

# pktool genkey keystore=file outkey=/media/stick/mykey \
keytype=aes keylen=256
# zfs create -o encryption=aes-256-ccm \
-o keysource=raw,file:///rmdisk/stick/mykey tank/home/anne

この例は、https の場所に格納されているパスフレーズを取得する、暗号化された ZFS ファイルシステムを作成する方法を示しています。

# zfs create -o encryption=on \
-o keysource=passphrase,https://keys.example.com/keys/42 tank/home/fs1

この例は、PKCS#11 トークン内で生の鍵を生成する方法を示しています。次に、pktool から生成された生の PKCS#11 鍵を使用して、暗号化されたデータセットを作成します。

# pktool genkey keystore=pkcs11 keytype=aes keylen=128 label=fs2
Enter PIN for Sun Software PKCS#11 softtoken: xxxxx
# zfs create -o encryption=on -o keysource=raw,pkcs11:object=fs2 \
tank/home/fs2
Enter PKCS#11 token PIN for 'tank/home/fs2': xxxxx

この例は、KMS トークン内で生の鍵を生成する方法を示しています。次に、pktool から生成された生の KMS 鍵を使用して、暗号化されたデータセットを作成します。

# pktool genkey keystore=pkcs11 keytype=aes keylen=256 token=KMS \
label=fs3
Enter PIN for KMS: xxxxx
# zfs create -o encryption=aes-256-ccm \
-o keysource="raw,pkcs11:token=KMS;object=fs3" tank/home/fs3
Enter 'KMS' PKCS#11 token PIN for 'tank/home/fs3': xxxxx
使用例 2 別の暗号化アルゴリズムを使用して、暗号化されたデータセットを作成する

この例では、すべての tank/home データセットが keysource プロパティーを継承しますが、tank/home/bob データセットは別の暗号化アルゴリズムを使用して作成されます。

# zpool create tank ....
# zfs create -o encryption=on tank/home
# zfs get keystatus tank/home
NAME       PROPERTY   VALUE        SOURCE
tank/home  keystatus  available    -

# zfs create -o encryption=aes-256-ccm tank/home/bob
使用例 3 encryption プロパティーおよび keysource プロパティーを継承する

この例では、すべての tank/home データセットが、encryption プロパティーおよび keysource プロパティーを継承します。

# zpool create -O encryption=on -O keysource=raw,file:///... tank ...
# zfs create tank/home
使用例 4 暗号化されたデータセットのラップ鍵および鍵ソースを変更する

次の例は、データセットのラップ鍵を、そのデータセットの keysource プロパティーで定義された新しい鍵に変更する方法を示しています。

# zfs create -o encryption=aes-256-ccm \
-o keysource=raw,file:///etc/keyfile tank/home/rory
# zfs get keysource tank/home/rory
NAME            PROPERTY   VALUE                    SOURCE
tank/home/rory  keysource  raw,file:///etc/keyfile  local
# zfs key -c -o keysource=passphrase,prompt  tank/home/rory
Enter passphrase for 'tank/home/rory/': **********
Enter again: **********
# zfs get keychangedate tank/home/rory
NAME            PROPERTY       VALUE                  SOURCE
tank/home/rory  keychangedate  Thu Jun 28 14:32 2012  local

次の例は、データセットのラップ鍵の http の場所を変更する方法を示しています。

# zfs get keysource tank/home/bob
NAME           PROPERTY   VALUE              SOURCE
tank/home/bob  keysource  passphrase,prompt  local

# zfs set keysource=passphrase,https://internal.example.com/keys/bob/zfs \
tank/home/bob

keysource プロパティーを変更するには、委任された key アクセス権および keychange アクセス権が必要です。

使用例 5 データセットの暗号化鍵を変更する

次の例は、ユーザーおよび管理者が表示も管理もできないデータセットの暗号化鍵を変更する方法を示しています。データセットの暗号化鍵は、keysource プロパティーで指定された鍵でラップ (暗号化) されています。

# zfs key -K tank/project42
# zfs get rekeydate,creation tank/project42

鍵変更操作を実行するには、委任された keychange アクセス権が必要です。

使用例 6 暗号化されたデータセットのラップ鍵をカスタマイズする

次の例は、ラップ鍵のサイズは encryption プロパティーで指定された鍵のサイズと一致する必要がないことを示しています。

# zfs create -o encryption=aes-128-gcm -o keysource=raw,file:///k256 \
/tank/home/amy

前述の例では、暗号化鍵のサイズが 128、ラップ鍵のサイズが 256 です。

# zfs create -o encryption=aes-256-gcm -o keysource=raw,file:///k192 \
/tank/home/rose

前述の例では、暗号化鍵のサイズが 256、ラップ鍵のサイズが 192 です。

使用例 7 pinfile を使用して暗号化データセットを作成する

次のコマンドは pinfile 属性で –o オプションを使用して (sshd(8) を参照) 暗号化データセットを作成します。

# zfs create -o encryption=aes-256-ccm -o  \
keysource="raw,pkcs11:token=KMS;object=Key1;pinfile=/var/user/root/AgentPin" \
rpool/export/home/jack/Test
使用例 8 ボリュームのためのみの鍵のロード

次のコマンドは、–t オプションを使用して、鍵のロード操作を ZFS ボリュームのみに制限します。

# zfs key -l -t volume -a
使用例 9 マウントなしの ZFS ファイルシステムのための鍵のロード

次の例では、–t および –M オプションを使用して、鍵のロード操作を ZFS ファイルシステムのみに制限し、それらをマウントされないままにします。

# zfs key -l -t filesystem -M -r tank/mystuff
使用例 10 共有なしの ZFS ファイルシステムのための鍵のロード

次の例では、–t および –S オプションを使用して、鍵のロード操作を ZFS ファイルシステムのみに制限し、それらをマウントされているが、まだ共有されないままにします。

# zfs key -l -t filesystem -S -r tank/mystuff
使用例 11 Enabling Encryption Manually During ZFS Receive

The following example turns on encryption for newly created dataset tank/mystuff during ZFS receive of unencrypted dataset source/mystuff.

# zfs send source/mystuff@mysnap | \
zfs receive -o encryption=on -o keysource=raw,file:///... tank/mystuff
使用例 12 Enabling Encryption by Inheritance During ZFS Receive

The following example sends unencrypted dataset source/mystuff and receives it into encrypted destination tank.Encryption properties for tank/mystuff will be inherited from tank.

# zpool create -O encryption=on -O keysource=raw,file:///... tank ...
# zfs send source/mystuff@mysnap | zfs receive tank/mystuff

終了ステータス

次の終了ステータスが返されます。

0

正常終了。

1

エラーが発生しました。

2

無効なコマンド行オプションが指定された。

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/file-system/zfs
インタフェースの安定性
確実

関連項目

chmod(1)chown(1)pktool(1)ssh(1)chmod(2)chown(2)stat(2)write(2)attributes(7)mount(8)sshd(8)zfs(8)zpool(8)

ほかの ZFS 機能の使用については、zfs_allow(8)zfs_share(8)zfs(8)、およびManaging ZFS File Systems in Oracle Solaris 11.4を参照してください。