

# 暗号化
<a name="s3-files-encryption"></a>

S3 Files は、保管中および転送中のデータを保護するための包括的な暗号化機能を提供します。

## 保管中の暗号化
<a name="s3-files-encryption-at-rest"></a>

S3 バケットは、Amazon S3 の暗号化メカニズムを使用して暗号化されます。S3 でのデータ暗号化の詳細については、「[暗号化によるデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html)」を参照してください。

S3 Files は、サーバー側の暗号化を使用して S3 ファイルシステム内の保管中のデータを暗号化します。サーバー側の暗号化とは、データを受信するアプリケーションまたはサービスによって、送信先でデータを暗号化することです。S3 ファイルシステムでは、データとメタデータはストレージに書き込まれる前にデフォルトで暗号化され、読み取り時に自動的に復号されます。このプロセスは S3 Files によって透過的に処理されるため、アプリケーションを変更する必要はありません。ファイルシステムに保管中のすべてのデータは、次のいずれかの方法を使用して AWS Key Management Service (KMS) キーを使用して暗号化されます。
+ (デフォルト) AWS 所有の KMS キーによるサーバー側の暗号化 (SSE-KMS)
+ カスタマーマネージド KMS キーによるサーバー側の暗号化 (SSE-KMS-CMK)

AWS KMS キーを使用するためには追加料金がかかります。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[AWS KMS キーの概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)」および「[AWS KMS の料金](https://aws.amazon.com/kms/pricing/)」を参照してください。

### AWS 所有の KMS キーによるサーバー側の暗号化 (SSE-KMS)
<a name="s3-files-encryption-aws-owned-key"></a>

これは、S3 ファイルシステムに保管中のデータを暗号化するためのデフォルトキーです。AWS 所有キーは、AWS サービスが所有および管理する KMS キーのコレクションです。S3 Files は、AWS 所有キーを使用するときに、S3 ファイルシステムに保存されているデータとメタデータの暗号化を所有および管理します。AWS 所有キーの詳細については、「[AWS KMS キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)」を参照してください。

### カスタマーマネージド AWS KMS キーによるサーバー側の暗号化 (SSE-KMS-CMK)
<a name="s3-files-encryption-sse-kms"></a>

ファイルシステムの作成時に、管理する AWS Key Management Service (AWS KMS) キーの設定を選択できます。S3 ファイルシステムで SSE−KMS 暗号化を使用する場合、AWS KMS キーはファイルシステムと同じリージョンに存在する必要があります。

## AWS KMS の S3 Files キーポリシー
<a name="s3-files-encryption-key-policies"></a>

キーポリシーはカスタマーマネージドキーへのアクセスを制御するための主要な方法です。キーポリシーの詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[AWS KMS のキーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。次のリストは、S3 Files が保管時のファイルシステムの暗号化のためにサポートする、AWS KMS に関連するすべてのアクセス許可について説明しています。

kms:Encrypt  
(オプション) プレーンテキストを暗号化テキストに暗号化します。このアクセス許可は、デフォルトのキーポリシーに含まれています。

kms:Decrypt  
(必須) 暗号文を復号します。暗号文は、以前に暗号化された平文です。このアクセス許可は、デフォルトのキーポリシーに含まれています。

kms:ReEncrypt  
(オプション) クライアント側にデータのプレーンテキストを公開することなく、サーバー側で新しいカスタマーマネージドキーを使用してデータを暗号化します。データは最初に復号化され、次に再暗号化されます。このアクセス許可は、デフォルトのキーポリシーに含まれています。

kms:GenerateDataKeyWithoutPlaintext  
(必須) カスタマーマネージドキーで暗号化されたデータ暗号化キーを返します。この許可は、kms:GenerateDataKey\* のデフォルトのキーポリシーに含まれています。

kms:CreateGrant  
(必須) キーを使用できるユーザーとその条件を指定する権限をキーに追加します。付与は、主要なポリシーに対する代替の許可メカニズムです。許可の詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[AWS KMS でのグラント](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)」を参照してください。このアクセス許可は、デフォルトのキーポリシーに含まれています。

kms:DescribeKey  
(必須) 指定されたカスタマーマネージドキーに関する詳細情報を提供します。このアクセス許可は、デフォルトのキーポリシーに含まれています。

kms:ListAliases  
(オプション) アカウント内のキーエイリアスをすべて一覧表示します。コンソールを使用して暗号化されたファイルシステムを作成すると、このアクセス許可により KMS マネージドキーの選択リストが設定されます。最高のユーザーエクスペリエンスを提供するには、この許可を使用することをお勧めします。このアクセス許可は、デフォルトのキーポリシーに含まれています。

## キーの状態とその効果
<a name="s3-files-encryption-key-states"></a>

KMS キーの状態は、暗号化されたファイルシステムへのアクセスに直接影響します。

有効  
通常のオペレーション - ファイルシステムへの完全な読み取りおよび書き込みアクセス。

Disabled  
ファイルシステムは一定時間経過するとアクセスできなくなります。再有効化できます。

削除の保留中  
ファイルシステムにアクセスできなくなります。削除は、待機期間中にキャンセルできます。キーの削除をキャンセルした後、キーを有効状態に移行する必要があることに注意してください。

削除  
ファイルシステムには完全にアクセスできません。このアクションは元に戻せません。

**警告**  
ファイルシステムに使用される KMS キーを無効化または削除するか、キーへの S3 Files アクセスを取り消すと、ファイルシステムにアクセスできなくなります。これにより、バックアップがない場合、データが失われる可能性があります。暗号化キーを変更する前に、必ず適切なバックアップ手順が設定されていることを確認してください。

## 転送中の暗号化
<a name="s3-files-encryption-in-transit"></a>

S3 Files では、転送中のデータを Transport Layer Security (TLS) を使用して暗号化することが求められます。マウントヘルパーを使用してファイルシステムをマウントすると、クライアントとファイルシステム間を移動するすべてのデータは TLS を使用して暗号化されます。マウントヘルパーは efs-proxy プロセスを初期化して、ファイルシステムとの安全な TLS 接続を確立します。マウントヘルパーは、マウントの状態をモニタリングする amazon-efs-mount-watchdog と呼ばれるプロセスも作成し、S3 ファイルシステムを初めてマウントするときに自動的に開始されます。これは、各マウントの efs-proxy プロセスが実行されていることを確認し、ファイルシステムがアンマウントされたときにそのプロセスを停止します。何らかの理由で、プロセスが予期せず終了した場合、ウォッチドッグプロセスにより再開されます。

以下に、転送中の TLS 暗号化の仕組みを示します。

1. クライアントとファイルシステムの間に安全な TLS 接続が確立される

1. すべての NFS トラフィックは、この暗号化された接続を介してルーティングされる

1. データは送信前に暗号化され、受信時に復号される

転送中のデータの暗号化は、NFS クライアント設定を変更します。アクティブにマウントされたファイルシステムを検査する場合、次の例に示すように、localhost または 127.0.0.1 にマウントされたことが表示されます。

```
$ mount | column -t
127.0.0.1:/  on  /home/ec2-user/s3files        type  nfs4         (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=20127,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)
```

TLS を使用して転送中のデータを常に暗号化するマウントヘルパーを使用してファイルシステムをマウントします。したがって、マウント中に、NFS クライアントがローカルポートにマウントするように再設定されます。