転送時のデータの暗号化 - Amazon Elastic File System を使用したファイルデータの暗号化

転送時のデータの暗号化

業界標準の AES-256 暗号化方式を使ったTransport Layer Security 1.2 (TLS) を使用してすべての NFS トラフィックが転送中に暗号化されるように、ファイルシステムをマウントできます。TLS は、ネットワーク上でやり取りされる情報の暗号化に使用される、業界標準の暗号化プロトコル一式です。AES-256 は、TLS でのデータ送信に使用される 256 ビットの暗号化方式です。AWS では、ファイルシステムにアクセスするすべてのクライアントで、転送中の暗号化を設定することを推奨しています。

IAM ポリシーを使用して、NFS クライアントから Amazon EFS へのアクセスに対して転送中の暗号化を強制できます。クライアントがファイルシステムに接続するとAmazon EFS は、ファイルシステムの IAM リソースポリシー (ファイルシステムポリシー) とID ベースの IAM ポリシーを評価し、付与するのに適切なファイルシステムアクセス権限を決定します。ファイルシステムリソースポリシーで aws:SecureTransport 条件キーを使用すると、EFS ファイルシステムへの接続時に、NFS クライアントに TLS の使用を強制できます。

注記

IAM 認証を使用して NFS クライアントによるアクセスをコントロールするには、EFS マウントヘルパーを使用して Amazon EFS ファイルシステムをマウントする必要があります。詳細は、Amazon EFS ユーザーガイドの「IAM 認証によるマウント」を参照してください。

次の EFS ファイルシステムポリシーの例では、転送中の暗号化が強制されており、次のような特徴があります。

  • effect は、allow です。

  • プリンシパルは、すべての IAM エンティティを対象とする * に設定されています。

  • アクションは ClientMountClientWriteClientRootAccess に設定されています。

  • 権限を付与する条件は SecureTransport に設定されています。TLS を使用してファイルシステムに接続する NFS クライアントだけが、アクセス権を付与されます。

    { “Version”: “2012-10-17”, “Id”: “ExamplePolicy01”, “Statement”: [ { “Sid”: “VisualEditior0”, “Effect”: “Allow”, “Principal”: { “AWS”: “*”, }, “Action”: [ “elasticfilesystem:ClientRootAccess”, “elasticfilesystem:ClientMount”, “elasticfilesystem:ClientWrite” ], “Condition”: { “Bool”: { “aws:SecureTransport”: “true” } } } ] }

    ファイルシステムポリシーは、Amazon EFS コンソールまたは AWS CLI を使用して作成できます。

EFS コンソールを使用してファイルシステムポリシーを作成するには:

  1. Amazon EFS コンソールを開きます。

  2. [ファイルシステム] を選択します。

  3. [ファイルシステム] ページで、ファイルシステムポリシーを作成または編集するファイルシステムを選択します。ファイルシステムの詳細ページが表示されます。

  4. [ファイルシステムポリシー]、[編集] の順にクリックします。 [ファイルシステムポリシー] ページが表示されます。

    File system policy interface with policy options and JSON editor for custom configurations.

    ファイルシステムポリシーの作成

  5. [ポリシーオプション] では、次の使用可能な構成済みポリシーオプションを選択することをお勧めします。

    • [デフォルトでルートアクセスを禁止する]

    • [デフォルトで読み取り専用アクセスを強制する]

    • [すべてのクライアントに転送時の暗号化を強制する]

    事前設定済みのポリシーを選択すると、ポリシーの JSON オブジェクトが [ポリシーエディタ] パネルに表示されます。

  6. [追加のアクセス許可を付与] を使用して、別の AWS アカウントを含む追加の IAM プリンシパルにファイルシステムのアクセス権限を付与します。[追加] をクリックして、アクセス権限を付与するエンティティのプリンシパル ARN を入力し、[アクセス許可] をクリックして付与します。

  7. 事前設定済みのポリシーのカスタマイズや、要件に基づく独自ポリシーの作成には、[ポリシーエディタ] を使用します。エディタを使用すると、事前設定済みのポリシーのオプションが選択できなくなります。ポリシーの変更を元に戻すには、[消去] をクリックします。

    エディタをクリアすると、事前設定済みのポリシーがまた選択できるようになります。

  8. ポリシーの編集または作成が完了したら、[保存] をクリックします。

    ファイルシステムの詳細ページが開き、[ファイルシステムポリシー] にポリシーが表示されます。

    AWS CloudFormation や AWS SDK、Amazon EFS API を直接使用してプログラムでファイルシステムポリシーを作成することもできます。ファイルシステムポリシーの作成の詳細は、Amazon EFS ユーザーガイドの「ファイルシステムポリシーの作成」を参照してください。

転送中のデータの暗号化の設定

転送中のデータの暗号化を設定するには、各クライアントに EFS マウントヘルパーをダウンロードすることをお勧めします。EFS マウントヘルパーは、転送中のデータの暗号化の設定など、EFS の使用を簡素化するために AWS が提供するオープンソースのユーティリティです。マウントヘルパーはデフォルトで EFS 推奨マウントオプションを使用します。

EFS マウントヘルパーは、以下の Linux ディストリビューションでサポートされています。

  • Amazon Linux 2017.09 以降

  • Amazon Linux 2 以降

  • Debian 9 以降

  • Fedora 28 以降

  • Red Hat Enterprise Linux / CentOS 7 以降

  • Ubuntu 16.04 以降

転送中のデータの暗号化を設定するには:

  1. EFS マウントヘルパーをインストールします。

    • Amazon Linux の場合は、下記のコマンドを使用します。

      sudo yum install -y amazon-efs-utils
    • その他の Linux ディストリビューションの場合は、GitHub からダウンロードしてインストールします。

      amazon-efs-utils パッケージは、依存関係がある NFS クライアント (nfs-utils)、ネットワークリレー (stunnel)、OpenSSL、Python を自動的にインストールします。

  2. ファイルシステムをマウントします。

    sudo mount -t efs -o tls file-system-id efs-mount-point
    • mount -t efs で EFS マウントヘルパーを呼び出します。

    • EFS マウントヘルパーを使用してマウントする場合、ファイルシステムの DNS 名またはマウントターゲットの IP アドレスの使用はサポートされていません。代わりにファイルシステム ID を使用してください。

    • EFS マウントヘルパーは、AWS が推奨するマウントオプションをデフォルトで使用します。デフォルトのマウントオプションをオーバーライドすることは推奨されませんが、場合によってはオーバーライドも可能で柔軟に対応できます。マウントオプションをオーバーライドする場合は、徹底的にテストして、変更によりファイルシステムのアクセスとパフォーマンスに生じる影響を把握することをお勧めします。

    • 次の表に、EFS マウントヘルパーが使用するデフォルトのマウントオプションを示します。

      オプション 説明
      nfsvers=4.1 NFS プロトコルのバージョン
      rsize=1048576 ネットワーク読み取りリクエストごとに NFS クライアントが受信できるデータの最大バイト数です。
      wsize=1048576 ネットワーク書き込みリクエストごとに NFS クライアントが送信できるデータの最大バイト数を設定します。
      hard NFS リクエストがタイムアウトした後の NFS クライアントのリカバリ動作です。これにより、NFS リクエストは、サーバーが応答するまで無期限に再試行されます。
      timeo=600 NFS クライアントが、NFS リクエストを再試行する前にレスポンスを待機する際に使用するタイムアウト値です。デシ秒 (1/10秒) で設定します。
      retrans=2 NFS クライアントがリカバリアクションを試みる前に、リクエストを再試行する回数です。
      noresvport ネットワーク接続が再確立された場合は新しい TCP 送信元ポートを使用するように NFS クライアントに指示します。
    • システムの再起動後にファイルシステムを自動的に再マウントするには、次の行を /etc/fstab に追加します。

      file-system-id efs-mount-point efs _netdev, tls, iam 0 0

転送中のデータの暗号化の使用

転送中のデータの暗号化を要求する社内ポリシーまたは規制ポリシーの対象となっている組織では、ファイルシステムにアクセスするすべてのクライアントで転送中のデータの暗号化を使用することをお勧めします。暗号化と復号化は接続レベルで構成され、セキュリティのレイヤーがさらに追加されます。

EFS マウントヘルパーを使用してファイルシステムをマウントすると、クライアントと Amazon EFS 間の TLS 1.2 トンネルが設定されて維持されるため、すべての NFS トラフィックがこの暗号化されたトンネルにルーティングされます。暗号化された TLS 接続の確立に使用される証明書は、Amazon 認証局 (CA) によって署名され、最新の Linux ディストリビューションのほとんどで信頼されています。また、EFS マウントヘルパーは watchdog プロセスを生成して、各ファイルシステムへのすべてのセキュアなトンネルをモニタリングし、実行中であることを確認します。

EFS マウントヘルパーを使用して Amazon EFS への暗号化された接続を確立した後は、その他のユーザー入力や設定は不要です。暗号化は、ファイルシステムにアクセスするユーザー接続やアプリケーションに対して透過的です。

EFS マウントヘルパーを使用して EFS ファイルシステムへの暗号化された接続が正常にマウントされて確立されると、ファイルシステムがマウントされ、localhost (127.0.0.1) をネットワーク中継として使用して暗号化されたトンネルが確立されたことが mount コマンドの出力に示されます。次の出力例を参照してください。

127.0.0.1:/ on efs-mount-point type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=20059,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)

efs-mount-point を EFS ファイルシステムにマップするには、/var/log/amazon/efs にある mount.log ファイルを照会して、最後に成功したマウント操作を見つけます。これは、次の簡単な grep コマンドを使って見つけられます。

grep -E "Successfully mounted.*efs-mount-point" /var/log/amazon/efs/mount.log | tail -1

この grep コマンドの出力では、マウントされた EFS ファイルシステムの DNS 名が返されます。次の出力例を参照してください。

2018-03-15 07:03:42,363 - INFO - Successfully mounted file-system-id.efs.region.amazonaws.com at efs-mount-point