Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
暗号化された Amazon EFS ファイルシステムを Amazon EKS のポッドにマウントする方法を教えてください。
暗号化された Amazon Elastic File System (Amazon EFS) ファイルシステムを Amazon Elastic Kubernetes Service (Amazon EKS) のポッドにマウントしたいと考えています。
解決策
Amazon EFS ファイルシステムのデータは、転送中のデータや保管中のデータの状態でも暗号化できます。転送中のデータにはデフォルトで設定されます。
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
転送中のデータを TLS で暗号化する
TLS を使用して転送中のデータを暗号化するには、次の手順を実行します。
-
Amazon EKS クラスター用に Amazon EFS コンテナストレージインターフェイス (CSI) ドライバーをデプロイします。
-
Amazon EFS ファイルシステムを作成します。
注: ファイルシステムを作成するときに、EKS ノードが配置されているすべてのアベイラビリティーゾーンで Amazon EFS のマウントターゲットを作成します。 -
GitHub リポジトリをローカルシステムにクローンします。
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git -
encryption_in_transit の例があるディレクトリに移動します。
cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/ -
Amazon EFS ファイルシステム ID を取得するには、次の describe-file-systems コマンドを実行します。
aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text -
/examples/kubernetes/encryption_in_transit/specs/ ディレクトリにある pv.yaml ファイルを開きます。次に、VolumeHandle の値を、マウントしている Amazon EFS ファイルシステムの FileSystemId に置き換えます。
pv.yaml ファイルは次のようになります。apiVersion: v1 kind: PersistentVolume metadata: name: efs-pv spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: efs-sc csi: driver: efs.csi.aws.com volumeHandle: FileSystemId volumeAttributes: encryptInTransit: "true"注: FileSystemId は Amazon EFS ファイルシステム ID に置き換えてください。volumeAttributes: encryptInTransit マウントオプションにより、転送中の暗号化が有効になります。
-
/examples/kubernetes/encryption_in_transit/specs/ ディレクトリからストレージクラス、永続ボリュームクレーム、永続ボリューム、ポッドをデプロイします。
kubectl apply -f specs/storageclass.yaml kubectl apply -f specs/pv.yaml kubectl apply -f specs/claim.yaml kubectl apply -f specs/pod.yaml -
ポッドが running 状態であることを確認するには、次のコマンドを実行します。
kubectl get pods -
デフォルト名前空間の永続ボリュームを一覧表示するには、次のコマンドを実行します。
kubectl get pv -
永続ボリュームを表示するには、次のコマンドを実行します。
kubectl describe pv efs-pv
注: Amazon EFS ファイルシステム ID は VolumeHandle と表示されます。 データが Amazon EFS ファイルシステムに書き込まれていることを確認するには、次のコマンドを実行します。
kubectl exec -ti efs-app -- tail -f /data/out.txt
保管中のデータを暗号化する
注: EFS ファイルシステムを作成した後は、その暗号化設定を変更することはできません。つまり、暗号化されていないファイルシステムを暗号化するように変更することはできません。
保管中のデータを暗号化するには、次の手順を実行します。
-
Amazon EKS クラスター用の Amazon EFS CSI ドライバーをデプロイします。
-
保管中の暗号化を有効にして Amazon EFS ファイルシステムを作成します。
注: AWS マネジメントコンソールは、AWS Key Management Service (AWS KMS) キーによる保管中の暗号化を自動的に有効にします。AWS CLI と SDK では、暗号化を明示的に有効にする必要があります。 -
次の GitHub リポジトリをローカルシステムにクローンします。
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git -
multiple_pods サンプルディレクトリに移動します。
cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/ -
Amazon EFS ファイルシステム ID を取得するには、次のコマンドを実行します。
aws efs describe-file-systems出力例:
{ "FileSystems": [ { "SizeInBytes": { "Timestamp": **timestamp**, "Value": **value** }, "ThroughputMode": "**throughput-mode**", "CreationToken": "**creation-token**", "Encrypted": true, "CreationTime": **creation-time**, "PerformanceMode": "**performance-mode**", "FileSystemId": "**file-system-id**", "NumberOfMountTargets": **number**, "LifeCycleState": "available", "KmsKeyId": "arn:aws:kms:ap-southeast-1:**account-id**:key/**key-id**", "OwnerId": "**owner-id**" } ] } -
/examples/kubernetes/multiple_pods/specs/ ディレクトリにある pv.yaml ファイルを開きます。次に、volumeHandle の値を、マウントしている Amazon EFS ファイルシステムの FileSystemId に置き換えます。
pv.yaml ファイルは次のようになります。apiVersion: v1 kind: PersistentVolume metadata: name: efs-pv spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: efs-sc csi: driver: efs.csi.aws.com volumeHandle: FileSystemId注: FileSystemId は Amazon EFS ファイルシステム ID に置き換えてください。
-
/examples/kubernetes/multiple_pods/specs/ ディレクトリからストレージクラス、永続ボリュームクレーム、永続ボリューム、ポッドをデプロイします。
kubectl apply -f specs/storageclass.yaml kubectl apply -f specs/pv.yaml kubectl apply -f specs/claim.yaml kubectl apply -f specs/pod1.yaml kubectl apply -f specs/pod2.yaml -
ポッドが running 状態であることを確認するには、次のコマンドを実行します。
kubectl get pods -
デフォルト名前空間の永続ボリュームを一覧表示するには、次のコマンドを実行します。
kubectl get pv -
永続ボリュームを表示するには、次のコマンドを実行します。
kubectl describe pv efs-pv
- データが Amazon EFS ファイルシステムに書き込まれていることを確認するには、次のコマンドを実行します。
kubectl exec -ti app1 -- tail /data/out1.txt kubectl exec -ti app2 -- tail /data/out1.txt
- トピック
- Containers
- 言語
- 日本語
